首先去微信开放平台下载微信SDK,导入到工程中。
点击工程,info下面的最后一项,URL Types ,在identifier后面写上weixin,在URL Schemes后面写上你的APPID。
1,在AppDelegate.m里面导入
#import "WXApi.h"
2,在AppDelegate.m中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//注册微信
[WXApi registerApp:@"你的APPID"];
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
//处理微信支付的结果
if ([url.host isEqualToString:@"pay"]){
[WXApi handleOpenURL:url delegate:self];
}
return YES;
}
//微信SDK自带的方法,处理从微信客户端完成操作后返回程序之后的回调方法,显示支付结果的
-(void) onResp:(BaseResp*)resp
{
//启动微信支付的response
NSString *payResoult = [NSString stringWithFormat:@"errcode:%d", resp.errCode];
if([resp isKindOfClass:[PayResp class]]){
//支付返回结果,实际支付结果需要去微信服务器端查询
switch (resp.errCode) {
case 0:
payResoult = @"支付结果:成功!";
NSLog(@"支付结果:成功!");
break;
case -1:
payResoult = @"支付结果:失败!";
NSLog(@"支付结果:失败!");
break;
case -2:
payResoult = @"用户已经退出支付!";
NSLog(@"用户已经退出支付!");
break;
default:
payResoult = [NSString stringWithFormat:@"支付结果:失败!retcode = %d, retstr = %@", resp.errCode,resp.errStr];
break;
}
//发出通知
NSNotification * notification = [NSNotification notificationWithName:@"WXPay" object:payResoult];
[[NSNotificationCenter defaultCenter] postNotification:notification];
}
}
3.在要调用支付的类里面,我用的这些数据是后台给的,所以直接从后台返回的字典中取就好。
{
NSDictionary *url = [responseObject objectForKey:@"url"];
PayReq *request = [[PayReq alloc]init];
request.partnerId = [url objectForKey:@"mch_id"];
request.prepayId = [url objectForKey:@"prepay_id"];
request.package = [url objectForKey:@"wxpackage"];
request.nonceStr = [url objectForKey:@"nonce_str"];
request.timeStamp = [[url objectForKey:@"timestamp"] intValue];
request.sign = [url objectForKey:@"sign"];
[WXApi sendReq: request];
}
//最后看看是不是支付成功。支付成功之后干什么。
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:YES];
//检测是否装了微信软件
if ([WXApi isWXAppInstalled])
{
//监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getOrderPayResult:) name:@"WXPay" object:nil];
}
}
- (void)getOrderPayResult:(NSNotification *)notification
{
NSLog(@"userInfo: %@",notification.userInfo);
if ([notification.object isEqualToString:@"支付结果:成功!"])
{
//我这边是支付成功之后返回到钱包界面
if (self.block) {
self.block(self.rechargMoney);
}
[self goBack];
}
else if([notification.object isEqualToString:@"用户已经退出支付!"])
{
[self mbShowToast:@"支付取消"];
}
else
{
[self mbShowToast:@"支付失败"];
}
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:YES];
[[NSNotificationCenter defaultCenter]removeObserver:self];
[self mbDismiss];
}
刚开始都是小白,慢慢的摸索,你认为难的,总有一天你会觉得不算什么。
网友评论