跳到主要内容

购买会员

接口列表

请通过 mgtv.getDeviceInfo() 返回对象的 frameworkVersion 判断基础库版本号 >= 1.3.0 后再使用该 API

通知开发者发货消息协议

接入消息推送能力,在虚拟支付-总览-开通条件中配置回调地址 url

注意
  1. 同样的发货请求(outTradeNo),可能因为网络原因,会请求多次。我们在有限时间内尽量保证触达一次,直到明确返回发货成功为止
  2. 针对重复的请求,开发者需要自行保证只发货一次,并且回包需要和第一次一样返回发货成功
  3. 通知周期:180s/180s/180s

请求参数

字段类型说明
ToAppIdstring小游戏appid
CreateTimenumber消息发送时间
MsgTypestring消息类型,购买会员发货场景固定为:event
Eventstring事件类型
MiniGameobject购买会员发货参数,见下文

MiniGame

字段类型说明
Payloadstring携带的具体内容,格式为JSON 字符串,具体内容如下表格 Payload(因为这里需要对消息内容统一签名,所以统一把消息内容设计成json格式)
PayEventSigString消息内容签名,见签名算法说明

Payload(JSON)

字段类型说明
Uuidstring接收会员的玩家 uuid
OutTradeNostring开发者订单号
OrderSnstring平台内部订单号
VipTypenumber会员类型(1-小屏;2-全屏;3-svip;4-亲密会员)
VipDaysnumber会员天数

返回参数

字段类型是否必填说明
ErrCodenumber发送状态。0:成功,其他:失败
ErrMsgstring错误原因,用于调试。在 errCode 非0 的情况下可以返回

JSON格式示例

{
"ToAppId": "",
"CreateTime": 1742873817,
"MsgType": "event",
"Event": "minigame_game_vip_pay_deliver_notify",
"MiniGame": {
"Payload": "{\"Uuid\":\"to_user_uuid\",\"OutTradeNo\":\"xxxxxxx\",\"OrderSn\":\"xxxxxxx\",\"VipType\":1,\"VipDays\":30}",
"PayEventSig": "77e06128fa4291a8d89c93ed5d3648790662d8952f2475e4207c0e9791c60865"
}
}

成功返回

{"ErrCode":0,"ErrMsg":"Success"}

失败返回

{"ErrCode":99999,"ErrMsg":"internal error"}

签名算法说明

PayEventSig 参数的签名算法,使用小游戏开发设置中的 AppSecret 对支付的请求进行签名,代表请求经过开发者服务端的支付模块发起。签名算法伪代码为:

pay_event_sig = to_hex(hmac_sha256(app_secret, event + '&' + payload))

可以参考以下python示例中的 gen_pay_event_sig 实现,其中:

  • event 为推送的事件类型,如:minigame_game_vip_pay_deliver_notify
  • app_secret 为当前小游戏的 AppSecret,从开放平台小游戏开发设置页面获取
  • payload 为本次推送的数据,对应 minigame 结构内的 payload,参考具体推送的请求参数说明

签名计算如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
""" PayEventSig签名算法计算示例 """

import hmac
import hashlib

""" pay_event_sig签名算法
Args:
app_secret - 小游戏的 AppSecret
event - 事件类型 例如:minigame_game_vip_pay_deliver_notify
payload - 事件对应包体,通知消息中的 payload 例如 {"Uuid":"to_user_uuid","OutTradeNo":"xxxxxxx","OrderSn":"xxxxxxx","VipType":1,"VipDays":30}
Returns:
支付请求签名pay_event_sig
"""
def gen_pay_event_sig(app_secret, event, payload):
need_sign_msg = event + '&' + payload
pay_event_sig = hmac.new(key=app_secret.encode('utf-8'), msg=need_sign_msg.encode('utf-8'),
digestmod=hashlib.sha256).hexdigest()
return pay_event_sig