日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 微信支付 md5_微信支付MD5签名算法实现

發(fā)布時間:2024/10/8 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 微信支付 md5_微信支付MD5签名算法实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

調(diào)用微信統(tǒng)一下單接口生成預(yù)支付訂單:有沒有遇到這個問題呢?

微信支付簽名算法文檔:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

/**

* 微信支付簽名算法sign

* @param parameters

* @return

*/

public String createSign(SortedMapparameters){

StringBuffer sb = new StringBuffer();

Set es = parameters.entrySet();//所有參與傳參的參數(shù)按照accsii排序(升序)

Iterator it = es.iterator();

while(it.hasNext()) {

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=" + this.wxpayKey);

System.out.println("簽名字符串:"+sb.toString());

String sign = md5Password(sb.toString()).toUpperCase();

return sign;

}

/**

* 生成32位md5碼

*

* @param key

* @return

*/

public static String md5Password(String key) {

char hexDigits[] = {

'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'

};

try {

byte[] btInput = key.getBytes();

// 獲得MD5摘要算法的 MessageDigest 對象

MessageDigest mdInst = MessageDigest.getInstance("MD5");

// 使用指定的字節(jié)更新摘要

mdInst.update(btInput);

// 獲得密文

byte[] md = mdInst.digest();

// 把密文轉(zhuǎn)換成十六進(jìn)制的字符串形式

int j = md.length;

char str[] = new char[j * 2];

int k = 0;

for (int i = 0; i < j; i++) {

byte byte0 = md[i];

str[k++] = hexDigits[byte0 >>> 4 & 0xf];

str[k++] = hexDigits[byte0 & 0xf];

}

return new String(str);

} catch (Exception e) {

return null;

}

}

總結(jié):主要是利用了java的SortedMap實(shí)現(xiàn)元素排序的有序性;

總結(jié)

以上是生活随笔為你收集整理的java 微信支付 md5_微信支付MD5签名算法实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。