Pu Zhibing
18 小时以前 43d8da7e3b60cb7deb7d31ae0a6c06bff1ae9390
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
80
81
82
83
84
85
86
87
88
package com.supersavedriving.driver.modular.system.util.MiniPay;
 
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.net.URLDecoder;
import cn.hutool.core.net.url.UrlBuilder;
import cn.hutool.crypto.digest.MD5;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.supersavedriving.driver.modular.system.util.ResultUtil;
import com.supersavedriving.driver.modular.system.util.separateAccounts.StrUtil;
import org.springframework.beans.factory.annotation.Value;
 
 
import java.nio.charset.Charset;
import java.util.Map;
import java.util.TreeMap;
 
/**
 * @Author liaojj
 * @Date: 2023/02/20/ 10:15 AM
 * @Description 微信小程序支付
 */
public class MiniAppPay {
 
    public static final String MD5_KEY = "qdg4v9uxeszd8ljtod7yy51hh1xahrj1zfmrwvo1dapdasi968rg2rg59bibl5xnxn3nrbziuwfuw1lax2r040pcc7cdgwx0v9w8sxtku2k7ckt6cyoqvobmj77f6im5";
    public static final String MCH_NO = "M1718787621";
    public static final String APP_ID = "66729e25e4b013c52e29d8d2";
 
    @Value("${callbackPath}")
    private static String callbackPath;//支付回调网关地址
 
 
    public static ResultUtil pay(String openId, String money, String notify, String orderNo){
        String wayCode = "WX_LITE";
 
        JSONObject channelExtra = new JSONObject();
        channelExtra.put("openid",openId); //微信用户OPENID
        channelExtra.put("isSubOpenId", 1);
 
        Map signMap = new TreeMap<>();
        signMap.put("mchNo", MCH_NO);
        signMap.put("appId", APP_ID);
        signMap.put("mchOrderNo", orderNo);
        signMap.put("wayCode", wayCode);
        signMap.put("amount", money); //金额
        signMap.put("currency", "cny");
//        signMap.put("clientIp", "192.168.0.111");
        signMap.put("subject", "商家收款");
        signMap.put("body", "服务费");
        signMap.put("notifyUrl", "http://121.31.232.206:3002/driver"+notify);
        signMap.put("channelExtra", channelExtra.toJSONString());
        signMap.put("reqTime", System.currentTimeMillis());
        signMap.put("version", "1.0");
        signMap.put("signType", "MD5");
 
        String signStr = StrUtil.getSignStr(signMap);
 
        signStr = signStr + "&key=" + MD5_KEY;
 
        String sign = MD5.create().digestHex(signStr);
        signMap.put("sign", sign);
 
        String resutl = HttpUtil.post("https://pay.bozepay.com/api/pay/unifiedOrder", JSONObject.toJSONString(signMap));
 
        return ResultUtil.success(resutl);
    }
    public static void main(String[] args) {
        String notifyUrl = "http://221.182.45.100:3002/driver-server/base/notify?ifCode=alipay&entryType=BANK_CARD&amount=1&accountName=%E6%9D%A8%E5%86%AC11&extParam=11&mchOrderNo=172379564988556426&sign=C98C6F070A6FFE38897A400F7D44603E&transferDesc=%E6%8F%90%E7%8E%B0&bankName=%E4%B8%AD%E5%9B%BD%E5%86%9C%E4%B8%9A%E9%93%B6%E8%A1%8C&reqTime=1723795659973&transferId=T1452874433684580&createdAt=1723795656186&accountNo=6228480462737334914&appId=668209c2e4b02aee68f61735&currency=cny&state=3&mchNo=M1718787621";
        String res = "";
        try {
            notifyUrl = URLDecoder.decode(notifyUrl, Charset.forName("UTF-8"));
            String[] split = notifyUrl.split("[?]");
            String s = split[1];
            JSONObject jsonObject = new JSONObject();
            String[] parameters = s.split("&");
            for (String parameter : parameters) {
                String[] data = parameter.split("=");
                jsonObject.put(data[0],data[1]);
            }
            res = HttpUtil.createPost(notifyUrl).body(jsonObject.toJSONString()).header("Content-Type","application/json").timeout(20000).execute().body();
            System.out.println(res);
        } catch (Exception e) {
            System.out.println(e);
            res = "连接["+ UrlBuilder.of(notifyUrl).getHost() +"]异常:【" + e.getMessage() + "】";
        }
        System.out.println(res);
    }
}