ServerDocument.md
3.01 KB
GumpTech服务端接口文档
1. 用户登录验证接口
接口地址:http://sdk.letsgame.mobi/v1/user/verify_user.do
参数:
appId: 游戏接入分配appid
appkey: 注意appkey都为小写字母
userId: GumpTech平台的用户id
sessionKey: 登录后回调给给第三方
返回值:
{
"code":100000
"msg":"xxxxxx"
"data":{
"userId":23444
"sessionKey":"xxx"
}
}
2. 充值通知第三方服务端接口
参数列表:
orderId: 订单id
appId: 游戏接入分配appid
userId: 平台用户id
product: 购买商品名字
extraInfo:游戏接入方传入自定义参数,200字符,页面支付值为:web_pay:[serverId]_[roleName]
currency:币种 exp:USD RMB
amount:支付过程中选中额度,第三方可以忽略此参数
realAmount: 最终用户支付的额度
sig: 签名
第三方server端返回值:
如果第三方验证成功,则返回字符串:success即可。
3.签名算法
/**
* 签名算法
* @param userOrder
* @param key
* @return
*/
private String sig(UserOrder userOrder, String key) {
SortedSet<String> allParams = Sets.newTreeSet();
try {
allParams.add(Constants.Keys.ORDER_ID + "=" + URLEncoder.encode(userOrder.getId()+"", "utf-8"));
allParams.add(Constants.Keys.APPID + "=" + URLEncoder.encode(userOrder.getAppId()+"", "utf-8"));
allParams.add(Constants.Keys.USER_ID + "=" + URLEncoder.encode(userOrder.getUserId()+"", "utf-8"));
allParams.add(Constants.Keys.PRODUCT + "=" + URLEncoder.encode(userOrder.getProduct(), "utf-8"));
allParams.add(Constants.Keys.EXTRA_INFO + "=" + URLEncoder.encode(userOrder.getExtraInfo(), "utf-8"));
allParams.add(Constants.Keys.CURRENCY + "=" + URLEncoder.encode(userOrder.getCurrency(), "utf-8"));
allParams.add(Constants.Keys.AMOUNT + "=" + URLEncoder.encode(userOrder.getAmount()+"", "utf-8"));
allParams.add(Constants.Keys.REAL_AMOUNT + "=" + URLEncoder.encode(userOrder.getRealAmount()+"", "utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String params = Joiner.on("&").join(allParams) + key;
log.info("sig:" + params);
String computedToken = DigestUtils.md5DigestAsHex(params.getBytes());
return computedToken;
}
注意:参数是按字母升序排列
4. 错误码对照表
100000 : 成功
800000 : 应用不存在
100010 : 用户密码错误
100011 : 用户已经存在
100012 : 用户不存在
100013 : 用户名不能为空
900000 : 订单不存在
900001 : 支付失败
900003 : sig签名错误