From acccff9860b271d55c55dc87486f7c20b9896e6c Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 13 一月 2025 16:19:54 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java | 28 ++++++++++++++++++---------- 1 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java index d503443..6ce1a8b 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/payment/TransferUtil.java @@ -1,5 +1,6 @@ package com.ruoyi.account.util.payment; +import cn.hutool.http.ContentType; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; @@ -30,6 +31,10 @@ * 商户号 */ private static final String merchantNo = "888122600004175"; + /** + * 平台-报备商户号 + */ + public static final String sysTradeMerchantNo = "777168500885852"; private static final String format = "yyyy-MM-dd HH:mm:ss"; /** @@ -46,11 +51,12 @@ public static SinglePayResult singlePay(SinglePay singlePay){ String url = "https://www.joinpay.com/payment/pay/singlePay"; HttpRequest post = HttpUtil.createPost(url); + post.contentType(ContentType.JSON.toString()); JSONObject body = new JSONObject(); //商户编号 body.put("userNo", merchantNo); //报备商户号 - body.put("tradeMerchantNo", singlePay.getTradeMerchantNo()); +// body.put("tradeMerchantNo", singlePay.getTradeMerchantNo()); //产品类型 body.put("productCode", "BANK_PAY_DAILY_ORDER"); //交易请求时间 @@ -128,6 +134,7 @@ public static SinglePayQueryResult singlePayQuery(String merchantOrderNo){ String url = "https://www.joinpay.com/payment/pay/singlePayQuery"; HttpRequest post = HttpUtil.createPost(url); + post.contentType(ContentType.JSON.toString()); JSONObject body = new JSONObject(); //商户编号 body.put("userNo", merchantNo); @@ -171,6 +178,7 @@ public static AccountBalanceQueryResult accountBalanceQuery(){ String url = "https://www.joinpay.com/payment/pay/accountBalanceQuery"; HttpRequest post = HttpUtil.createPost(url); + post.contentType(ContentType.JSON.toString()); JSONObject body = new JSONObject(); //商户编号 body.put("userNo", merchantNo); @@ -207,18 +215,12 @@ - public static String sign(JSONObject body) throws Exception{ + public static String sign(JSONObject body) { + //构建字段顺序必须按照文档签名顺序 Set<Map.Entry<String, Object>> entries = body.entrySet(); - List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries); - // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序) - Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() { - public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) { - return (o1.getKey()).toString().compareTo(o2.getKey()); - } - }); // 构造签名键值对的格式 StringBuilder sb = new StringBuilder(); - for (Map.Entry<String, Object> item : infoIds) { + for (Map.Entry<String, Object> item : entries) { if (item.getKey() != null || item.getKey() != "") { Object val = item.getValue(); if (!(val == "" || val == null)) { @@ -227,7 +229,13 @@ } } sb.append(key); + log.info("待签名串:{}", sb.toString()); return MD5AndKL.MD5(sb.toString()); } + + public static void main(String[] args) { + TransferUtil.accountBalanceQuery(); + } + } -- Gitblit v1.7.1