在AppDelegate.m文件里面
1.导入微信的SDK
#import "WXApi.h"
2.声明微信SDK的代理
@interface AppDelegate ()<WXApiDelegate>
3.注册你APP的ID
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; [WXApi registerApp:@"这里填你的那一串XXXXX"]; return YES; }
4.处理微信支付的结果
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options { if ([url.host isEqualToString:@"pay"]){ //处理微信的支付结果 [WXApi handleOpenURL:url delegate:self]; } return YES; }
5.微信SDK自带的方法,处理从微信客户端完成操作后返回程序之后的回调方法,显示支付结果的
//微信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]; } }
在PayViewController.m里面
1.导入微信SDK
#import "WXApi.h"
2.请求数据中,必须要的字段都是后台返回的
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]; if ([WXApi isWXAppInstalled]) { //监听通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getOrderPayResult:) name:@"WXPay" object:nil]; }else{ [self mbShowToast:@"请先安装微信"]; }
3.事件
- (void)getOrderPayResult:(NSNotification *)notification { NSLog(@"userInfo: %@",notification.userInfo); if ([notification.object isEqualToString:@"支付结果:成功!"]) { self.hideBackBtn=NO; if (self.block) { self.block(); } [self goBack]; } else if([notification.object isEqualToString:@"用户已经退出支付!"]) { [self mbShowToast:@"支付取消"]; } else { [self mbShowToast:@"支付失败"]; } }
4.移除通知
-(void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:YES]; [[NSNotificationCenter defaultCenter]removeObserver:self]; }
还有一点就是在-----工程-----info-----URL Types里面
还有在info.plist文件里面
👌
该怎样的自然就会是怎样.
-----------------------------------------------------兰小妹