# 支付类订阅事件
# 支付类事件公共说明
# 支付类事件配置回调
开发者若要订阅支付游戏币发货、退款事件,需提供回调url等如下信息。订阅消息支持明文模式(不使用消息体加解密功能,安全系数较低)和加密模式(消息包为纯密文,需要开发者加密和解密,安全系数高):
- URL:开发者用来接收退款事件的接口 URL,必须以https:// 开头,分别支持 443 端口。
- TOKEN:用于支付签名处理。
- EncodingAESKey:用于消息体加解密的密钥(选择加密模式时开发者需提供)。
- 消息加密方式:选择是否加密。
注:上述开发者mp端还没有相关设置页面,mp支持前请开发者手动提交信息给到小游戏对接人。
# 支付类订阅事件签名算法说明
pay_event_sig参数的签名算法,使用AppKey(联系海外小游戏平台提供) 对支付的请求进行签名,代表请求经过开发者服务端的支付模块发起,和国内一致。加解密算法参见:消息推送 | 微信开放文档
# 支付类订阅事件
# 一、游戏币发货完成事件(Event=minigame_coin_deliver_completed)
整个请求参数和国内订阅事件一致。区别差异在于内部Payload字段差异如下: (在CoinInfo增加币种字段CurrencyType)
# CoinInfo
| 字段名 | 类型 | 说明 |
|---|---|---|
| ZoneId | string | 分区id |
| ActualPrice | Number | 实际支付价格(根据币种) |
| BuyQuantity | Number | 购买数量 |
| OrigPrice | Number | 原始价格(根据币种) |
| CurrencyType | String | 币种,例如:"USD" |
# 二、退款成功事件(Event=minigame_pay_refund_succ_notify)
- 用户退款后平台并不会扣除游戏币,开发者在收到通知可以自行处理
- 开发者若没有正确回包,平台会继续重试,共计10次,时间间隔分别为20s\40s\60s\80s\100s\120s\140s\160s\180s
消息请求参数和国内一致。内层payload结构差异如下:
# Payload
| 字段名 | 类型 | 说明 |
|---|---|---|
| OpenId | String | 用户id |
| Env | Number | 环境配置 0:现网环境(也叫正式环境) 1:沙箱环境 |
| OutTradeNo | String | 业务订单号 |
| ProductType | Number | 物品类型: 游戏币 |
| CoinInfo | Object | ProductType=1时填写 |
| RefundId | String | 小游戏退款单号 |
# CoinInfo
| 字段名 | 类型 | 说明 |
|---|---|---|
| ZoneId | string | 分区id |
| BuyQuantity | Number | 游戏币数量 |
# 返回参数
| 字段 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| ErrCode | Number | 是 | 发送状态 0:成功 其他:失败 |
| ErrMsg | String | 否 | 错误信息 |
# JSON示例
# 请求
{
"CreateTime": 1745549409,
"MsgType": "event",
"Event": "minigame_pay_refund_succ_notify",
"MiniGame": {
"Payload": "{\"Env\":0,\"OutTradeNo\":\"xingyun99999\",\"OpenId\":\"o83VJ5EUzt0ksaE0An91eIefwFBI\",\"ProductType\":1,\"CoinInfo\":{\"BuyQuantity\":99,\"ZoneId\":\"1\"},\"RefundId\":\"xingyun99999_refundid\"}",
"PayEventSig": "8c44f33c0a4488ba39bd4ac931f88334dc08f50b8d294f4e5aeb61e6864ad7d9",
"IsMock": false
}
}
# 成功返回
{"ErrCode":0,"ErrMsg":"Success"}
# 失败返回
{"ErrCode":99999,"ErrMsg":"internal error"}