开发日记 —— 快速对接微信支付

来源: 超级浩码

最近准备开拓国内的安卓市场,由于安卓厂商不同于苹果,每个厂商都有自己的一套钱包体系,但是也未被广大用户所熟知,所以对接微信支付就成为了最通用的选择。

对接微信支付的条件比较苛刻,其中最大的坎是需要企业资质,包括现在很多广告商也是。

我见过有些开发者由于没有企业资质,使用支付宝或微信转账。在客户端做一个兑换码的窗口。用户转账后会获得兑换码,使用兑换码在APP中兑换商品。虽然体验不好但确实也解决了这个问题。


说下具体需要的条件。进入微信开放平台(https://a-open-weixin-qq-com.observersnews.com/),在账号中心填写企业相关信息并进行认证。另外还需要开通 微信开发者资质 认证,这两个认证都需要时间进行审核,建议提前完成。

之后我们在管理中心创建一个与你的APP对应的移动应用,这里需要填写应用的官网地址,如果没有开发APP官网的需要开发一个,Docusaurus 是不错的选择。完成创建后同样需要等待审核。

接下来在移动应用的能力专区中开启微信支付,需要注册一个微信支付的商户号通用需要审核时间,对接微信支付的代码会用到此商户号。

500


完成上述的准备工作后就可以开始对接微信支付了,先看下微信支付的流程图及接口文档:

微信支付APP接入官方文档

https://a-pay-weixin-qq-com.observersnews.com/static/applyment_guide/applyment_detail_app.shtml

https://a-pay-weixin-qq-com.observersnews.com/wiki/doc/apiv3/open/pay/chapter2_5_0.shtml

这里关键是设置APIv3密钥申请API证书,有了这些资源就可以进行对接了,我使用的是Flutter,所以这里只介绍Flutter的对接方式。

我在客户端使用 fluwx 插件,使用此插件可以非常方便的接入微信支付。 服务端我是用golang写的 go-pay 库。

地址如下:

https://github.com/OpenFlutter/fluwx

https://github.com/go-pay

其实流程比较简单,但是这两个库的文档没有进行描述,可能因为微信支付是挺常规的功能吧。但是对于新手来说,还是需要花点时间。 流程可以参考下图:

500

简单说,就是先通过服务端进行预下单 通过 你的商户配置 以及 go-pay 按照加密规则 生成一些参数返回客户端,然后客户端使用这些参数 调用 fluwx 的方法,可以让APP跳转到微信支付页进行付款。

之后通过服务端的支付通知接口回调,进行订单支付验证。最后客户端付款成功后,通过接口向服务端获取商品数据。

APP下单API: https://a-pay-weixin-qq-com.observersnews.com/wiki/doc/apiv3/apis/chapter3_2_1.shtml

支付通知API: https://a-pay-weixin-qq-com.observersnews.com/wiki/doc/apiv3/apis/chapter3_2_5.shtml

微信付款和支付接口调用是异步的,所以我们需要做到接口加密,否则受到中间人攻击劫持就损害利益了。 我采用对请求参数返回结果进行 AES 加密,这样数据即使被劫持也无法进行修改。

总结

本文主要讨论了微信支付的整体流程,有些细节并没有进行描述。比如:下单的时需要传用户标识商品标识,周期性商品如何校验等等。这些同样也比较重要,需要开发者根据具体情况进行开发与配置。

站务

  • 观网评论4月爆款文章↓

    4月初,美国财长耶伦访华,一时间“中国产能过剩论”被炒作起来,观察者网专栏作者陈经从“三个美国女人”的独特角度,阐释了中国产能包括新能源产能对世界经济的贡献,还对美国政......
  • 欢迎大家收看《这就是波音》

    有幸收到《这就是中国》节目组的邀请,和张维为老师以及主持人何婕一起做了期节目。而作为波音买办、中文互联网波音黑梗的创造者、737MAX的终结者、嘲笑北查尔斯顿工厂之人、最大......

最近更新的专栏

全部专栏