# 支付类订阅事件

# 支付类事件公共说明

# 支付类事件配置回调

开发者若要订阅支付游戏币发货、退款事件,需提供回调url等如下信息。订阅消息支持明文模式(不使用消息体加解密功能,安全系数较低)和加密模式(消息包为纯密文,需要开发者加密和解密,安全系数高):

  1. URL:开发者用来接收退款事件的接口 URL,必须以https:// 开头,分别支持 443 端口。
  2. TOKEN:用于支付签名处理。
  3. EncodingAESKey:用于消息体加解密的密钥(选择加密模式时开发者需提供)。
  4. 消息加密方式:选择是否加密。
    注:上述开发者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"}