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 | + |