# 商城

# 功能讲解

小游戏商城,旨在提供多支付场景、用户付费运营等能力。开发者可以根据需求将已发布的道具在“商城管理”模块上架至你的小游戏商城,届时即能支持用户在商城进行道具购买。

# 功能入口

路径:微信公众平台(mp.weixin.qq.com)-虚拟支付2.0-基本配置-商城管理

# 效果展示

# 功能介绍

模块 介绍 描述
基础功能 道具介绍 支持配置道具名称、道具描述、道具图片
定价 支持设置原价、售卖价,会自动换算折扣(定价单位为人民币/元)
上下架 支持配置上架时间,定时上下架等
库存/限购 支持配置库存总量和限购次数(支持周、日、永久等限购规则)
优势功能 大额下单 支持更自由,更大额度的支付档位(如8888元、123元等)
合并下单 支持单道具合并支付(如6元道具,可一次性下单10份)
游戏圈入口 支持游戏圈开通商城专属入口
私域曝光 支持配置入口链接,可发布到社群、公众号等私域场景
专属活动 接入商城还有机会参与专属的主题/促销/裂变活动

# 功能答疑

  1. 如何接入?
    a) 可参考下方文档,需要游戏侧技术开发,平台可提供部分技术支持

  2. 接入成本?
    a) 通常在1-3日mgam

  3. 游戏圈入口该如何配置?
    a) 商城接入完成后,自动开通,目前仅安卓可见

  4. 商城分成
    a) 与安卓内购分成一致

# 开发者配置流程

“配置道具-上架商城-完善发货配置”,仅需三步简单配置

  1. 使用道具直购能力 在“虚拟支付2.0-基本配置-道具配置”中,基于道具直购能力,配置特定的道具信息。同时,配置好的道具也可以在游戏内使用,具体见道具直购文档。

  2. 配置商城上下架 在“虚拟支付2.0-基本配置-商场管理”中配置道具的上下架,输入在道具直购页面发布成功的道具 id,可自动拉取道具信息,同时开发者可以补充相关商场描述和设定道具限量策略。

  3. 完善消息推送与发货 第一步配置接受发货消息的后台服务器地址,具体可参考文档小游戏消息推送

第二步开启消息推送开关,游戏内直购道具在“虚拟支付2.0-基本配置-道具配置”开启,商城道具在“虚拟支付2.0-基本配置-商场管理”开启,开启前会进行一个小测试,会发送 mock 数据通知开发者,开发者需要正确回包。

# 开发者开发流程

加粗部分需要开发者开发

# 支付类订阅事件公共说明

所有事件基础结构如下

字段 类型 说明
CreateTime Number 消息发送时间
MsgType String 消息类型,道具发货场景固定为:event
Event String 事件类型
与商城有关的事件类型
(1)拉取用户最近玩过的游戏角色数据 minigame_query_recent_role_list
(2)道具直购类商城发货通知 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":"一号线"
        }
    ]
}
  • 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 )

道具发货消息协议,仅修改event为minigame_h5_goods_deliver_notify,协议内容一致。