微信支付
微信支付
首先还是要下载好SDK,导入相关库,配置好一些环境,接着就开始做支付
服务器签名版
首先在AppDelegate.m里面注册微信的key
[WXApi registerApp:@"appkey" withDescription:@"wxdemo"];
然后处理微信的跳转,记得配置好url schemes
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { if ([url.host isEqualToString:@"pay"]) { [WXApi handleOpenURL:url delegate:self]; return YES; } }
然后在点击微信支付按钮里这样写(以下用到的所有参数均是服务器返回的)
//微信支付 - (void)weixinpay { PayReq *request = [[PayReq alloc] init]; request.partnerId = partnerid; //商家向财付通申请的商家id request.prepayId = prepayid; //预支付订单 request.nonceStr = noncestr; //随机串,防重发 request.timeStamp = timestamp.intValue; //时间戳,防重发 request.package = package; //商家根据财付通文档填写的数据和签名(Sign=WXPay) request.sign = sign; //商家根据微信开放平台文档对数据做的签名 [WXApi sendReq:request]; }
完成支付之后,会来到这个回调,我们再根据回调处理结果即可
-(void)onResp:(BaseResp *)resp { switch (resp.errCode) { case WXSuccess: NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode); default: NSLog(@"支付错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr); } }
如果这样写完还是没有支付成功,那么90%是后台返回来的参数有问题,叫后台去查查吧
另外有可能会出现调起微信,但只有一个确定按钮的情况,详情看这里:http://www.cocoachina.com/bbs/read.php?tid-321546.html
上面那位兄弟已经写得非常详细了,如果他帖子里的方法试完了还是没有解决,那就下载下面这位大神写的demo,跟服务器返回给你的参数一一对比,看是哪个地方出现了问题
@狂龙天使 的demo地址http://www.cocoachina.com/bbs/read.php?tid-309177-keyword-%CE%A2%D0%C5%D6%A7%B8%B6.html
本地签名版本
本地签名无非就是多了个签名的步骤,用微信demo里的方法,或者上面@狂龙天使的demo,研究一下就可以做出来,我这就不写了。
以上
微信支付
原文:http://blog.csdn.net/zxc523341577/article/details/51362783