游戏充值发货【必接】
1.文档记录
| 日期 | 版本 | 修改内容 | 操作人 |
|---|
| 2021-09-01 | 1.0.0 | 文档整理 | 王长富 |
2.接口地址
1.发货地址
2.请求方式
3.参数说明
| 参数名 | 类型 | 是否必填 | 说明 |
|---|
| appkey | varchar(32) | 是 | 游戏公钥,由51提供 |
| areaid | int(5) | 否 | 51平台区服验证编号,不分区游戏无此参数 |
| areasign | varchar(36) | 是 | 服务器ID,由51平台和厂商商量决定,一般为1,2,3 |
| game_role | varchar(50) | 否 | 角色名称对应健名,用于区分充值到哪个角色,即角色查询接口中的rolekey1,rolekey2 .... |
| gamebi | int(11) | 是 | 游戏币数量 |
| orderid | varchar(50) | 是 | 订单号 |
| paytime | int(10) | 是 | 用户提交订单时间,unix_timestamp格式,不要作为接口有效时间来验证 |
| payuser | varchar(20) | 是 | 支付用户(付款用户) 51用户名 |
| price | int(11) | 是 | 支付总金额, 单位:分 |
| starttime | int(10) | 是 | 生成订单时间,unix_timestamp格式,不要作为接口有效时间来验证 |
| user | varchar(20) | 是 | 到账用户(游戏币发到此账号)51用户名 |
| sig | varchar(32) | 是 | 加密验证串 |
| gameorder_no | varchar(32) | 不等于空字符串才参与加密,否则不参与加密 | 游戏生成的订单号 |
| game_order_ext | varchar(128) | 不等于空字符串才参与加密,否则不参与加密 | 游戏生成的订单需要透传的字符串 |
加密规则: 将收到的data里面的数据项sig、memo去掉,然后将data按key排序(从小到大),以$key1=$val1$key2=$val2$key3=$val3…形式拼成字符串,再在末尾追加发货密钥goods_key,最后作md5即生成验证字符串。
PHP示例代码 (参与加密的字段在该示例中已详细列出):
$goods_key='您的发货密钥goods_key';
$fileds = ['appkey','areaid','areasign','game_role','gamebi','orderid','paytime','payuser','price','starttime','user'];
if($gameorder_no != ''){
$fileds[] = 'gameorder_no';
}
if($game_order_ext != ''){
$fileds[] = 'game_order_ext';
}
foreach($fileds as $f){
if(isset($_POST[$f])){
$data[$f] = $_POST[$f];
}
}
unset( $data['sig']);
ksort( $data);
$str = '';
foreach( $data as $k=>$v){
$str .=$k.'='.$v;
}
$sig = md5( $str.$goods_key);
4.返回结果
| 说明 | 返回值 |
|---|
| 正常订单 | 发货并返回success 返回格式:(php) echo 'success'; |
| 重复订单请求 | 不发货,直接返回success |
| 非法订单 | 输出任一整数后终止程序 |
5.游戏中的充值链接规则
游戏中的充值链接格式如下: http://pay.51.com/?appkey=xxxxx&areasign=xxxxx 其中参数appkey是游戏的标识,文档开始有说明;参数areasign是区服标识,就是充值接口中的goods_sign。 示例:http://pay.51.com/?appkey=f4fa02c20210aff0ae8604103338dca7&areasign=2167