ServerDocument.md 2.62 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.签名算法

···java

/**
 * 签名算法
 * @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;
}

···