微信支付的使用场景总结

关于微信支付的库和文章很多,但似乎都没有很好地说清楚各个接口的使用场景。这里结合之前的经验对微信支付文档做个补充。微信的文档在这里:https://pay.weixin.qq.com/wiki/doc/api/index.html

MICRO – 付款码支付

所谓的通过扫码设备扫描用户出示的付款码,类似POS的操作,只是POS机换成了扫码设备,银行卡磁条换成二维码。扫码设备在x宝就有的卖,100左右(可能更便宜),其实就是一个输入设备,付款码就是一段字符串。这个扫码设备只是做一个二维码到字符串的转换而已,所以可以支持微信、支付宝、银联或者你自己开发的支付码。

使用这个方案需要注意,有时候用户不是扫码后马上同步完成的,而是需要输入密码或者余额不足换卡(微信和支付宝都有可能产生这种情况),或者最终取消交易的。所以在扫码页面最好进行后台的轮询检查支付结果。

JSAPI – 公众号支付

其实更准确地说,是微信浏览器内支付(有别于H5支付是在用户移动设备上的浏览器)。在微信里,体验是最好。但是通常需要根据用户浏览器UA进行切换,如果是微信浏览器就用JSAPI,如果是在不在微信里,但是在手机浏览器里,就切到MWEB。

MWEB – H5支付

主要是用户在手机浏览器里支付,此时会打开用户手机里微信进行支付。

如果用户没有安装微信呢?

NATIVE – 扫码支付

商户端生成订单,然后生成对应的付款二维码,来让用户进行扫码支付。和MICRO是最常用的线下支付场景,和MICRO相比稍微麻烦一些,因为需要输入密码。但是好处是可以获得用户的授权,然后获取用户的openid或者unionid,而MICRO是不能拿到这个信息的。如果你需要根据openid追踪到系统内的用户时,这算是NATIVE的一个好处。

APP – APP支付

流程上其实和JSAPI很类似,都是获得预支付ID(prepayID)然后在APP内完成。在服务端接收付款通知,最好在APP里再进行一下确认。

WEAPP – 小程序支付

和JSAPI一样,只是支付参数(package)放的地方不同,一个是网页,一个是小程序内。