微信支付
首先还是要下载好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,研究一下就可以做出来,我这就不写了。
以上