游戏充值发货【必接】

51游戏大约 3 分钟

游戏充值发货【必接】

1.文档记录

编码格式密级
utf-8
日期版本修改内容操作人
2021-09-011.0.0文档整理王长富

2.接口地址

1.发货地址
url
游戏方提供
2.请求方式
POST 
3.参数说明
参数名类型是否必填说明
appkeyvarchar(32)游戏公钥,由51提供
areaidint(5)51平台区服验证编号,不分区游戏无此参数
areasignvarchar(36)服务器ID,由51平台和厂商商量决定,一般为1,2,3
game_rolevarchar(50)角色名称对应健名,用于区分充值到哪个角色,即角色查询接口中的rolekey1,rolekey2 ....
gamebiint(11)游戏币数量
orderidvarchar(50)订单号
paytimeint(10)用户提交订单时间,unix_timestamp格式,不要作为接口有效时间来验证
payuservarchar(20)支付用户(付款用户) 51用户名
priceint(11)支付总金额, 单位:分
starttimeint(10)生成订单时间,unix_timestamp格式,不要作为接口有效时间来验证
uservarchar(20)到账用户(游戏币发到此账号)51用户名
sigvarchar(32)加密验证串
gameorder_novarchar(32)不等于空字符串才参与加密,否则不参与加密游戏生成的订单号
game_order_extvarchar(128)不等于空字符串才参与加密,否则不参与加密游戏生成的订单需要透传的字符串
加密规则: 将收到的data里面的数据项sig、memo去掉,然后将data按key排序(从小到大),以$key1=$val1$key2=$val2$key3=$val3…形式拼成字符串,再在末尾追加发货密钥goods_key,最后作md5即生成验证字符串。

PHP示例代码 (参与加密的字段在该示例中已详细列出):

 $goods_key='您的发货密钥goods_key';    // 由51平台提供
 $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];
   }
 }
 //把平台发送过来的上表中全部数据放入$data中
 unset( $data['sig']);    //把$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