# 微信小游戏商城与拼团
# 一、微信小游戏商城介绍
# 功能概述
为帮助开发者进行道具运营与活动拉收,微信小游戏提供小游戏商城能力。(仅支持虚拟支付类游戏接入)
使用小游戏商城,可支持实现:游戏外支付、更灵活支付、多笔合并支付、拼团支付等功能。
运用好这些能力能够帮助游戏方提升付费转化和 ARPPU 值。
# 功能入口
路径:微信公众平台(mp.weixin.qq.com)-虚拟支付-基本配置-商城管理
开发者可以根据需求将已发布的道具在“商城管理”模块上架至你的小游戏商城
# 功能介绍
模块 | 介绍 | 描述 |
---|---|---|
基础功能 | 道具介绍 | 支持配置道具名称、道具描述、道具图片 |
定价 | 支持设置原价、售卖价,会自动换算折扣(定价单位为人民币/元) | |
上下架 | 支持配置上架时间,定时上下架等 | |
库存/限购 | 支持配置库存总量和限购次数(支持周、日、永久等限购规则) | |
优势功能 | 更灵活下单 | 支持更自由,更大额度的支付档位(用户单笔上限6千,单日9千,后续提升请留意通知) |
合并下单 | 支持单道具合并支付(如6元道具,可一次性下单10份) | |
游戏圈入口 | 支持游戏圈开通商城专属入口 | |
私域曝光 | 支持配置入口链接,可发布到社群、公众号等私域场景 | |
专属活动 | 接入商城还有机会参与专属的主题/促销/裂变活动 |
# 二、拼团能力介绍
# 功能概述
为帮助开发者进行道具活动运营,微信小游戏商城提供拼团能力。
开发者可以选择在商城中上架的商品配置拼团活动(注意:仅限商城内商品)。
配置后,当用户在商城中看到拼团活动商品时,可以选择拼团购买,当组团成功时,可获得优惠价格。
# 功能入口
路径:微信公众平台(mp.weixin.qq.com)-虚拟支付-活动配置-创建拼团活动
创建流程:
① 设置活动名称
② 点击“添加拼团物品”:所选的拼团物品必须已在商城中完成配置上线
③ 设置“折扣”与“上架时间”:拼团成功的商品将享受折扣价格。活动商品上架时间需早于可成团时间,下架时间晚于可成团时间。
④ 设置“可成团时间”:即活动的持续时间,可成团时间需要在活动商品上架时间以内。在活动期间用户可对活动商品进行拼团购买、享优惠价格。在活动期间未成团的用户、将示为拼团失败并原路退款。
⑤“单个团有效时间”:即从团主(发起拼团的用户)支付完成后,成功成团的时间限制。若在时间范围内未成功,将示为拼团失败并原路退款。
⑥“拼团满员人数”:成团的人数要求
⑦“单用户是否可反复参团”:如选择“是” ,第一个团结束后,可以重复发起或参团。 如选择“否”,则不可以重复发起。
# 三、微信小游戏商城接入指南
# MP 配置流程
“配置道具-上架商城-完善发货配置”,仅需三步简单配置
① 使用道具直购能力
在“虚拟支付-基本配置-道具配置”中,基于道具直购能力,配置特定的道具信息。同时,配置好的道具也可以在游戏内使用,
虚拟支付 道具直购 | 微信开放文档
② 配置商城上下架
在“虚拟支付-基本配置-商场管理”中配置道具的上下架,输入在道具直购页面发布成功的道具 id,可自动拉取道具信息,同时开发者可以补充相关商场描述和设定道具限量策略。
③ 完善消息推送与发货
第一步配置接受发货消息的后台服务器地址,具体可参考文档步骤小游戏消息推送
第二步开启消息推送开关,游戏内直购道具在“虚拟支付-基本配置-道具配置”开启,商城道具在“虚拟支付-基本配置-商场管理”开启,开启前会进行一个小测试,会发送 mock 数据通知开发者,开发者需要正确回包。
# 开发者开发流程
# 支付类订阅事件公共说明
所有事件基础结构如下
字段 | 类型 | 说明 |
---|---|---|
CreateTime | Number | 消息发送时间 |
MsgType | String | 消息类型,道具发货场景固定为:event |
CreateTime | Number | 消息发送时间 |
Event | String | 事件类型 与商城有关的事件类型 (1)拉取用户最近玩过的游戏角色数据 minigame_query_recent_role_list (2)代币类道具商城发货通知 minigame_h5_coin_deliver_notify (3)道具直购类商城发货通知 minigame_h5_goods_deliver_notify |
MiniGame | Object | 具体消息内容,见MiniGame |
MiniGame
字段 | 类型 | 说明 |
---|---|---|
Payload | String | 携带的具体内容,格式为 json,具体内容如下表格 Payload (因为这里需要对消息内容统一签名,所以统一把消息内容设计成 json 格式) |
PayEventSig | String | 见支付请求签名算法说明(PayEventSig) |
# 拉取用户最近玩过的游戏角色数据(Event=minigame_query_recent_role_list)
在商城场景下,平台侧会拉取用户游戏角色信息,用于用户在商城购买道具/发放奖励时的分区选择,示意场景及交互如下:
注意:
(1)拉取的分区名/角色名均会经过安全审核,如果审核出现问题,违规词会用特殊处理
(2)事件为实时通知
请求参数
Payload
字段 | 类型 | 说明 |
---|---|---|
OpenId | String | 用户 openid |
NeedRoleNum | Number | 需要的最近玩过的角色数量,不会超过 20 个 |
ProductId | Number | 道具 id(仅道具购买页传入) |
GoodsPrice | Number | 道具价格(仅道具购买页传入) |
返回参数
字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
ErrCode | Number | 是 | 发送状态。0:成功,其他:失败 |
ErrMsg | String | 否 | 错误原因,用于调试。在 errcode 非 0 的情况下可以返回 |
RecentPlayedRoleList | Array.<UserRoleInfo> | 最近玩过的角色列表 |
UserRoleInfo
字段 | 类型 | 说明 |
---|---|---|
RoleId | String | 游戏角色 id 标识 |
RoleName | String | 游戏角色名 |
ZoneInfoList | Array.<ZoneInfo> | 用户角色对应的分区,可能存在大区/中区/小区等,按由大到小的顺序 |
PayParam | PayParam | 米大师下单需要的支付参数 (请求参数若带道具 id,此参数必填,用来下单支付) |
ZoneInfo
字段 | 类型 | 说明 |
---|---|---|
ZoneId | String | 自定义分区 id |
ZoneName | String | 自定义分区名 |
PayParam
字段 | 类型 | 说明 |
---|---|---|
MidasZoneId | String | 米大师分区 id |
Attach | String | 附加数据,在查询 API 和通知中原样返回,可作为自定义参数使用 |
注意:这里游戏角色的分区若存在层级概念,请按照实际的层级填写,例如:用户在电信一区-测试服-1 号线,请按由大到小的顺序 分为三层(不同游戏层次数量可以不一样)返回,例如
{
"ZoneInfoList":[
{
"ZoneId":"testbigzoneid",
"ZoneName":"电信一区"
},
{
"ZoneId":"testmiddlezoneid",
"ZoneName":"测试服"
},
{
"ZoneId":"testsmallzoneid",
"ZoneName":"一号线"
}
]
}
切勿手动合成一层结构,以下为反面案例:
{
"ZoneInfoList":[
{
"ZoneId":"testzoneid",
"ZoneName":"电信一区-测试服-1号线"
}
]
}
JSON 格式示例
请求
{
"CreateTime": 1583202606,
"MsgType": "event",
"Event": "minigame_query_recent_role_list",
"MiniGame": {
"Payload": "{\"OpenId\":\"to_user_openid\",\"NeedRoleNum\":10,\"ProductId\":\"xxx\",\"GoodsPrice\":123}",
"PayEventSig": "f749f67b751fa80f27ddc0b7c8d2821aeda162ea22b323cd64a2c8056c2736f0"
}
}
成功返回
{
"ErrCode":0,
"ErrMsg":"success",
"RecentPlayedRoleList":[
{
"RoleId":"testroleid",
"RoleName":"小游戏开发者",
"ZoneInfoList":[
{
"ZoneId":"testbigzoneid",
"ZoneName":"电信一区"
},
{
"ZoneId":"testmiddlezoneid",
"ZoneName":"测试服"
},
{
"ZoneId":"testsmallzoneid",
"ZoneName":"一号线"
}
],
"PayParam":{
"MidasZoneId":"1",
"Attach":"{\"custom_data\":\"xxx\"}"
}
}
]
}
失败返回
{"ErrCode":99999,"ErrMsg":"internal error"}
# 道具直购类商城发货通知(Event=minigame_h5_goods_deliver_notify)
见 虚拟支付 道具直购|微信开放文档道具发货消息协议|