native支付回调链接_?Egret微信小游戏支付接入

​Egret微信小游戏支付接入

自学开发笔记,有兴趣的同学请关注微信WiGameFun,不定时分享游戏开发相关技术。有不对的地方烦请指点修正。

native支付回调链接_?Egret微信小游戏支付接入_第1张图片
乐游舫(WiGameFun)

最近开发的一个Egret微信小游戏项目进入最关键的一步——支付接入。之前完全没有接触过微信开发,这里就对微信支付接入做一次整理学习,也方便游戏开发的同学参考。当然如果哪里写的有问题,也请大家批评指正。

微信小游戏开发与常规的微信小程序是不一样的,在支付接入这块,官方也提供了不同的支付接口。微信小程序的支付接口是wx.requestPayment,而微信小游戏的支付是依赖于官方提供的微信虚拟支付——米大师(wx.requestMidasPayment)。我们这里主要围绕微信小游戏展开讨论,对微信小程序类型的支付不做整理。

native支付回调链接_?Egret微信小游戏支付接入_第2张图片

因为米大师支付接口只能在Android设备完成支付,而在iOS设备上不支持支付。这在我们的应用场景中是不希望的,因此我们不想依赖米大师接入,选择Native方式完成接入。

其实微信官方有比较完整的接入文档,但是对新手来说,在实际接入过程中还是有一些坑的,我们看下微信Native支付过程如下图。这里我对自己接入时用到的一些步骤进行整理,希望能帮助到大家,尽量少走弯路。

native支付回调链接_?Egret微信小游戏支付接入_第3张图片

【准备工作】

1、我们要在微信小游戏中关联商户号:

native支付回调链接_?Egret微信小游戏支付接入_第4张图片

2、从关联的商户账号中获取商户号KEY值;

3、从关联的商户号中获取商户Id;

4、从微信小游戏中获取AppId和AppSecret;

【说明】

我们通过Egret发布的微信小游戏工程,在platform里面有login的接口,当完成微信支付的时候,会得到如下图所示的一个code数据;

a328de77829929df56fbabd54968e57e.png

这里的code是后续我们换取openid等信息的钥匙,因此要妥善保管。

在我们要调起支付的时候,首先要通过统一下单接口。这里我们需要把上一步得到的code发送给后台服务器。在后台服务器向这个地址请求,把code兑换成OpenId。

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=CODE&grant_type=authorization_code

拿到OpenId后调用统一下订单接口。使用POST方式,对如下图数据处理后发送到如下地址:

https://api.mch.weixin.qq.com/pay/unifiedorder

具体的参数意义和是否必选项,大家可以参考下微信官方文档,这里不做赘述。https://pay.weixin.qq.com/wiki/doc/api/index.html

但有一些需要说明的是这些数据拼接之后,要做字母顺序排序(格式为:appid=XXXX&attach=XXXX&…….)

拼接商户KEY值到这个字串末尾(格式为:appid=XXXX&attach=XXXX&…….&key=XXXX)

接着对上一步得到的字符串进行md5码处理得到sign。在nodejs中,我们可以使用cryto来进行,可以直接使用npm install下载安装。

得到sign之后,我们要再把以上参数以及sign以xml格式拼接成POST发送的参数。(xml格式如下图所示)

大家需要注意下,notify_url字段配置的是当支付有结果后,微信会主动通知的服务器地址。

native支付回调链接_?Egret微信小游戏支付接入_第5张图片

native支付回调链接_?Egret微信小游戏支付接入_第6张图片

如果我们调用的是Native方式下订单成功返回的话,应该收到一个如下图所示的xml数据,Native方式比JSAPI多了一个code_url。

native支付回调链接_?Egret微信小游戏支付接入_第7张图片

这里我们把code_url转化成二维码,用微信扫一扫就可以实现让玩家支付到商户账号了。

native支付回调链接_?Egret微信小游戏支付接入_第8张图片

native支付回调链接_?Egret微信小游戏支付接入_第9张图片

登录商户后台查看,可以看到微信支付已经到账了。

native支付回调链接_?Egret微信小游戏支付接入_第10张图片

在支付完成之后,微信会以回调的方式通知我们的服务器,配置地址前面已经说过,但是微信说不承诺一定会通知成功,为了确保正确,微信为我们提供了一个查询订单的接口,访问方式可下订单的方式类似,接口地址:

https://api.mch.weixin.qq.com/pay/orderquery

感谢好友 WangHao、消失的地平线 对我的帮助

你可能感兴趣的:(native支付回调链接)