1 /** 2 * 微信支付加密工具,需要加入key 3 */ 4 public static String signature(Map<String, String> map, String key) { 5 Set<String> keySet = map.keySet(); 6 String[] str = new String[map.size()]; 7 StringBuilder tmp = new StringBuilder(); 8 // 进行字典排序 9 str = keySet.toArray(str); 10 Arrays.sort(str); 11 for (int i = 0; i < str.length; i++) { 12 String t = str[i] + "=" + map.get(str[i]) + "&"; 13 tmp.append(t); 14 } 15 if (StringUtils.isNotBlank(key)) { 16 tmp.append("key=" + key); 17 } 18 String tosend = tmp.toString(); 19 MessageDigest md = null; 20 byte[] bytes = null; 21 try { 22 23 md = MessageDigest.getInstance("MD5"); 24 bytes = md.digest(tosend.getBytes("utf-8")); 25 } catch (Exception e) { 26 e.printStackTrace(); 27 } 28 29 String singe = byteToStr(bytes); 30 return singe.toUpperCase(); 31 32 }
1 //网页调起的时候 2 String time = Long.toString(System.currentTimeMillis()); 3 back.put("appId", mchappid); 4 back.put("timeStamp", time); 5 back.put("nonceStr", "5K8264ILTKCH16CQ2502SI8ZNMTM67VS"); 6 back.put("package", "prepay_id=" + order.getPrepay_id()); 7 back.put("signType", "MD5"); 8 String sign2 = SignatureUtils.signature(back, wx_key); 9 10 JSONObject jsonObject = new JSONObject(); 11 jsonObject.put("appId", mchappid); 12 jsonObject.put("timeStamp", time); 13 jsonObject.put("nonceStr", "5K8264ILTKCH16CQ2502SI8ZNMTM67VS"); 14 jsonObject.put("package", "prepay_id=" + order.getPrepay_id()); 15 jsonObject.put("signType", "MD5"); 16 jsonObject.put("paySign", sign2); 17 18 result.put("status", "success"); 19 result.put("msg", "下单成功"); 20 result.put("obj", jsonObject); 21 return result;
1 //APP调起的时候,请注意,安卓端不能用驼峰法,所有的key必须使用小写 2 String time = Long.toString(System.currentTimeMillis()); 3 back.put("appid", app_mchappid); 4 back.put("timestamp", time); 5 back.put("partnerid", app_mchid); 6 back.put("noncestr", "5K8264ILTKCH16CQ2502SI8ZNMTM67VS"); 7 back.put("prepayid", order.getPrepay_id()); 8 back.put("package", "Sign=WXPay"); 9 String sign2 = SignatureUtils.signature(back, wx_key); 10 11 JSONObject jsonObject = new JSONObject(); 12 jsonObject.put("appid", app_mchappid); 13 jsonObject.put("timestamp", time); 14 jsonObject.put("partnerid", app_mchid); 15 jsonObject.put("noncestr", "5K8264ILTKCH16CQ2502SI8ZNMTM67VS"); 16 jsonObject.put("prepayid", order.getPrepay_id()); 17 //jsonObject.put("package", "Sign=WXPay"); 18 jsonObject.put("sign", sign2); 19 result.put("status", "success"); 20 result.put("msg", "下单成功"); 21 result.put("obj", jsonObject); 22 return result;
原文:http://www.cnblogs.com/Seanit/p/5136551.html