mitao
2025-05-20 179c4d64313c9b7572778da4aaaf6c6584fe457d
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/PayUtil.java
@@ -1,15 +1,16 @@
package com.panzhihua.common.utlis;
import org.jdom2.input.SAXBuilder;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.*;
import org.jdom2.input.SAXBuilder;
public class PayUtil {
@@ -20,13 +21,14 @@
        InetAddress ia = null;
        String localip = null;
        try {
            ia = ia.getLocalHost();
            ia = InetAddress.getLocalHost();
            localip = ia.getHostAddress();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return localip;
    }
    @SuppressWarnings("rawtypes")
    public static String getRequestXml(SortedMap<Object, Object> parameters) {
        StringBuffer sb = new StringBuffer();
@@ -34,9 +36,9 @@
        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();
            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 {
@@ -46,17 +48,18 @@
        sb.append("</xml>");
        return sb.toString();
    }
    /**
     * 创建签名Sign
     */
    @SuppressWarnings("rawtypes")
    public static String createSign(String characterEncoding,SortedMap<Object, Object> parameters, String key) {
    public static String createSign(String characterEncoding, SortedMap<Object, Object> parameters, String key) {
        StringBuffer sb = new StringBuffer();
        Set es = parameters.entrySet();
        Iterator<?> it = es.iterator();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            String k = (String) entry.getKey();
            Map.Entry entry = (Map.Entry)it.next();
            String k = (String)entry.getKey();
            if (entry.getValue() != null || !"".equals(entry.getValue())) {
                String v = String.valueOf(entry.getValue());
                if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
@@ -68,17 +71,19 @@
        String sign = "";
        try {
            sign = MD5(sb.toString());
        }catch (Exception e){
        } catch (Exception e) {
            return e.getMessage();
        }
        return sign;
    }
    /**
     * 生成随机数
     */
    public static String makeUUID(int len) {
        return UUID.randomUUID().toString().replaceAll("-", "").substring(0, len);
    }
    /**
     * 生成订单号
     */
@@ -86,6 +91,7 @@
        SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
        return sdf.format(new Date()) + makeUUID(16);
    }
    /**
     * 解析xml
     */
@@ -95,14 +101,14 @@
            return null;
        }
        Map m = new HashMap();
        InputStream in = new ByteArrayInputStream(strxml.getBytes("UTF-8"));
        InputStream in = new ByteArrayInputStream(strxml.getBytes(StandardCharsets.UTF_8));
        SAXBuilder builder = new SAXBuilder();
        org.jdom2.Document doc = builder.build(in);
        org.jdom2.Element root = doc.getRootElement();
        List list = root.getChildren();
        Iterator it = list.iterator();
        while (it.hasNext()) {
            org.jdom2.Element e = (org.jdom2.Element) it.next();
            org.jdom2.Element e = (org.jdom2.Element)it.next();
            String k = e.getName();
            String v = "";
            List children = e.getChildren();
@@ -113,10 +119,11 @@
            }
            m.put(k, v);
        }
        //关闭流
        // 关闭流
        in.close();
        return m;
    }
    /**
     * 获取子节点的xml
     */
@@ -125,7 +132,7 @@
        if (!children.isEmpty()) {
            Iterator it = children.iterator();
            while (it.hasNext()) {
                org.jdom2.Element e = (org.jdom2.Element) it.next();
                org.jdom2.Element e = (org.jdom2.Element)it.next();
                String name = e.getName();
                String value = e.getTextNormalize();
                List list = e.getChildren();
@@ -139,27 +146,31 @@
        }
        return sb.toString();
    }
    /**
     * 转换金额到整型
     */
    public static String moneyToIntegerStr(BigDecimal money) {
        int amount = money.multiply(new BigDecimal((100)))
                .setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
        int amount = money.multiply(new BigDecimal((100))).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
        return String.valueOf(amount);
    }
    /**
     * 微信下单,map to xml
     * @param params 参数
     *
     * @param params
     *            参数
     * @return String
     */
    public static String mapToXml(Map<String, String> params) {
        StringBuilder xml = new StringBuilder();
        xml.append("<xml>");
        for (Map.Entry<String, String> entry : params.entrySet()) {
            String key   = entry.getKey();
            String key = entry.getKey();
            String value = entry.getValue();
            // 略过空值
            if (StringUtils.isEmpty(value)) continue;
            if (StringUtils.isEmpty(value))
                continue;
            xml.append("<").append(key).append("><![CDATA[");
            xml.append(entry.getValue());
            xml.append("]]></").append(key).append(">");
@@ -171,19 +182,19 @@
    /**
     * 生成 MD5
     *
     * @param data 待处理数据
     * @param data
     *            待处理数据
     * @return MD5结果
     */
    public static String MD5(String data) throws Exception {
        java.security.MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] array = md.digest(data.getBytes("UTF-8"));
        byte[] array = md.digest(data.getBytes(StandardCharsets.UTF_8));
        StringBuilder sb = new StringBuilder();
        for (byte item : array) {
            sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));
            sb.append(Integer.toHexString((item & 0xFF) | 0x100), 1, 3);
        }
        return sb.toString().toUpperCase();
    }
    public static String create_timestamp() {
        return Long.toString(System.currentTimeMillis() / 1000);