Commit d0017e7e1472add128ab1281819bfd3d23180168
1 parent
efdc53de10
Exists in
master
init document
Showing 1 changed file with 55 additions and 0 deletions Side-by-side Diff
doc/server_document.md
... | ... | @@ -0,0 +1,55 @@ |
1 | +1. 充值通知第三方服务端接口(需提供回调地址) | |
2 | +----------------------------- | |
3 | + 参数列表: | |
4 | + orderId: 订单id | |
5 | + appId: 游戏接入分配appid | |
6 | + userId: 平台用户id | |
7 | + product: 购买商品名字 | |
8 | + extraInfo:游戏接入方传入自定义参数,200字符 | |
9 | + currency:币种 (目前仅有CNY) | |
10 | + amount:充值金额(分) | |
11 | + sig: 签名(算法详见2) | |
12 | + | |
13 | + 第三方server端返回值: | |
14 | + 如果第三方验证成功,则返回字符串"success"即可,否则会通知10次后停止. | |
15 | + | |
16 | + | |
17 | +2.签名算法 | |
18 | +-------------------------------- | |
19 | + | |
20 | + 注意:签名参数不能写成固定数量,一定要获取全部参数并且除sig参数外,然后按照字母升序排列。 | |
21 | +```java | |
22 | + | |
23 | + /** | |
24 | + * 签名算法 | |
25 | + * @param request | |
26 | + * @return | |
27 | + */ | |
28 | + public String sig(HttpServletRequest request, String key){ | |
29 | + | |
30 | + Enumeration names = request.getParameterNames(); | |
31 | + SortedSet<String> allParams = Sets.newTreeSet(); | |
32 | + | |
33 | + while (names.hasMoreElements()) { | |
34 | + String name = (String) names.nextElement(); | |
35 | + if (name.equals("sig")) { | |
36 | + continue; | |
37 | + } | |
38 | + | |
39 | + try { | |
40 | + allParams.add(name + "=" + URLEncoder.encode(request.getParameter(name), "utf-8")); | |
41 | + } catch (UnsupportedEncodingException e) { | |
42 | + e.printStackTrace(); | |
43 | + } | |
44 | + } | |
45 | + | |
46 | + String params = Joiner.on("&").join(allParams)+key; | |
47 | + String computedToken = DigestUtils.md5DigestAsHex(params.getBytes()); | |
48 | + return computedToken; | |
49 | + } | |
50 | +``` | |
51 | + | |
52 | + | |
53 | + | |
54 | + 注意:参数是按字母升序排列 akey=value&bkey=value.... + secretkey | |
55 | + |