luodangjia
2024-11-05 0c569ab4b38d972213eeaf7e8965f33f8ec650fd
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
package com.ruoyi.admin.utils;
 
import org.apache.commons.codec.digest.DigestUtils;
 
import java.util.Map;
import java.util.TreeMap;
 
public class WechatPaySignature {
 
    // 模拟的签名生成函数,实际应用中应使用微信提供的签名算法
    public static String generateSignature(Map<String, String> parameters, String apiKey) {
        // 这里应该使用微信官方提供的签名算法来生成sign
        // 示例仅为说明,实际中不要直接如此使用
        StringBuilder toSign = new StringBuilder();
        for (Map.Entry<String, String> entry : parameters.entrySet()) {
            toSign.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
        }
        toSign.append("key=").append(apiKey);
        // 对字符串进行MD5或其他加密
        return DigestUtils.md5Hex(toSign.toString()).toUpperCase();
    }
 
    public static void main(String[] args) {
        Map<String, String> params = new TreeMap<>();
        params.put("appId", "wx98563d0ec9cf21c8");
        params.put("timeStamp", "1392689076");
        params.put("nonceStr", "e614eka7e99d027403216e8dfa37ddc2");
        params.put("package", "prepay_id=wx01181404626776e879e6764f2760370000");
        params.put("signType", "MD5");
 
        String apiKey = "TA2npSNWmS0GcB0tFFRWA94rm1M0iSFs"; // 你的API密钥
        String paySign = generateSignature(params, apiKey);
 
        System.out.println("paySign: " + paySign);
    }
}