iOS 微信支付流程
1.去微信开发者平台填写商户信息,签约,注册APP。微信审核大概要一周的时间然后会以邮件的形式通知,并给APPID,
Appsecret,API**,微信支付商户号,下载SDK导入到工程中(或者用cocoapods),按照文档添加必要的库和设置。
2主要来说下开发流程:
- 用户使用APP客户端,选择商品下单。
- client调用后台接口将用户的商品信息传给server,请求生成支付订单。
- server请求WeChatServer,WeChatServer返回给server预订单id即prepay id,server对其进行二次签名后返回给client(连同一些其他的调起支付的参数)(server也可以把WechatServer的prepay id直接传给client,client进行二次签名,还有这些调起支付的参数也可以在client自己生成)
- client向WeChatServer发起支付请求,用户输入支付密码后,WeChatClient提交支付授权,跟WeChatServer交互,完成支付。
-
获取支付结果(提前在代码中注册appid和代理可参考博客:http://www.jianshu.com/p/1c1c834b6d52),在方法onResq中会获取回调,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。借用一张流程很清楚的图
-
重要部分代码
[WXApi registerApp:@"wxb4ba3c02aa476ea1" withDescription:@"demo 2.0"];(注册aped,就是为了sdk支付完跳转回client app用,description随便写)
9.0前的方法,为了适配低版本 保留
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
9.0后的方法(都是为了在微信app支付完成跳回到client app时调用的方法,如果还有很多应用内的跳转,可以用url做个判断,此次url就为Wechat的appid,delegate设置代理,即你将在哪个类中实现支付完成的响应方法)
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}
调起支付页面参考demo就行(在调起支付页面之前应该先判断用户是否安装了微信和当前微信版本是否支持支付用api中提供的方法isWXAppInstalled和isWXAppSupportApi)
在支付结果delegate类中实现方法-(void)onResp:(BaseResp *)resp{
实际支付结果去server查询
}
ions{
}