很多同学都说微信支付坑,其实支付对接并不难,只要了解支付流程,那么很多东西都很容易解决的(虽然官网文档确实写得不详细)
以前的支付大部分都是写在前端的(至少我们公司当年是那么做的),现在支付更新后,都是推荐在服务端做加密签名,然后由前端进行支付的调起(因为在前端进行加密容易被抓包然后进行价格修改等,简单的说就是不安全)。前端的同学可以很轻松完成支付的开发,对于新手很是友好。下面我们开始说下微信的接入(老版本、新版本),我会把demo放在文章末尾
首先我们先准备下微信的SDK,现在微信开发者平台上老版本的SDK好像找不到了,你们可以在我demo里面WXPay文件找到SDK:
导入工程后导入库,这里我就不写了,直接上图
可以根据官网去导入对应库继续设置
ARC然后在Build Settings搜索bitcode 设置为NO(根据你的情况去设置)
在Info设置Schemes
Schemes设置你的APP_ID在Info.plist设置LSApplicationQueriesSchemes的白名单
到这里微信支付的基本设置就完成了
下面开始上代码:
在AppDelegate中进行微信的注册 // 注册
[WXApi registerApp:@"App_ID"];
注册后我们使用微信支付
[WXObjcPay sendPay_demo];
这里简单说下微信支付需要的一些参数,一般公司都会有专人去申请这些支付信息,包括一些登录的。(小公司一般都是开发者自己去申请这里我就不说了)
微信支付老版本需要用到APP_ID、 APP_SECRET、 MCH_ID(商户号)、 PARTNER_ID(商户API密钥)
这四个。微信支付的支付流程我们可以这样去理解:
用户点击微信支付按钮------->客户端根据产品价格、产品的一些基本信息生成产品预付单信息---------->通过产品预付单获取到prepayid进行二次签名---------->签名成功---------->调起支付进行产品的付费(下单、二次签名、调起支付)
上面就是老版本微信支付的接入,有不懂的或者本文有错误的地方请提出、互相交流,具体代码看demo
下面我们开始讲下更新后的新版微信支付
新版本的SDK去掉了lib文件的类、lib文件里面的类主要是进行下单加密,也就是说微信希望加密的流程不要放到前端去做,官网里面也有说明(写在一个不起眼的地方。。。。)
接入的方式可以参考老版本的,导入SDK----导入库----设置schemes----设置白名单
基本设置完成后使用支付:
用户点击微信支付------>把产品信息传到服务端------->服务端返回PayReq参数{
"appid": "wxb4ba3c02aa476ea1",
"noncestr": "d1e6ecd5993ad2d06a9f50da607c971c",
"package": "Sign=WXPay",
"partnerid": "10000100",
"prepayid": "wx20160218122935e3753eda1f0066087993",
"timestamp": "1455769775",
"sign": "F6DEE4ADD82217782919A1696500AF06"
}------------>[WXApi sendReq:req]调起微信支付
从上面我们可以看到,我们只是把产品信息传到服务端,由服务端进行下单、加密签名,前端只需要把加密的信息获取到,然后使用sendReq:方法调起微信
好了,今天的支付就到这里奉上demo---git.oschina.net/xpyt/WeiXinZhiFu/tree/master
网友评论