# 虚拟支付 2.0 道具直购

# 接口列表

  • [前端]支付接口:wx.requestMidasPaymentGameItem 1. 支付接口与之前一致,参数需要以虚拟支付 2.0 的为准 2. offerId:传入 2.0 的支付应用 ID(MP-虚拟支付 2.0-基础配置-支付应用 ID) 3. zoneId:传入 2.0 的分区 ID(MP-虚拟支付 2.0-基础配置-游戏币/道具配置-分区配置-分区 ID) 小程序的非正式版(开发版、体验版)可以使用支付的沙箱环境、正式环境发起支付,小程序的正式版只能使用支付的正式环境发起支付
  • [服务端]查询订单:pay_v2.queryOrder

# 道具直购时序图

  1. 道具直购时序图
  2. 道具直购状态图

# 发起米大师支付

详见wx.requestMidasPaymentGameItem

# 配置道具

在“虚拟支付 2.0-基本配置-道具配置”中,基于道具直购能力,配置特定的道具信息。

# 道具发货消息协议

  1. 接入消息推送能力,在虚拟支付 2.0-基础配置-基础配置-发货推送配置中配置推送 url 参考文档小游戏消息推送
  2. 在虚拟支付 2.0-基础配置-直购配置,点击开启道具发货推送,这一步会模拟推送数据。

# 注意事项(重要!!!)

  1. 同样的发货请求(outTradeNo),可能因为网络原因,会请求多次。我们在有限时间内尽量保证触达一次,直到明确返回发货成功为止
  2. 针对重复的请求,开发者需要自行保证只发货一次,并且回包需要和第一次一样返回发货成功
  3. 通知周期:15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h
  4. 必须要开启道具发货推送才能收到回调请求

# 请求参数

字段 类型 说明
ToUserName String 小游戏原始 ID
FromUserName String 该事件消息的 openid,道具发货场景固定为微信官方的 openid
CreateTime Number 消息发送时间
MsgType String 消息类型,道具发货场景固定为:event
Event String 事件类型
道具直购(商城)场景固定为:
minigame_h5_goods_deliver_notify
道具直购(游戏内)场景固定为:
minigame_game_pay_goods_deliver_notify
MiniGame Object 道具直购发货参数,见下文
  • MiniGame
字段 类型 说明
Payload String 携带的具体内容,格式为 json,具体内容如下表格 Payload(因为这里需要对消息内容统一签名,所以统一把消息内容设计成 json 格式)
PayEventSig String 支付类订阅事件签名算法说明
  • Payload(JSON)
字段 类型 说明
OpenId String 接收道具的玩家 openid
Env Number 环境配置
0:现网环境(也叫正式环境)
1:沙箱环境
OutTradeNo String 订单号
GoodsInfo Object 发货道具
WeChatPayInfo Object 微信支付信息(仅微信支付渠道)
  • GoodsInfo
字段 类型 说明
ProductId String 游戏道具 id 标识
Quantity Number 购买道具数量
ZoneId String 分区 ID
OrigPrice Number 物品原始价格 (单位:分)
ActualPrice Number 物品实际支付价格(单位:分)
Attach String 透传数据
OrderSource Number 1 游戏内 2 商城下单 3 商城测试下单
  • WeChatPayInfo
字段 类型 说明
MchOrderNo String 微信支付商户单号
TransactionId String 交易单号(微信支付单号)
  • 返回参数
字段 类型 必填 说明
ErrCode Number 发送状态。0:成功,其他:失败
ErrMsg String 错误原因,用于调试。在 errcode 非 0 的情况下可以返回
  • JSON 格式示例
{
  "ToUserName": "gh_31b2a1c7e78a",
  "FromUserName": "oUrsf0TSXNtiZjP7JL9UUFiGJzmQ",
  "CreateTime": 1583202606,
  "MsgType": "event",
  "Event": "minigame_deliver_h5_pay_products",
  "MiniGame": {
    "Payload": "{\"OpenId\":\"to_user_openid\",\"Env\":0,\"GoodsInfo\":{\"ProductId\":\"id_100001\",\"ZoneId\":\"1\",\"OrigPrice\":10,\"ActualPrice\":10,\"Quantity\":1},\"WeChatPayInfo\":{\"MchOrderNo\":\"xxxxx\",\"TransactionId\":\"xxxx\"}}",
    "PayEventSig": "f749f67b751fa80f27ddc0b7c8d2821aeda162ea22b323cd64a2c8056c2736f0"
  }
}
  • 成功返回
{ "ErrCode": 0, "ErrMsg": "Success" }
  • 失败返回
{ "ErrCode": 99999, "ErrMsg": "internal error" }
点击咨询小助手