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¤cy=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);
|
}
|
}
|