h5内嵌页充值【推荐】
大约 4 分钟
h5内嵌页充值【推荐】
- 51游戏网页游戏内H5扫码充值接口文档(提供二维码页面)
文档修改记录
| 编码格式 | 密级 |
|---|---|
| utf-8 | 公开 |
| 变更时间 | 修改记录 | 版本 | 修改人 |
|---|---|---|---|
| 2021-08-31 | 文档整理 | 1.0.0 | 朱金余 |
| 2021-09-01 | 增加2个参数,页面的宽和高,不参与加密 | 1.0.0 | 朱金余 |
| 2022-6-27 | 增加一个参数,用户客户端的ip,不参与加密 | 1.0.0 | 朱金余 |
对接的游戏
| 游戏名称 |
|---|
| 原始传奇 |
名词解释
游戏研发方 :也称为CP,游戏的实际开发团队
游戏运营方 :也称为游戏平台,或者叫平台方,负责连接平台用户和游戏
接口应用场景
对接双方的工作分工
- 游戏运营方 平台提供一个展示付款二维码的页面链接
- 游戏研发方 根据接口文档中的约定参数拼接付款二维码页面的完整url,并在游戏内展示,供用户扫码付款
效果展示
二维码效果展示
游戏内展示平台的付款扫码二维码页面
页面的参数研发要根据协议正确拼接
本接口每次展示的金额是固定的,用户不可以修改充值金额
页面窗口大小,由参数传入
应用场景流程图如下:

微信扫码后展示

平台提供H5扫码充值页面接口协议阐述
接口URL(不包含参数)
接口请求方式
- Http GET,游戏前端直接frame包含展示
接口功能
- 展示扫码支付的二维码页面
接口http参数详解
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| game_id | int | Y | 游戏id找运营索取 |
| uid | int | Y | 平台用户uid,对应游戏登录接口中的参数:user |
| sid | string | Y | 游戏研发方的区服id,对应游戏登录接口中的参数:goods_sign。一般为数字,少部分游戏格式为 s112 格式,如传奇霸业 |
| money | int | Y | 充值金额,单位:人民币 元 |
| time | int | Y | 请求时的时间戳,平台会依此判断是否超时,unixtimestamp,10位整数 |
| product_id | int | Y | 游戏道具/礼包id |
| product_name | string | Y | 游戏道具/礼包的名称 |
| game_role_id | string | Y | 游戏角色唯一标识 |
| gameorder_no | string | N | 游戏生成的订单号,没有传空字符串 |
| gamerole_name | string | N | 游戏内的角色名,可以传空字符串 |
| game_order_ext | string | N | 其它没有定义的字段,发货时会原样透传,对应游戏发货接口中的参数:game_order_ext |
| sign | string | Y | 签名串,32位小写字符串,加密算法如下 |
| width | int | Y | 页面窗口的宽,单位:PX ,不参与加密 |
| height | int | Y | 页面窗口的高,单位:PX ,不参与加密 |
| client_ip | string | Y | 用户的ip,不参与加密 |
sign加密算法
// sign 加密规则,php代码示例:
$time = time(); //时间戳
$seckey = '{这里的h5_seckey找运营方索取}'; //sign加密的密钥,找运营方索取!
// 参与加密的只有以下这些字段,不要增加,也不要减少!!!!
$params = [
'game_id' => $game_id,
'uid' => $user,
'sid' => $areasign,
'time' => $time,
'money' => $money,
'product_id' => $product_id,
'product_name' => $product_name,
'game_role_id' => $game_role_id,
'gameorder_no' => $gameorder_no,
'gamerole_name' => $gamerole_name,
];
$params['sign] = createSign($params,$seckey); // 请求参数加上sign参数
$params['width] = 窗口宽度; // 追加窗口宽度参数,不参与加密
$params['height] = 窗口高度; // 追加窗口高度参数,不参与加密
$params['client_ip] = 用户的ip; // 用户的ip,不参与加密
$url = 'https://pay.51.com/gamepay/game?'.http_build_query($params); //拼接可展示的页面完整url
生成加密串sign算法:
function createSign($params,$seckey){
if(empty($seckey)){
return '';
}
ksort($params); // 参数按参数名进行升序排序
$signStr = "";
foreach ($params as $key => $value) {
if($key != 'sign'){ // 去除sign参数
$signStr .= $key."=".$value."&"; // 拼接有key=value&这种格式,md5前拼接示例
}
}
$signStr = rtrim($signStr,"&"); // 去除最后一个&
$signStr = $signStr.$seckey; // 拼接加密key
// md5 前的格式示例
//game_id=634&game_role_id=342274965380308993&gameorder_no=&gamerole_name=&money=10&product_id=1&product_name=10元档充值&sid=1&time=0&uid=400253473$seckey
$sign = md5($signStr); // 取md5值,32位小写
return $sign;
}
// 完整链接的示例
https://pay.51.com/gamepay/game?/gamepay/game?game_id=632&uid=4518926&sid=30&money=10&product_id=101&product_name=10%E5%85%83%E5%85%85%E5%80%BC&game_role_id=218116895&gameorder_no=&gamerole_name=%E9%98%BF%E6%8B%89%E4%B9%84%E5%9C%A3%E8%AF%9E&game_order_ext=&sign=105179d6e640c33101e47b608814417d&time=1630550774&width=300&height=200
接口返回
- 无返回,直接展示html的页面
平台提供的物料汇总
- 二维码页面url,不带参数
https://pay.51.com/gamepay/game- 涉及的参数有:
game_id
seckey
