首先忽略掉申请AppKey的步骤,直接从集成开始
1、cocopods集成SDK
pod 'WechatOpenSDK'
2、添加依赖库
SystemConfiguration.framework
, libz.tbd, libsqlite3.0.tbd
, libc++.tbd
, Security.framework
, CoreTelephony.framework
, CFNetwork.framework
.
3、设置URL Schemes为您的APPID
![](https://img.haomeiwen.com/i6882374/063b7456ed0139a2.png)
4、在Info.plist里面添加白名单
LSApplicationQueriesSchemes
![](https://img.haomeiwen.com/i6882374/31e69785ed685835.png)
5、在APPdelegate里面注册APPID
/** 微信支付 */
[WXApi startLogByLevel:WXLogLevelNormal logBlock:^(NSString *log) {
NSLog(@"log : %@", log);
}];
//向微信注册,发起支付必须注册
[WXApi registerApp:@"wxb4ba3c02aa476ea1" enableMTA:YES];
6、调起支付
+ (void)jumpToBizPay {
//============================================================
// V3&V4支付流程实现
// 注意:参数配置请查看服务器端Demo
// 更新时间:2015年11月20日
//--->实际项目代码
NSString *urlString = @"https://wxpay.wxutil.com/pub_v2/app/app_pay.php?plat=ios";
NSString *url =[NSString stringWithFormat:@"%@%@", @"Base_URL",urlString];
// NSLog(@"微信支付___URL=== %@,%@", url,self.orderId);
[DCServiceTool postWithUrl:url params:@{@"orderID":@"orderId"} success:^(id _Nonnull responseObject) {
if ([[responseObject objectForKey:@"code"] intValue] == 0) {
// 调起微信支付
PayReq *req = [[PayReq alloc] init];
// id dic = [responseObject objectForKey:@"data"];
// if ([dic isKindOfClass:[NSString class]]) {
// NSString *str = [NSString stringWithFormat:@"%@",dic];
// if ([str isEqualToString:@"PAY_SUCCESS"]) {
// /** 支付成功 处理 */
// // [weakself goToOrderDetailVC];
// DCLog(@"支付成功 处理 ---");
// return ;
// }
// return ;
// }
/** 微信分配的公众账号ID -> APPID */
req.openID = [responseObject objectForKey:@"appid"];
/** 商家向财付通申请的商家id */
req.partnerId = [responseObject objectForKey:@"partnerid"];
/** 预支付订单 从服务器获取 */
req.prepayId = [responseObject objectForKey:@"prepayid"];
/** 随机串,防重发 */
req.nonceStr = [responseObject objectForKey:@"noncestr"];
/** 时间戳,防重发 */
req.timeStamp = [[responseObject objectForKey:@"timestamp"] intValue];
/** 商家根据财付通文档填写的数据和签名 <暂填写固定值Sign=WXPay>*/
req.package = [responseObject objectForKey:@"package_"];
/** 商家根据微信开放平台文档对数据做的签名, 可从服务器获取,也可本地生成*/
req.sign = [responseObject objectForKey:@"sign"];
//日志输出
DCLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[responseObject objectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );
if ([WXApi isWXAppInstalled] == YES) {
BOOL sss = [WXApi sendReq:req];
if (!sss ) {
[SVProgressHUD showWithStatus:@"微信sdk错误"];
[SVProgressHUD dismissWithDelay:1.0];
}
} else {
//微信未安装
[SVProgressHUD showWithStatus:@"您没有安装微信"];
[SVProgressHUD dismissWithDelay:1.0];
}
}else {
[SVProgressHUD showWithStatus:responseObject[@"msg"]];
[SVProgressHUD dismissWithDelay:1.0];
}
} failure:^(NSError * _Nonnull error) {
}];
}
7、支付结果回调
#pragma mark - WXApiDelegate
- (void)onResp:(BaseResp *)resp {
if([resp isKindOfClass:[PayResp class]]){
//支付返回结果,实际支付结果需要去微信服务器端查询
NSString *strMsg,*strTitle = [NSString stringWithFormat:@"支付结果"];
switch (resp.errCode) {
case WXSuccess:
strMsg = @"支付结果:成功!";
NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode);
break;
default:
strMsg = [NSString stringWithFormat:@"支付结果:失败!retcode = %d, retstr = %@", resp.errCode,resp.errStr];
NSLog(@"错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
break;
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}else {
}
}
- (void)onReq:(BaseReq *)req {
}
8、在appDelegate.m中整理判断回调
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
[WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
return YES;
}
/**
这里处理微信支付完成之后跳转回来
*/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
/** 微信支付回调 */
if ([url.host isEqualToString:@"pay"]) {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
return YES;
}
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
/** 微信的支付回调 */
if ([url.host isEqualToString:@"pay"]) {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
return YES;
}
网友评论