java微信支付二

2025-11-22 09:53:33

1、public class PayToolUtil {

    /** 

     * 是否签名正确,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 

     * @return boolean 

     */  

    public static boolean isTenpaySign(String characterEncoding, SortedMap<Object, Object> packageParams, String API_KEY) {  

        StringBuffer sb = new StringBuffer();  

        Set es = packageParams.entrySet();  

        Iterator it = es.iterator();  

        while(it.hasNext()) {  

            Map.Entry entry = (Map.Entry)it.next();  

            String k = (String)entry.getKey();  

            String v = (String)entry.getValue();  

            if(!"sign".equals(k) && null != v && !"".equals(v)) {  

                sb.append(k + "=" + v + "&");  

            }  

        }  

           

        sb.append("key=" + API_KEY);  

           

   

java微信支付二

2、     //算出摘要  

        String mysign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toLowerCase();  

        String tenpaySign = ((String)packageParams.get("sign")).toLowerCase();  

         

        //System.out.println(tenpaySign + "    " + mysign);  

        return tenpaySign.equals(mysign);  

    }  

   

    /** 

     * @author 

     * @date 2016-4-22 

     * @Description:sign签名 

     * @param characterEncoding 

     *            编码格式 

     * @param parameters 

     *            请求参数 

     * @return 

     */  

    public static String createSign(String characterEncoding, SortedMap<Object, Object> packageParams, String API_KEY) {  

        StringBuffer sb = new StringBuffer();  

        Set es = packageParams.entrySet();  

        Iterator it = es.iterator();  

        while (it.hasNext()) {  

            Map.Entry entry = (Map.Entry) it.next();  

            String k = (String) entry.getKey();  

            String v = (String) entry.getValue();  

            if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {  

                sb.append(k + "=" + v + "&");  

            }  

        }  

        sb.append("key=" + API_KEY);  

        String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();  

        return sign;  

    }  

   

   

java微信支付二

3、 /** 

     * @author 

     * @date 2016-4-22 

     * @Description:将请求参数转换为xml格式的string 

     * @param parameters 

     *            请求参数 

     * @return 

     */  

    public static String getRequestXml(SortedMap<Object, Object> parameters) {  

        StringBuffer sb = new StringBuffer();  

        sb.append("<xml>");  

        Set es = parameters.entrySet();  

        Iterator it = es.iterator();  

        while (it.hasNext()) {  

            Map.Entry entry = (Map.Entry) it.next();  

            String k = (String) entry.getKey();  

            String v = (String) entry.getValue();  

            if ("attach".equalsIgnoreCase(k) || "body".equalsIgnoreCase(k) || "sign".equalsIgnoreCase(k)) {  

                sb.append("<" + k + ">" + "<![CDATA[" + v + "]]></" + k + ">");  

            } else {  

                sb.append("<" + k + ">" + v + "</" + k + ">");  

            }  

        }  

        sb.append("</xml>");  

        return sb.toString();  

    }  

   

    

java微信支付二

4、  

/** 

     * 取出一个指定长度大小的随机正整数. 

     *  

     * @param length 

     *            int 设定所取出随机数的长度。length小于11 

     * @return int 返回生成的随机数。 

     */  

    public static int buildRandom(int length) {  

        int num = 1;  

        double random = Math.random();  

        if (random < 0.1) {  

            random = random + 0.1;  

        }  

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

            num = num * 10;  

        }  

        return (int) ((random * num));  

    }  

   

  

java微信支付二

5、/** 

     * 获取当前时间 yyyyMMddHHmmss 

     *  

     * @return String 

     */  

    public static String getCurrTime() {  

        Date now = new Date();  

        SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMddHHmmss");  

        String s = outFormat.format(now);  

        return s;  

    }  

     

}

java微信支付二

6、public class PayConfigUtil {

//以下相关参数需要根据自己实际情况进行配置

public static String APP_ID = "wx9******60";// appid

public static String APP_SECRET = "";// appsecret  

public static String MCH_ID = "15*****2";// 你的商业号

public static String API_KEY = "hua******3261548";// API key 

public static String CREATE_IP = "8.8.8.8";// key 电脑ip

public static String UFDODER_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder";//统一下单接口 

public static String NOTIFY_URL = "http://*****/";//回调地址

}

java微信支付二

7、这些方法都是工具类,可以直接复制到工程里面直接使用

java微信支付二

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢