1.登录认证


简要描述:

  • 验证登陆user_token 是否有效

请求URL:

  • https://sdk.xiaokr.cn/api/cp/user/check

请求方式: (UTF-8)

  • HTTP POST

接口说明:

    验证user_token是否为有效的登录用户会话,若有效则返回其账号标识、账号创建者和昵称。通过"SDK 客户端"获取到user_token,传到"游戏服务器","游戏服务器"到"SDK 服务器"验证user_token的有效性。注意:进行接口调用前请确认user_token是否具备值,如user_token值为空时请勿调用此接口。请求次数有限制,如果超过频次限制,接口将返回错误码,不响应请求。

请求方

  • 游戏服务器

响应方:

  • SDK服务器

请求参数:

参数名 必选 类型 说明
app_id STRING 游戏接入时分配的应用app_id
mem_id STRING 登陆时提供给CP的用户ID
user_token STRING 登陆获取的user_token
sign STRING 参数校验

请求示例:

POST参数: app_id=1&mem_id=23&user_token=aSzdVfmocjGiFivnOaGlEkxuciGnRtYTc4NmdxNjM0MWZlN24O0O0O&sign=033b1a55a22df5f9e517c117a960a240

假定app_key= de933fdbede098c62cb309443c3cf251sign 的签名规则:md5(app_id=...&mem_id=...&user_token=...&app_key=...)(替换...为实际值)

签名原文:app_id=1&mem_id=23&user_token=aSzdVfmocjGiFivnOaGlEkxuciGnRtYTc4NmdxNjM0MWZlN24O0O0O&app_key=de933fdbede098c62cb309443c3cf251

sign=md5(app_id=1&mem_id=23&user_token=aSzdVfmocjGiFivnOaGlEkxuciGnRtYTc4NmdxNjM0MWZlN24O0O0O&app_key=de933fdbede098c62cb309443c3cf251)

md5加密:
echo -n "app_id=1&mem_id=23&user_token=aSzdVfmocjGiFivnOaGlEkxuciGnRtYTc4NmdxNjM0MWZlN24O0O0O&app_key=de933fdbede098c62cb309443c3cf251"|md5sum

加密结果:033b1a55a22df5f9e517c117a960a240

返回示例(JSON返回)

{
    "status": "0",
    "msg": "请求参数为空 app_id",
    "data": {
        "birthday": "",
        "real_name": "",
        "id_card": ""
        "is_auth": 1 "age": 0
    }
}

返回参数说明

状态码 类型 说明
status STRING 返回状态码
msg STRING 返回信息
data.birthday string 出生日期 例如 : 2019-12-05
data.real_name string 真实姓名 默认空串
data.id_card string 身份证号 默认空串
data.is_auth int 1 未实名 2 已实名
data.age int 年龄

状态码说明

状态码 说明
0 请求参数错误
1 成功
10 服务器内部错误
11 app_id错误
12 签名错误
13 user_token错误
14 user_token超时,表示用户登录授权已超时,需引导用户重新登录,并更新接口访问令牌。(注:访问令牌的有效时长是1天)
15 mem_id错误
16 访问太频繁,超过访问次数
100 没有接口访问权限(注:出现时可联系技术人员确认权限是否开通)

 

 

 

 

2.支付通知


简要描述:

  • 平台充值成功后通知游戏服务器 请求接口

请求URL:

  • 即充值结果通知地址,CP提供。游戏接入时,录入到的游戏平台中。

请求方式:(UTF-8)

  • HTTP POST

接口说明:

    请求方为SDK 服务器,响应方为CP服务器。    

    用户在游戏中提交购买请求后,游戏平台会异步执行充值购买,在购买操作完成后,游戏平台通过该接口将充值结果发送给“游戏服务器”。    

    此处定义本接口的规范,游戏合作商需根据此规范在“游戏服务器”实现本接口。

请求方:

  • SDK 服务器

响应方:

  • 游戏服务器

请求参数:

参数名 必选 类型 说明
app_id STRING 游戏ID
cp_order_id STRING 游戏传入的外部订单号。服务器会根据这个订单号生成对应的平台订单号,请保证每笔订单传入的订单号的唯一性。URLencodeing
mem_id STRING 玩家ID
order_id STRING 平台订单号
order_status STRING 平台订单状态 1 未支付 2成功支付 3支付失败
pay_time STRING 订单下单时间 时间戳, Unix timestamp
product_id STRING 商品idURLencodeing
product_name STRING 商品名称 URLencodeing
product_price STRING 商品价格(元);保留两位小数URLencodeing
sign STRING MD5 签名
ext STRING 透传参数 CP下单时的原样放回 URLencodeing

请求示例:

POST参数: 
app_id=1&cp_order_id=20161028111&mem_id=&order_id=14794504894304304120001&order_status=2&pay_time=1479450489&product_id=1&product_name=%E5%85%83%E5%AE%9D&product_price=1&sign=3eaacb162b1f0fa12ad29dcd8e48ac1b&ext=%E7%A9%BF%E9%80%8F

假定app_key=f875364690581668449d4cf0aeb60560
sign 的签名规则:md5(app_id...&cp_order_id...&ext...&mem_id...&order_id...&order_status...&pay_time...&product_id...&product_name...&product_price...&app_key=...)
(替换...为实际值)

签名原文:
app_id=1&cp_order_id=20161028111&ext=%E7%A9%BF%E9%80%8F&mem_id=&order_id=14794504894304304120001&order_status=2&pay_time=1479450489&product_id=1&product_name=%E5%85%83%E5%AE%9D&product_price=1&app_key=f875364690581668449d4cf0aeb60560

sign=md5("app_id=1&cp_order_id=20161028111&ext=%E7%A9%BF%E9%80%8F&mem_id=&order_id=14794504894304304120001&order_status=2&pay_time=1479450489&product_id=1&product_name=%E5%85%83%E5%AE%9D&product_price=1&app_key=f875364690581668449d4cf0aeb60560")

md5加密:
echo -n "app_id=1&cp_order_id=20161028111&ext=%E7%A9%BF%E9%80%8F&mem_id=&order_id=14794504894304304120001&order_status=2&pay_time=1479450489&product_id=1&product_name=%E5%85%83%E5%AE%9D&product_price=1&app_key=f875364690581668449d4cf0aeb60560"|md5sum

加密结果:29456d3ef41003b92802993e4bdaca30

返回示例:

SUCCESS

返回参数说明:

响应内容 响应内容描述
SUCCESS 成功,表示游戏服务器成功接收了该次充值结果通知,校验签名,订单,金额等都没问题。
FAILURE 失败,表示游戏服务器无法接收或识别该次充值结果通知,如:签名检验不正确、游戏服务器接收失败

通知机制:

充值操作完成并且充值成功后,“SDK 服务器”都会将充值结果通过“充值结果回调接口”发送到“游戏服务器”。“游戏服务器”收到“SDK 服务器”的充值通知后,根据处理结果返回字符串SUCCESS 或FAILURE。

如果返回SUCCESS,则“SDK服务器”结束通知任务;

如果返回FAILURE 或由于网络延时导致“SDK 服务器”没有收到任何返回,SDK 服务器将会在周期内进行重复通知。

 

 

 

 

3.游戏服务器开发要点


通信协议:

  • “SDK 服务器”采用HTTP 协议作为通信协议,
  • “游戏服务器”通过构造HTTP 请求(POST方式)向“SDK 服务器”发起接口请求。

user_token 验证注意事项:

  • user_token验证应该在客户端接到sdk 登陆成功后,客户端再登陆游戏服务器的时候,游戏服务器请求sdk 服务器验证。
  • 在登陆或必要的时候调用,不做无故调用,注意控制调用次数,这个接口做了次数等限制。

充值结果回调注意事项:

在充值完成之后,SDK服务器会回调CP 给的地址。

  • *需要校验回调的金额是否跟商品的真实价格一致;
  • *需要校验用户是否充值成功;
  • *返回值:返回“SUCCESS”表示通知CP成功了,其他错误等情况返回”FAILURE”。

 

 

 

 

4.Demo


4.1 PHP-DEM0

登陆认证:

$query_data['user_token'] = 'rkmi2huqu9dv6750g5os11ilv2'; // 获取的user_token
$query_data['mem_id'] = '23'; // 获取的用户ID
$query_data['app_id'] = '1'; // 获取的游戏APPID
$app_key = 'de933fdbede098c62cb309443c3cf251'; // 获取的游戏APPKEY
$url = "http://api.【域名】/api/v7/cp/user/check";
$signstr = "app_id=" . $query_data['app_id'] . "&mem_id=" . $query_data['mem_id'] . "&user_token=" . $query_data['user_token'] . "&app_key=" . $app_key;
$query_data['sign'] = md5($signstr);
/* http请求 */
$rdata = http_post_data($url, $query_data);
if ($rdata) {
    $rdata = json_decode($rdata,true);
    if ('1' == $rdata['status']) {
        // CP操作,请求成功,用户有效
        echo $rdata['data'];
    }
}
// HTTP json数据请求函数
function http_post_data($url, array $query_data) {
    $post_str = http_build_query($query_data);
    $curl = curl_init(); // 初始化curl
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, 0); // 过滤HTTP头
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 显示输出结果
    curl_setopt($curl, CURLOPT_POST, 1); // post传输数据
    curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // post传输数据
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3); // 设置等待时间
    $header = array(
        "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
    );
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    ob_start();
    curl_exec($curl);
    $return_content = ob_get_contents();
    ob_end_clean();
    curl_close($curl);
    return $return_content;
}

results matching ""

    No results matching ""