24好玩

小程序嵌入(web-view 免登录接入)

把 24好玩 H5 活动嵌入你的微信小程序:用小程序 web-view 组件加载拼接了用户身份与签名 token 的活动 URL,玩家以小程序现有会员身份直接进入活动并完成抽奖/发奖,无需再次登录。分享抽奖等依赖公众号回调的功能,通过小程序侧上报 /game/v2/shareGameCallback 补齐。

开通与额度

嵌入小程序属会员方案能力:高级年费会员与 OEM 已含 1 个名额,普通年费会员可选支持,单次升级不支持。所需 appid/appsecret 在工作台"嵌入 APP"处查看。

一、接入机制

小程序内做游戏入口(banner/按钮,或自建游戏中心列表页),点击跳转到承载页,用 web-view 加载游戏地址:

<web-view src="游戏地址"></web-view>

游戏地址 = 活动原始 URL(形如 https://gmXXXX.ssl.minihaowan.com/web/game/game_id/{game_id})+ 身份参数 + token

URL 参数

参数 类型 必选 说明
game_id String 活动 ID
appid String 24好玩分配的第三方 APPID
timestamp Number 10 位秒级时间戳
token String 登录 token,算法见下
uid String 第三方用户 ID(会员 ID)
nickname String 第三方用户名称
headimgurl String 第三方用户头像
is_new String 是否新注册用户(1 是 / 0 否)
is_from_app Number 固定填 1(从 APP 进入)

两种场景都需要拼接身份:(1) 用户从小程序入口进入;(2) 用户从小程序分享卡片进入(拼接当前用户自己的身份)。

token 生成算法(精确配方)

  1. 不含 token 的全部参数组成参数数组 request_params
  2. 按参数名 ASCII 升序排列(PHP 即 ksort);
  3. 将排序后各参数的(不含 key)依次拼接成 str1
  4. str2 = str1 + appsecret(24好玩分配的密钥直接追加在末尾);
  5. token = md5(str2)(小写十六进制)。
$request_params = ["game_id"=>1234, "appid"=>888, "timestamp"=>1520249212,
                   "uid"=>"1a2b3c", "nickname"=>"test"];
ksort($request_params);
$str = '';
foreach ($request_params as $key => $value) { $str .= $value; }
$str .= $appsecret;
$token = md5($str);

注意:nickname/headimgurl 若参与签名,先以原值计算 md5,之后再对 URL 中的值做 urlencode

二、分享功能

小程序内的分享拿不到公众号 JSSDK 的分享回调,需要两件事配合:

1. postMessage 更新分享配置

H5 活动端在页面加载及分享信息变动时(提交分数、发起助力等),调用 wx.miniProgram.postMessage 下发分享数据;小程序承载页用 bindmessage 收集,在 onShareAppMessage 中取最后一条 postType === 'share' 的数据组装返回:

<web-view src="{{src}}" bindmessage="onMessage"></web-view>

postMessage 数据结构:postType: 'share'userInfo: {appid, appuid}(用于生成 token);shareInfo: {shareTitle, shareLogo, shareUrl}gameInfo: {game_id, scene, key, cd_id, id, from_user, video_id}(scene/key/cd_id/id/video_id 视活动配置与模板类型存在)。

要点:shareUrl 为分享入口地址(小程序页则填小程序页面地址)且需 encodeURIComponent;微信 JSSDK 版本 不低于 1.3.2;工作台禁用分享时 postMessage 返回 {},需做兼容。

2. 分享事件回调 /game/v2/shareGameCallback

小程序在用户实际分享时,把分享事件上报给平台以驱动分享送次数等功能:

  • 域名:当前游戏嵌入域名;POSTcontent-type: application/x-www-form-urlencoded
  • 参数:game_idappid(工作台-嵌入 APP 可见)、uid(第三方会员 ID)、video_id(如存在)、token
  • 签名与上文同配方:参数 ksort 后拼值 + appsecret,md5 小写。例:game_id=449707668, appid=65954, uid=7196, appsecret=test-app → 拼串 659544497076687196test-appd41a92c80be58253303fd0b25e4cf234
  • 返回:{code:0, msg:"ok"};错误码 -1 failed、-2 param error、-3 uid error、-4 appid error、-5 game_id error、-6 no share record、-7 game over、-8 token error。

三、代理商游戏列表接口(仅渠道代理商)

自建游戏中心列表页时可用(platform_id 由 24好玩提供):

接口 方式 用途
/open/InternalService/gameList GET 按代理商查游戏列表(参数 platform_idpagepage_sizesearch_type=uidsearch_value=门店登录账号);返回 game_id/名称/状态/起止时间/参与与浏览统计/platform_key
/open/InternalService/userList GET 按代理商查平台用户列表(search_value 传 gameList 返回的 platform_key);返回 user_id/账户类型/游戏数/appid/appsecret 等

四、域名要求

  • web-view 加载的游戏域名需配置进小程序业务域名
  • webview 中 iframe 的域名同样要加入域名白名单(活动内嵌 iframe 时易漏)。

相关页面

渠道模式开放接口 · 第三方CRM对接 · 高级会员接口 · 普通会员与会员方案

最后核对:2026-07-03