Commit 2276ab36fc03eda7d271b67147f8bb5b825745e3

Authored by 张洪涛
1 parent 038f1b0438
Exists in master

fix code

Showing 1 changed file with 17 additions and 22 deletions Side-by-side Diff

... ... @@ -46,32 +46,27 @@
46 46  
47 47 /**
48 48 * 签名算法
49   - * @param userOrder
50   - * @param key
  49 + * @param request
51 50 * @return
52 51 */
53   - private String sig(UserOrder userOrder, String key) {
54   -
  52 + public String sig(HttpServletRequest request){
  53 +
  54 + Enumeration names = request.getParameterNames();
55 55 SortedSet<String> allParams = Sets.newTreeSet();
56   - try {
57   -
58   - allParams.add(Constants.Keys.ORDER_ID + "=" + URLEncoder.encode(userOrder.getId()+"", "utf-8"));
59   - allParams.add(Constants.Keys.APPID + "=" + URLEncoder.encode(userOrder.getAppId()+"", "utf-8"));
60   - allParams.add(Constants.Keys.USER_ID + "=" + URLEncoder.encode(userOrder.getUserId()+"", "utf-8"));
61   - allParams.add(Constants.Keys.PRODUCT + "=" + URLEncoder.encode(userOrder.getProduct(), "utf-8"));
62   -
63   - allParams.add(Constants.Keys.EXTRA_INFO + "=" + URLEncoder.encode(userOrder.getExtraInfo(), "utf-8"));
64   - allParams.add(Constants.Keys.CURRENCY + "=" + URLEncoder.encode(userOrder.getCurrency(), "utf-8"));
65   - allParams.add(Constants.Keys.AMOUNT + "=" + URLEncoder.encode(userOrder.getAmount()+"", "utf-8"));
66   - allParams.add(Constants.Keys.REAL_AMOUNT + "=" + URLEncoder.encode(userOrder.getRealAmount()+"", "utf-8"));
67   -
68   - } catch (UnsupportedEncodingException e) {
69   - e.printStackTrace();
  56 +
  57 + while (names.hasMoreElements()) {
  58 + String name = (String) names.nextElement();
  59 + if (name.equals("sig")) {
  60 + continue;
  61 + }
  62 +
  63 + try {
  64 + allParams.add(name + "=" + UriUtils.decode(request.getParameter(name), "utf-8"));
  65 + } catch (UnsupportedEncodingException e) {
  66 + e.printStackTrace();
  67 + }
70 68 }
71   -
72   - String params = Joiner.on("&").join(allParams) + key;
73   - log.info("sig:" + params);
74   - String computedToken = DigestUtils.md5DigestAsHex(params.getBytes());
  69 + String computedToken = DigestUtils.md5DigestAsHex(Joiner.on("&").join(allParams).getBytes());
75 70 return computedToken;
76 71 }
77 72 ```