有料 imessage.china.com

有料社区开放API

1. 概述

有料社区开放API向第三方开发者提供了一套完整的接口调用方式,允许通过审核的第三方应用自主接入有料社区,获取有料社区用户相关信息数据并为有料社区用户提供相应服务。

2. API调用

2.1. API Key申请

目前有料社区对第三方应用采取申请审核制,第三方开发者须向有料社区提出申请及相关应用文档说明,审核通过后方可获得API Key进行应用接入等步骤。

2.2. API调用方式

开放API是采用REST基础的接口规范。所有的API都是通过HTTP以POST参数方式向http://imessage.china.com/rest/rest.php发送请求来实现的。

http地址 http://imessage.china.com/rest/rest.php
POST参数示例 api_key=3184179685961ef1d4fde8bfcc7b87bd&call_id=1275975267.83&format=json&method=friends.get&session_key=11547_100000438_11547_1275974093_c9f552d245ec5655d8ba605c5a094090&v=1.0&sig=949c584659bbc44d93b8d01968015b4a
如何生成sig 将请求中所有参数进行排序,排序为字母顺序;将排序好的参数进行转换,去掉"&",例如:k1=v1&k2=v2&k3=v3变为k1=v1k2=v2k3=v3;在上述转换后的串末尾追加上组件的secret_key;用MD5算出上述串的MD5值,然后作为sig的值传入请求中。
获取Session Key 在组件首页里,用get方法获取参数名为session_key的参数。如(php语言):$session_key = $_GET['session_key']。session_key有效时间为4小时,可以保存在本地的cookies或session中,以备调用接口时使用。

2.3. 身份信息调用接口

功能描述

获取已安装本组件的某一用户的详细信息,包括UID、姓名、性别、头像以及该用户是否在线。

参数说明

  参数名 类型 描述
必需参数 api_key string 组件申请时获得的api key,在调用接口时它代表该组件的唯一身份
method string users.getInfo
call_id float 当前调用请求队列号,建议使用当前系统时间的毫秒值。每一次调用接口的call_id参数都不能一样,后一次调用的应该比前一次大。一般取毫秒数就可以了,如果要连续调用,最好自己做控制,比如每调用一次,把call_id增加0.001
sig string 由当前请求参数和组件申请时获得的secret_key连接,进行MD5加密得到的字符串,用于判断发送的请求是否合法。sig签名均应为小写字母
uids string 用户ID,用逗号隔开,最多50个
v string API的版本号,目前为1.0
session_key string 登录用户的session key。用于验证该调用请求是否为当前用户发出的
可选参数 format string Response的格式。支持JSON和XML(缺省值JSON)

返回值示例

JSON格式

[{"uid":100099,"name":"\u5f20\u7433\u7433","gender":1,"logo50":"http://image.imessage.china.com/upload/sns/face/111/10/50_100099_2.jpg","online":0},{"uid":100100,"name":"\u80e1\u4e00\u7f8e","gender":0,"logo50":"http://image.imessage.china.com/sns/face/111/10/50_100100_8.jpg","online":0}]

2.4. UID调用接口

功能描述

获取当前用户(正在使用该组件的用户)的UID。

参数说明

  参数名 类型 描述
必需参数 api_key string 组件申请时获得的api key,在调用接口时它代表该组件的唯一身份
method string users.getLoggedInUser
call_id float 当前调用请求队列号,建议使用当前系统时间的毫秒值。每一次调用接口的call_id参数都不能一样,后一次调用的应该比前一次大。一般取毫秒数就可以了,如果要连续调用,最好自己做控制,比如每调用一次,把call_id增加0.001
sig string 由当前请求参数和组件申请时获得的secret_key连接,进行MD5加密得到的字符串,用于判断发送的请求是否合法。sig签名均应为小写字母
v string API的版本号,目前为1.0
session_key string 登录用户的session key。用于验证该调用请求是否为当前用户发出的
可选参数 format string Response的格式。支持JSON和XML(缺省值JSON)

返回值示例

JSON格式

{“result”:1234234}或{“result”:0}

2.5. 好友身份信息调用接口

功能描述

获取当前登录用户的好友身份信息,包括UID、姓名、性别、头像以及该用户是否在线。

参数说明

  参数名 类型 描述
必需参数 api_key string 组件申请时获得的api key,在调用接口时它代表该组件的唯一身份
method string friends.getFriends
call_id float 当前调用请求队列号,建议使用当前系统时间的毫秒值。每一次调用接口的call_id 参数都不能一样,后一次调用的应该比前一次大。一般取毫秒数就可以了,如果要连续调用,最好自己做控制,比如每调用一次,把call_id增加0.001
sig string 由当前请求参数和组件申请时获得的secret_key连接,进行MD5加密得到的字符串,用于判断发送的请求是否合法。sig签名均应为小写字母
uids string 用户ID,用逗号隔开,最多50个
v string API的版本号,目前为1.0
session_key string 登录用户的session key。用于验证该调用请求是否为当前用户发出的
可选参数 format string Response的格式。支持JSON和XML(缺省值JSON)

返回值示例

JSON格式

[{"uid":73878050,"name":"\u6052\u514b\u9686123qwe\uff01@#\u516c\u53f8","gender":0,"logo50":"http://image.imessage.china.com/upload/sns/face/111/10/50_73878050_9.jpg","online":0},{"uid":73968865,"name":"\u6b27\u9633","gender":1,"logo50":"http://image.imessage.china.com/upload/sns/face/111/10/50_73968865_1.jpg","online":0}]

2.6. 系统消息调用接口 (actions.sendSysNews)

功能描述

发送系统消息接口,即把组件内的信息通过系统消息发送给部分有料社区好友。

参数说明

  参数名 类型 描述
必需参数 api_key string 组件申请时获得的api key,在调用接口时它代表该组件的唯一身份
method string actions.sendSysNews
call_id float 当前调用请求队列号,建议使用当前系统时间的毫秒值。每一次调用接口的call_id 参数都不能一样,后一次调用的应该比前一次大。一般取毫秒数就可以了,如果要连续调用,最好自己做控制,比如每调用一次,把call_id增加0.001
sig string 由当前请求参数和组件申请时获得的secret_key连接,进行MD5加密得到的字符串,用于判断发送的请求是否合法。sig签名均应为小写字母
uids string 用户ID,用逗号隔开,最多50个。ID 必须为已登录的用户好友的 ID 或已安装了您应用的用户 ID。
v string API的版本号,目前为1.0
session_key string 登录用户的session key。用于验证该调用请求是否为当前用户发出的
textcode string 发送系统消息所使用的文案编号,由有料社区分配。文案需要提前告诉有料社区,最终文案不超过60个汉字,否则会被截断。
该文案消息文案可以有{_USER_} {_USER_U1_} {_USER_U2_} {_USER_TA_} {_PARAM1_} {_PARAM2_} {_PARAM3_} {_PARAM4_} {_PARAM5_}九个变量,{_USER_}: 固定为当前用户{_USER_U1_}:可设置用户(通过游戏传参) {_USER_TA_}:他/她,其他为文字。连接文案可以有{_USER_TA_} {_PARAM1_} {_PARAM2_} {_PARAM3_} {_PARAM4_} {_PARAM5_}。
消息文案格式可自行组合,组合好后的文案提交给有料社区联系人,有料配置成功后方可使用。例如,系统消息:{_USER_} 在做{_PARAM1_}任务时遇到了强大的{_PARAM2_},快去帮帮{_USER_TA_} !链接文案:去{_PARAM3_}帮忙
link string 系统消息里的链接地址,只能是组件在有料社区的相对地址。
可选参数 format string Response的格式。支持JSON和XML(缺省值JSON)
param1 string 参数一
param2 string 参数二
param3 string 参数三

返回值示例

JSON格式

{"result":1}

2.7. 好友动态调用接口(actions.sendNewsFeed)

功能描述

发送好友动态接口,即把组件内的动态发送给有料社区好友。

参数说明

  参数名 类型 描述
必需参数 api_key string 组件申请时获得的api key,在调用接口时它代表该组件的唯一身份
method string actions.sendNewsFeed
call_id float 当前调用请求队列号,建议使用当前系统时间的毫秒值。每一次调用接口的call_id 参数都不能一样,后一次调用的应该比前一次大。一般取毫秒数就可以了,如果要连续调用,最好自己做控制,比如每调用一次,把call_id增加0.001
sig string 由当前请求参数和组件申请时获得的secret_key连接,进行MD5加密得到的字符串,用于判断发送的请求是否合法。sig签名均应为小写字母
uids string 用户ID,用逗号隔开,最多50个ID 必须为已登录的用户好友的 ID 或已安装了您应用的用户 ID。
v string API的版本号,目前为1.0
session_key string 登录用户的session key。用于验证该调用请求是否为当前用户发出的
textcode string 发送系统消息所使用的文案编号,由有料社区分配。文案需要提前告诉有料社区,最终文案不超过60个汉字,否则会被截断。
该文案消息文案可以有{_USER_} {_USER_U1_} {_USER_U2_} {_USER_TA_} {_PARAM1_} {_PARAM2_} {_PARAM3_} {_PARAM4_} {_PARAM5_}九个变量,{_USER_}: 固定为当前用户{_USER_U1_}:可设置用户(通过游戏传参) {_USER_TA_}:他/她,其他为文字。连接文案可以有{_USER_TA_} {_PARAM1_} {_PARAM2_} {_PARAM3_} {_PARAM4_} {_PARAM5_}。
消息文案格式可自行组合,组合好后的文案提交给有料社区联系人,有料配置成功后方可使用。例如,系统消息:{_USER_} 在做{_PARAM1_}任务时遇到了强大的{_PARAM2_},快去帮帮{_USER_TA_} !链接文案:去{_PARAM3_}帮忙
link string 系统消息里的链接地址,只能是组件在有料社区的相对地址。
可选参数 format string Response的格式。支持JSON和XML(缺省值JSON)
pic string 发送动态所使用的图片地址,如果动态分享中需要发布图片,则此函数为必需
param1 string 参数一
param2 string 参数二
param3 string 参数三

返回值示例

JSON格式

{"result":1}

2.8. 创建站外邀请的链接地址(invitations.createLink)

功能描述

生成用户站外邀请用户注册的链接地址,应用可以引导用户通过QQ或者msn等渠道邀请好友加入应用。

参数说明

  参数名 类型 描述
必需参数 api_key string 组件申请时获得的api key,在调用接口时它代表该组件的唯一身份
method string invitations.createLink
call_id float 当前调用请求队列号,建议使用当前系统时间的毫秒值。每一次调用接口的call_id 参数都不能一样,后一次调用的应该比前一次大。一般取毫秒数就可以了,如果要连续调用,最好自己做控制,比如每调用一次,把call_id增加0.001
sig string 由当前请求参数和组件申请时获得的secret_key连接,进行MD5加密得到的字符串,用于判断发送的请求是否合法。sig签名均应为小写字母
uids string 用户ID,用逗号隔开,最多50个
v string API的版本号,目前为1.0
session_key string 登录用户的session key。用于验证该调用请求是否为当前用户发出的
可选参数 format string Response的格式。支持JSON和XML(缺省值JSON)

返回值示例

JSON格式

{"result":"http://imessage.china.com/reg.php?_a=reg&code=8cb2e9e19d5ee0628ae40f2906ea33a9"}

3. 接口调用PHP实例

3.1. 直接请求调用

users.getInfo

<?php
$api_key = 'xxx';
$secret = 'xxx';
$url = 'http://imessage.china.com/rest/rest.php';
$session_key = $_GET['session_key'];
if (empty($session_key)) {
    $session_key = $_COOKIE["u_session_key"];
} else {
    setcookie("u_session_key", $session_key, time()+3600*4);
}
$param = array(
'api_key' => $api_key,
'method' => 'users.getInfo',
'uids' => '100099,100100',
'format' => 'json',
'session_key' => $session_key,
);
$query = buildQuery($param, $secret);
$result = postRequest($url, $query);
$result = json_decode($result);
function buildQuery($param, $secret) {
    $param['call_id'] = microtime(true);
    $param['v'] = '1.0';
    ksort($param);
    $request_str = '';
    foreach ($param as $key => $value) {
        $request_str .= $key . '=' . $value; // 没有分割符
    }
    $sig = $request_str . $secret;
    $sig = md5($sig);
    $param['sig'] = $sig;
    $query = http_build_query($param);
    return $query;
}
function postRequest($url, $post_string) {
    $useragent = 'API PHP5 Client 1.1 (curl) ' . phpversion();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    if (strlen($post_string) >= 3) {
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
function url_base64_encode($str) {
    $search = array ('+', '/');
    $replace = array ('*', '-');
    $basestr = base64_encode($str);
    return str_replace( $search, $replace, $basestr );
}

3.2. 交互式调用口 (现只支持actions.sendNewsFeed接口)

actions.sendNewsFeed

<?php
$api_key = 'xxx';
$secret = 'xxx';
$url = 'http://imessage.china.com/rest/rest.php';
$session_key = $_GET['session_key'];
if (empty($session_key)) {
    $session_key = $_COOKIE["u_session_key"];
} else {
    setcookie("u_session_key", $session_key, time()+3600*4);
}
$param = array(
 'api_key' => $api_key,
 'method' => 'actions.sendNewsFeed',
 'format' => 'json',
 'session_key' => $session_key,
 'textcode' => '782d8ceb38e9e3a99017b6aee76736e1',
 'link' => '/message/box.php',
 'pic' => 'http://imessage.china.com/images/gift/advance/01.gif',
 'param1' => 'p1',
 'param2' => 'p2',
 'param3' => 'p3',
 );
$query = buildQuery($param, $secret);
//$result = postRequest($url, $query);
//$result = json_decode($result);
?>
<script type="text/javascript">
<!--
 function showhdDialog(para)
{
    var t = document.createElement("div");
    t.innerHTML = '<iframe src="<?php echo $url;?>?para='+para+'" scrolling="yes" height="0px"  width="0px" style="display:none"></iframe>';
    document.body.appendChild(t.firstChild);
}
    var varstr='<?php echo url_base64_encode($query);?>';
//-->
</script>
<?php
 echo '<input id="abcd" type="button" value="弹出添加动态信息" onclick="showKxDialog(varstr);" />';

function buildQuery($param, $secret) {
    $param['call_id'] = microtime(true);
    $param['v'] = '1.0';
    ksort($param);
    $request_str = '';
    foreach ($param as $key => $value) {
        $request_str .= $key . '=' . $value; // 没有分割符
    }
    $sig = $request_str . $secret;
    $sig = md5($sig);
    $param['sig'] = $sig;
    $query = http_build_query($param);
    return $query;
}

function postRequest($url, $post_string) {
    $useragent = 'API PHP5 Client 1.1 (curl) ' . phpversion();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    if (strlen($post_string) >= 3) {
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
function url_base64_encode($str) {
    $search = array ('+', '/');
    $replace = array ('*', '-');
    $basestr = base64_encode($str);
    return str_replace( $search, $replace, $basestr );
}

4. 支付申请

目前有料社区对第三方应用的支付环节采取申请审核制,第三方开发者须向有料社区提出申请及相关应用文档说明,审核通过后方可获得支付及交易查询等接口。

申请邮箱 : youliao.app@china.com
合作热线 : 010-84105996

如有任何疑问,请致电010-84105995发邮件到 youliao@china.com咨询