微信支付于2013年正式发布,一路走来,爱范儿作为内测开发团队的一员,明显感觉到微信支付接口的稳定性有了质的提升,并为支付配备了相应的接口——相关场景。
微信小程序的发布附带了微信支付模块。 这个模块的使用如何? 认知计划(微信ID)现在就告诉你。
业务流程
我们先来了解一下微信支付的一些基本信息。
微信支付有以下几种支付方式:
各种支付交互流程可以通过微信支付文档查看,这里不再详细描述。
关注微信ID并回复“支付文档”即可获取微信支付文档原始链接。
1. 发起支付
所有支付方式均需通过“统一订单”API获取支付凭证。
但小程序内部测试时,并没有“统一点餐”的概念。 HTML 5应用发起的支付需要通过前端构造参数直接发起(无需后端验证),很容易造成支付凭证泄露等安全问题。
为此,微信支付优化了流程:将“统一下单”功能插入到所有支付场景中。 建议开发者在后台完成支付参数等行为的构建。
此次优化带来以下好处:
通过“统一下单”获取相应或其他参数后,您可以通过各种支付方式的SDK发起微信支付。
2. 收到付款结果
微信支付发起后,微信还需要提供通知系统,让应用程序及时获知用户已完成支付,并进行下一步的业务操作。
通知方式为POST请求,包含支付状态信息和支付订单信息。
需要注意的是,为了保证安全,必须对通知参数进行签名验证。
进行签名验证时,除了签名字段(通用参数名称:sign)不需要参与签名外,其他接收到的参数都需要参与签名。
3、外围接口
通过“支付发起”和“支付结果接收”,就可以完成一个简单的微信支付系统。 当然,微信还提供了以下接口:
具体使用方式,您可以参考微信支付文档,根据自己的业务情况适当采用。
绊脚石
嗯,是的,我们曾经吃过螃蟹。
当小程序刚刚内测时,我们决定使用微信支付模块。 毕竟我们要实现的是一个电子商务应用(没有支付电子商务就什么都不是)。
关注微信回复“电商”即可获取电商小程序开发教程。
在开发过程中,我们陷入了一些陷阱。
1、付款凭证
小程序的微信支付需要单独申请,因为小程序是独立的,不能使用以前的支付账户。
即使全网发布,也做不到,因为小程序不是HTML 5应用程序。
2.统一订单参数
统一下单时需要注意设置为 ,并且需要使用与小程序关联的订单。
3、签名方式
MD5! MD5! MD5!
微信公开文档有很多SHA1和MD5签名要求。 微信支付相关签名目前使用MD5。
小程序发起微信支付时,有以下几种方式发起:
根据微信文档签名的要求,签名涉及的字段应该是:
好的,根据签名算法得到的签名,我尝试发起支付,但实际上失败了。
与微信对接人员沟通后,签名涉及到的字段还是需要补充,哦,不,是的(请注意骆驼案的情况)。
我对这个结果很不满意,然后翻遍了所有的微信支付文档,终于在微信文档里找到了一行注释。
备注:通过微信支付统一点餐接口获取,采用微信支付统一Sign签名生成方式。 注意,这里还需要签名,与传入的一致,即最终参与签名的参数为,,,,。
都怪我吧(黑色问号)……
4. 类型
上面已经贴出了小程序中发起微信支付的方法,但是并没有那么简单。 继续发布文档。
时间戳是自 1970 年 1 月 1 日 00:00:00(即当前时间)以来的秒数。
文档告诉我们应该传入 int 类型。 我们前端同学就这么做了,然后过来骂我。
是不是你的后台参数有问题? 提示不再存在?
经查,传入的值类型应该是。
结论
一般来说,小程序接入微信支付比较简单,不需要太多复杂的设置。
之前开发过微信支付后端的开发者也可以复用相同的支付模块。
微信文档编写不严谨,严重降低了开发的舒适度。 相信随着时间的推移,文档会逐渐完善,毕竟以前也是这样。
本文作者是邓约翰。 转载前请联系我们并获得授权。
本文由原创制作。 关注微信ID并回复“第一期”,查看本周最值得关注的100个小程序。