微信支付填坑笔记
发布时间:2020-12-14 19:44:22 所属栏目:资源 来源:网络整理
导读:table class="text" tr class="li1" td class="ln"pre class="de1"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
<table class="text"> |
<tr class="li1">
<td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
parameters = new TreeMap<>();
? ? ? ? ? ? parameters.put("appid",appid);
? ? ? ? ? ? parameters.put("partnerid",mchId);
? ? ? ? ? ? parameters.put("prepayid",prepayId);
? ? ? ? ? ? parameters.put("noncestr",nonceStr);
? ? ? ? ? ? parameters.put("timestamp",String.valueOf(timestamp));
? ? ? ? ? ? parameters.put("package","Sign=WXPay");
?
? ? ? ? ? ? // 二次签名
? ? ? ? ? ? sign = createSign("UTF-8",parameters);
============================================================================================
public String createSign(String characterEncoding,SortedMap parameters) {
?
? ? ? ? StringBuffer sb = new StringBuffer();
? ? ? ? Set es = parameters.entrySet();// 所有参与传参的参数按照accsii排序(升序)
? ? ? ? Iterator it = es.iterator();
? ? ? ? while (it.hasNext()) {
? ? ? ? ? ? @SuppressWarnings("rawtypes")
? ? ? ? ? ? Map.Entry entry = (Map.Entry) it.next();
? ? ? ? ? ? String k = (String) entry.getKey();
? ? ? ? ? ? Object v = entry.getValue();
? ? ? ? ? ? if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
? ? ? ? ? ? ? ? sb.append(k + "=" + v + "&");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? sb.append("key=" + weixinPayKey); //KEY是商户秘钥
? ? ? ? String sign = MD5Util.MD5Encode(sb.toString(),characterEncoding)
? ? ? ? ? ? ? ? .toUpperCase();
? ? ? ? return sign; // D3A5D13E7838E1D453F4F2EA526C4766
? ? ? ? // D3A5D13E7838E1D453F4F2EA526C4766
? ? }
? ?
? ? ======================================================================================
? ? public class MD5Util {
? ? private static String byteArrayToHexString(byte b[]) {
? ? ? ? StringBuffer resultSb = new StringBuffer();
? ? ? ? for (int i = 0; i < b.length; i++)
? ? ? ? ? ? resultSb.append(byteToHexString(b[i]));
?
? ? ? ? return resultSb.toString();
? ? }
?
? ? private static String byteToHexString(byte b) {
? ? ? ? int n = b;
? ? ? ? if (n < 0)
? ? ? ? ? ? n += 256;
? ? ? ? int d1 = n / 16;
? ? ? ? int d2 = n % 16;
? ? ? ? return hexDigits[d1] + hexDigits[d2];
? ? }
?
? ? public static String MD5Encode(String origin,String charsetname) {
? ? ? ? String resultString = null;
? ? ? ? try {
? ? ? ? ? ? resultString = new String(origin);
? ? ? ? ? ? MessageDigest md = MessageDigest.getInstance("MD5");
? ? ? ? ? ? if (charsetname == null || "".equals(charsetname))
? ? ? ? ? ? ? ? resultString = byteArrayToHexString(md.digest(resultString
? ? ? ? ? ? ? ? ? ? ? ? .getBytes()));
? ? ? ? ? ? else
? ? ? ? ? ? ? ? resultString = byteArrayToHexString(md.digest(resultString
? ? ? ? ? ? ? ? ? ? ? ? .getBytes(charsetname)));
? ? ? ? } catch (Exception exception) {
? ? ? ? }
? ? ? ? return resultString;
? ? }
?
? ? private static final String hexDigits[] = {"0","1","2","3","4","5",? ? ? ? ? ? "6","7","8","9","a","b","c","d","e","f"};
}
参考地址:
http://blog.csdn.net/sinat_17820239/article/details/51334181
http://blog.csdn.net/zhou114108/article/details/52438846
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3
http://blog.csdn.net/xb12369/article/details/45716665
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!