虚拟支付
技术文档:
涉及的前端 API,新老接口可二选一,均支持游戏币支付,不影响后续流程:
- 微信存量老接口,不支持签名,可能有黑产篡改参数的风险wx.requestMidasPayment(Object object) | 微信开放文档
- 新接口需要后端生成订单时签名,安全性较高,微信官方推荐使用wx.requestMidasPaymentGameItem(Object object) | 微信开放文档
注意,如使用wx.requestMidasPaymentGameItem(道具直购接口)实现游戏币模式,本质上是购买代币这种特殊道具,必须传入mode=goods,productId=wxag_one_coin,但整体技术流程与requestMidasPayment一致,后端依旧是先扣币再发货。
使用 attach 字段上报数据
数据格式
attach 字段的值必须是 JSON 序列化后的字符串,包含以下内容:
- 订单号 out_trade_no
- 区服 server_id
- 角色ID vroleid
- unionid 账号的unionid
- 平台id platid 枚举值参考下面表格
platid | 说明 |
0 | 代表 iOS |
1 | 代表 Android |
2 | 代表 Windows PC |
12 | 代表手机鸿蒙 |
7 | 代表 MAC |
5 | 代表小游戏开发者工具 |
13 | 代表鸿蒙 PC |
- 不同接口的传入方式
接口 | attach 传入位置 |
requestMidasPayment | 外层参数直接传入 |
requestMidasPaymentGameItem | 在 signData 中传入 |
示例
requestMidasPayment
wx.requestMidasPayment({
// ...其他参数
attach: '{"out_trade_no":"ORDER_NO_123","clientversion":10.1}'
})requestMidasPaymentGameItem
wx.requestMidasPaymentGameItem({
// ...其他参数
signData: signData //'{"attach":"{\\"out_trade_no\\":\\"ORDER_NO_123\\",\\"clientversion\\":10.1}"...其他字段}'
})涉及的后台 API: