Commit 85b5d32959cafe2a3bedb7ba1c849768a37d3d45

Authored by 李康
1 parent 1349843070
Exists in master

sig

Showing 1 changed file with 1 additions and 1 deletions Inline Diff

doc/ServerDocument.md
1 ## GumpTech服务端接口文档 1 ## GumpTech服务端接口文档
2 2
3 1. 用户登录验证接口 3 1. 用户登录验证接口
4 ---------------------------- 4 ----------------------------
5 接口地址:http://api.gumptech.com/v1/user/verify_user.do 5 接口地址:http://api.gumptech.com/v1/user/verify_user.do
6 参数: 6 参数:
7 appId: 游戏接入分配appid 7 appId: 游戏接入分配appid
8 appkey: 注意appkey都为小写字母 8 appkey: 注意appkey都为小写字母
9 userId: GumpTech平台的用户id 9 userId: GumpTech平台的用户id
10 sessionKey: 登录后回调给给第三方 10 sessionKey: 登录后回调给给第三方
11 11
12 返回值: 12 返回值:
13 { 13 {
14 "code":100000 14 "code":100000
15 "msg":"xxxxxx" 15 "msg":"xxxxxx"
16 "data":{ 16 "data":{
17 "userId":23444 17 "userId":23444
18 "sessionKey":"xxx" 18 "sessionKey":"xxx"
19 } 19 }
20 } 20 }
21 21
22 22
23 23
24 2. 充值通知第三方服务端接口 24 2. 充值通知第三方服务端接口
25 ----------------------------- 25 -----------------------------
26 参数列表: 26 参数列表:
27 orderId: 订单id 27 orderId: 订单id
28 appId: 游戏接入分配appid 28 appId: 游戏接入分配appid
29 userId: 平台用户id 29 userId: 平台用户id
30 product: 购买商品名字 30 product: 购买商品名字
31 extraInfo:游戏接入方传入自定义参数,200字符 31 extraInfo:游戏接入方传入自定义参数,200字符
32 currency:币种 (可忽略) 32 currency:币种 (可忽略)
33 amount:支付过程中选中额度,第三方可以忽略此参数 33 amount:支付过程中选中额度,第三方可以忽略此参数
34 realAmount: 最终用户支付的额度 (美元) 34 realAmount: 最终用户支付的额度 (美元)
35 serverId: 第三方区服id 35 serverId: 第三方区服id
36 roleId: 第三方平台角色id 36 roleId: 第三方平台角色id
37 subPayGateId: 支付类型id 37 subPayGateId: 支付类型id
38 sig: 签名 38 sig: 签名
39 39
40 第三方server端返回值: 40 第三方server端返回值:
41 如果第三方验证成功,则返回字符串:success即可。 41 如果第三方验证成功,则返回字符串:success即可。
42 42
43 43
44 3.签名算法 44 3.签名算法
45 -------------------------------- 45 --------------------------------
46 46
47 注意:签名参数不能写成固定数量,一定要获取全部参数并且除sig参数外,然后按照字母升序排列。 47 注意:签名参数不能写成固定数量,一定要获取全部参数并且除sig参数外,然后按照字母升序排列。
48 ```java 48 ```java
49 49
50 /** 50 /**
51 * 签名算法 51 * 签名算法
52 * @param request 52 * @param request
53 * @return 53 * @return
54 */ 54 */
55 public String sig(HttpServletRequest request, String key){ 55 public String sig(HttpServletRequest request, String key){
56 56
57 Enumeration names = request.getParameterNames(); 57 Enumeration names = request.getParameterNames();
58 SortedSet<String> allParams = Sets.newTreeSet(); 58 SortedSet<String> allParams = Sets.newTreeSet();
59 59
60 while (names.hasMoreElements()) { 60 while (names.hasMoreElements()) {
61 String name = (String) names.nextElement(); 61 String name = (String) names.nextElement();
62 if (name.equals("sig")) { 62 if (name.equals("sig")) {
63 continue; 63 continue;
64 } 64 }
65 65
66 try { 66 try {
67 allParams.add(name + "=" + UriUtils.decode(request.getParameter(name), "utf-8")); 67 allParams.add(name + "=" + UriUtils.encode(request.getParameter(name), "utf-8"));
68 } catch (UnsupportedEncodingException e) { 68 } catch (UnsupportedEncodingException e) {
69 e.printStackTrace(); 69 e.printStackTrace();
70 } 70 }
71 } 71 }
72 72
73 String params = Joiner.on("&").join(allParams)+key; 73 String params = Joiner.on("&").join(allParams)+key;
74 String computedToken = DigestUtils.md5DigestAsHex(params.getBytes()); 74 String computedToken = DigestUtils.md5DigestAsHex(params.getBytes());
75 return computedToken; 75 return computedToken;
76 } 76 }
77 ``` 77 ```
78 78
79 79
80 80
81 注意:参数是按字母升序排列 akey=value&bkey=value.... + secretkey 81 注意:参数是按字母升序排列 akey=value&bkey=value.... + secretkey
82 82
83 83
84 4. 错误码对照表 84 4. 错误码对照表
85 ----------------------------- 85 -----------------------------
86 86
87 100000 : 成功 87 100000 : 成功
88 800000 : 应用不存在 88 800000 : 应用不存在
89 100010 : 用户密码错误 89 100010 : 用户密码错误
90 100011 : 用户已经存在 90 100011 : 用户已经存在
91 100012 : 用户不存在 91 100012 : 用户不存在
92 100013 : 用户名不能为空 92 100013 : 用户名不能为空
93 900000 : 订单不存在 93 900000 : 订单不存在
94 900001 : 支付失败 94 900001 : 支付失败
95 900003 : sig签名错误 95 900003 : sig签名错误