Skip to content

donghaigame/DHSDKServerDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 

Repository files navigation

东海游戏SDK服务端说明文档

接口说明

1、登陆验证

    1. 请求地址: https://api.sdk.dhios.cn/open/verifyAccessToken
    1. 调用方式: HTTPS Post
    1. 接口描述: 验证 accessToken 是否为有效的登录用户会话,若有效则返回其 userId。“游戏客户端”通过“SDK 客户端”获取到accessToken,传到“游戏服务器”,**“游戏服务器”“SDK 服务器”**验证用户会话accessToken的有效性,获取用户的userId,供游戏使用。
      注意:进行接口调用前请确认accessToken是否具备值,如accessToken值为空时请勿调用此接口。
    1. 请求方: 游戏服务器
    1. 响应方: SDK 服务器
    1. 请求内容: application/x-www-urlencoded格式
  • 7)**错误码: 0 正常 3001 签名错误 3002 token失效 5000 服务端内部数据错误
  • 8)**KEY:运营提供的apiKey
                       
字段名称 字段说明 类型 必填 备注
gameId东海运营提供(游戏Id) string
subGameId东海运营提供(游戏子包Id) string
accessToken accessToken string accessToken令牌
sign 签名参数 string 所有参数key(不包括sign)按照A-Z字段升序(去除&符号,key与value用=连接)直接拼接apikey的值之后,md5运算

请求例子:

东海数据,临时可测
 gameId:1
 subGameId:1
 apiKey:ba472a72208cb671639d94a54cbb017d

对参数名按字母升序得到字符串
已排序(值根据文档要求类型填写,示例仅参考,数据随写)


1. accessToken = abcdefD
2. gameId      = 1
3. subGameId   = 2


apikey:ABCD(东海提供)

拼接示例:
string=“accessToken=abcdefDgameId=1subGameId=2ABCD"
sign = MD5(string)

结果例如
sign:"0554a2df922c7ae7b3a111d8c8f6ebfc"
 
 
Public function notify(){
    $params['gameId'] = 1;//东海运营提供
    $params['subGameId']=1;//东海运营提供
    $params['accessToken'] = 'tokendemo';
    ksort($params);
    $key'api_key';//东海运营提供
    $str = str_replace("&","",http_build_query($params).$key);//去除&,升序拼接成:accessToken=accessakkgameId=1subGameId=1api_key
    
    $params['sign'] = md5($str);
    
    $res = curl_https_post($url,$params) ;//发起https post请求,不解析get请求
    //处理$res数据
}

返回json
{
    "code": 0,
    "msg": "ok",
    "data": {
        "userId": 8,
        "userName": "zxwzxw"
    }
}

2、支付结果异步通知

  • 1)请求地址: 由游戏cp方提供
  • 2)调用方式: HTTP Post
  • 3)接口描述: “游戏客户端”购买成功后,“SDK 服务器”通过该接口通知”游戏服务器“。支付成功一定会及时回调通知,支付失败可能不会及时通知(如支付超时等无法及时通知),如果需要知道订单状态,使用支付结果查询结构。 支付通知有失败重试机制,正式环境通知时间间隔为15,15,30,180,1800,1800,1800,1800,3600 单位为秒

    支付回调通知,还有一点,可能会由于升级增加参数,需要验证回调签名时,应该允许这种情况。
    使用支付key签名;
  • 4)请求方: SDK 服务器
  • 5)响应方: 游戏服务器
  • 6)请求内容: multipart/form-data 格式
  • 7)**错误码: 0 正常 3001 签名错误 3002 token失效 5000 服务端内部数据错误
  • 8)**KEY:运营提供的payKey
  • 9)**注意:你们的服务器地址一定要自己验证过的,我们会将参数post给你们,你们提供个回调地址就可以了。
                                                                                                                                   
字段名称 字段说明 类型 必填 备注
cpOrderId CP方订单 String
userId 用户Id int
orderId 东海平台订单 String
gameId 游戏Id int
subGameId子包Id int
platform 平台类型 string 1,iOS;2,android
totalFee 支付金额 int 单位是:分
orderStatus 订单状态 int 1:已支付,0:未支付
endtime订单完成时间 int UNIX时间戳
randStr随机字符串 String 不长于32位
customInfo用户自定义数据String
sign 所有参数key(不包括sign)按照A-Z字段升序(去除&符号,key与value用=连接)直接拼接paykey的值之后,md5运算 string
东海数据,临时可测
 gameId:    1
 subGameId: 1
 payKey:    62e393070265e3a094e66027c61c71e6


已排序(参数值根据文档要求类型填写,示例仅参考)

1. cpOrderId   = 1   
2. customInfo  = 2 
3. endtime     = 3
4. gameId      = 4
5. orderId     = 5
6. orderStatus = 6
7. platform    = 7
8. randStr     = 8
9. subGameId   = 9
10. totalFee   = 10
11. userId     = 11

payKey:s231sdaf (东海提供)

拼接示例:
string="cpOrderId=1customInfo=2endtime=3gameId=4orderId=5orderStatus=6platform=7randStr=8subGameId=9totalFee=10userId=11s231sdaf"

sign = MD5(string)

结果例如:
sign:"0554a2df922c7ae7b3a111d8c8f6ebfc"

Public function notify(){
    $params = I('post.');
    unset($params['sign']);
    
    $sign = $_POST['sign'];

    ksort($params);
    $key = 'key';//由东海颁发使用payKey
    $sign = md5(urldecode(str_replace("&","",http_build_query($params).$key)));
    if($sign==$_POST['sign']){
    	//商户信息,订单信息验证
	$success = ...;
	if($success){
        	echo 'success';
	}else{
		echo 'failure';
	}
        //CP方数据处理
    }else{
    	echo 'failure';
    }
}

  //可能会出现的错误码
  CODE_ERROR_SIGN        	= 3001;//sign签名不正确
  CODE_ERROR_EXPIRE_TOKEN 	= 3002;//token过期了
  CODE_ERROR_CP_ORDER_ID        = 3008;//cp order id 错误
  CODE_ERROR_REPEAT_CP_ORDER_ID = 3009;//重复提交cp订单
  CODE_ERROR_PAY_ERROR 		= 3010;//第三方支付失败
  CODE_ERROR_CREATE_ORDER 	= 3010;//创建订单失败
  CODE_ERROR_ORDER_NOT_EXISTS   = 3011;//订单不存在
  CODE_ERROR_ALREADY_PAY 	= 3012;//已经支付
  CODE_ERROR_ORDER_FEE          = 3013;//支付金额不对
  CODE_ERROR_DATA 		= 5000;//数据错误

返回内容(string):

输出值 备注
success 成功,表示游戏服务器成功接收了该次充值结果通知
failure 失败,表示游戏服务器无法接收或识别该次充值结果通知,如:签名检验不正确、游戏服务器接收失败

许可证

DHSDK 使用 MIT 许可证,详情见 LICENSE 文件。

Releases

No releases published

Packages

No packages published