您的位置:首页 > 移动开发 > 微信开发

微信支付

2016-05-10 15:00 423 查看
微信支付

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

以上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: