完成微信支付我大概把它分为四步
- SDK集成
- 集成代码
- 申请服务部分
- 服务器部分
SDK集成
- SDK集成就比较简单了,按照官方文档一步一步来就可以,不太会的可以参考[第三方原生分享](http://www.jianshu.com/p/6e73cba0544b),其中也总结了一些可能出现的问题。
集成代码
- 在程序启动时,注册AppKey
- 设置回调代理
- 在需要支付部分,集成代码
- 以下为部分主要代码
//向微信注册
[WXApi registerApp:@"wx8d3d11d9a92e7ad7" withDescription:@"微积分"];
/** 支持iOS8.0以上的回调 */
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [WXApi handleOpenURL:url delegate:[ApiManager sharedmanager]];
}
//判断有没有安装微信客户端
[WXApi isWXAppInstalled]
//发起微信支付的代码
PayReq* req = [[PayReq alloc] init];
req.openID = dict[@"appid"];
req.partnerId = [dict objectForKey:@"partnerid"];
req.prepayId = [dict objectForKey:@"prepayid"];
req.nonceStr = [dict objectForKey:@"noncestr"];
req.timeStamp = stamp.intValue;
req.package = [dict objectForKey:@"package"];
req.sign = [dict objectForKey:@"sign"];
[WXApi sendReq:req];
申请部分
- 如果公司有产品,其实可以跳过此步骤,如果没有那就自食其力
- 首先说明一点,拨打95017这个客服电话没有技术客服
- 在微信开发平台注册,创建应用,填写相关信息,审核一般一个工作日就可以
- 审核通过后,就可以使用微信分享功能
- 申请开通支付功能,完成开发者资质认证,支付费用
服务器部分
- 微信支付的时候,需要一个商品订单prepayid
- 说一下流程 本地发起网络请求到自己服务器(参数:total_fee,spbill_create_ip)->我们的服务器请求微信接口获取主要的prepayId,其中sign以及openID、partnerId、nonceStr、timeStamp、package都由服务器给我们(想一下我们做的工作还是很少的/微笑)
- 我们支付过以后钱到哪了?在我们的微信商户里
遇到的问题
- prepayid怎么获取?// 服务器给
- 我们需要做什么?服务器需要做什么? // 我们需要做的只是调接口,调微信api
- 返回结果是服务器给的?还是我们在回调中处理? // 返回结果我们只拿回调方法中的,我个人认为,当我们完成支付的时候,微信服务器会首先把结果返回给我们自己的服务器,然后再返回给我们客户端,这样无论我们是否拿到回调,服务器数据一定会变化,这样是安全的,可以避免手机网络,通讯等方面的限制。
最后我要吐槽一下
- 作为前端开发人员,如果我们后台和产品给力的话,其实我们做的事情很少(吐槽)
我会不定期更新遇到的问题,同时也会去更大家分享一些新的好玩的东西。欢迎大家的补充以及建议。O(∩_∩)O谢谢~