diff --git a/ServerDocument.md b/ServerDocument.md index dee4919..95a6af6 100644 --- a/ServerDocument.md +++ b/ServerDocument.md @@ -46,32 +46,27 @@ /** * 签名算法 - * @param userOrder - * @param key + * @param request * @return */ - private String sig(UserOrder userOrder, String key) { - + public String sig(HttpServletRequest request){ + + Enumeration names = request.getParameterNames(); SortedSet 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(); + + while (names.hasMoreElements()) { + String name = (String) names.nextElement(); + if (name.equals("sig")) { + continue; + } + + try { + allParams.add(name + "=" + UriUtils.decode(request.getParameter(name), "utf-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } } - - String params = Joiner.on("&").join(allParams) + key; - log.info("sig:" + params); - String computedToken = DigestUtils.md5DigestAsHex(params.getBytes()); + String computedToken = DigestUtils.md5DigestAsHex(Joiner.on("&").join(allParams).getBytes()); return computedToken; } ```