加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

微信支付填坑笔记

发布时间: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
<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(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

<table class="text">

    推荐文章
      热点阅读