From d968a9bada03aafbb9a7a9ebc7545fd953af6326 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Mon, 17 Apr 2023 10:20:11 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E6=96=B0=E5=A2=9Ehuifu=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pom.xml b/pom.xml index 7b3ed0d34..2dd5dfc90 100644 --- a/pom.xml +++ b/pom.xml @@ -35,6 +35,7 @@ 20.0 2.5.14 4.1.75.Final + 1.2.10 @@ -280,6 +281,20 @@ 5.7.3 + + + com.huifu.adapay.core + adapay-core-sdk + ${huifu.version} + + + + + com.huifu.adapay + adapay-java-sdk + ${huifu.version} + + From 5ff9943688dc52cd931975275f0fb236f6f9cdfa Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Mon, 17 Apr 2023 15:49:02 +0800 Subject: [PATCH 02/23] update huifu --- jsowell-pile/pom.xml | 10 + .../jsowell/adapay/demo/AdapayToolsDemo.java | 134 +++ .../com/jsowell/adapay/demo/BaseDemo.java | 7 + .../com/jsowell/adapay/demo/BillDemo.java | 90 ++ .../jsowell/adapay/demo/CorpMemberDemo.java | 173 ++++ .../com/jsowell/adapay/demo/FastPayDemo.java | 122 +++ .../com/jsowell/adapay/demo/MainDemo.java | 187 ++++ .../com/jsowell/adapay/demo/MemberDemo.java | 244 +++++ .../com/jsowell/adapay/demo/PaymentDemo.java | 964 ++++++++++++++++++ .../PaymentRegionAndRequestTimeOutDemo.java | 149 +++ .../com/jsowell/adapay/demo/RefundDemo.java | 157 +++ .../adapay/demo/SettleAccountDemo.java | 853 ++++++++++++++++ 12 files changed, 3090 insertions(+) create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/AdapayToolsDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/BaseDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java diff --git a/jsowell-pile/pom.xml b/jsowell-pile/pom.xml index 161983f02..7b3711aba 100644 --- a/jsowell-pile/pom.xml +++ b/jsowell-pile/pom.xml @@ -77,6 +77,16 @@ com.fasterxml.jackson.dataformat jackson-dataformat-avro + + + com.huifu.adapay.core + adapay-core-sdk + + + + com.huifu.adapay + adapay-java-sdk + diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/AdapayToolsDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/AdapayToolsDemo.java new file mode 100644 index 000000000..74a07f63a --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/AdapayToolsDemo.java @@ -0,0 +1,134 @@ +package com.jsowell.adapay.demo; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.AdapayTools; +import com.huifu.adapay.model.Bill; +import com.huifu.adapay.model.Wallet; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author yingyong.wang + */ +public class AdapayToolsDemo extends com.huifu.adapay.demo.BaseDemo { + + /** + * 获取银联用户号 + * + * @throws Exception 异常 + */ + public static void executeToolsTest(String appId, String merchantKey) throws Exception { + Map unionParam = new HashMap(2); + unionParam.put("order_no", "20190912"); + unionParam.put("app_id", appId); + unionParam.put("user_auth_code", "20190912"); + unionParam.put("app_up_identifier", "20190912"); + Map result = AdapayTools.unionUserId(unionParam, merchantKey); + + String errorCode = (String) result.get("error_code"); + + if (null != errorCode) { + + System.out.println("对账单下载,请求参数:" + JSON.toJSONString(unionParam)); + System.out.println("对账单下载,返回参数:" + JSON.toJSONString(result)); + + } else { + System.out.println("对账单下载,成功"); + } + + } + + /** + * 获取银联用户号 + * + * @throws Exception 异常 + */ + public static void executeToolsTest(String appId) throws Exception { + Map unionParam = new HashMap(2); + unionParam.put("order_no", "jsdk_payment_" + System.currentTimeMillis()); + unionParam.put("app_id", appId); + unionParam.put("user_auth_code", "5yRGbi+IRda5khIQoQf1Hw=="); + unionParam.put("app_up_identifier", "CloudPay"); + Map result = AdapayTools.unionUserId(unionParam); + System.out.println("获取银联云闪付用户标识:" + JSON.toJSONString(result)); + String errorCode = (String) result.get("error_code"); + + if (null != errorCode) { + + System.out.println("获取银联云闪付用户标识,请求参数:" + JSON.toJSONString(unionParam)); + System.out.println("获取银联云闪付用户标识,返回参数:" + JSON.toJSONString(result)); + + } else { + System.out.println("获取银联云闪付用户标识,成功"); + } + + } + + + /** + * 钱包登录申请 + * + * @throws Exception 异常 + */ + public static void executeLoginTest(String appId, String merchantKey) throws Exception { + Map queryParams = new HashMap(5); + queryParams.put("ip", "127.0.0.1"); + queryParams.put("member_id", "0"); + //queryParams.put("member_id", "iris1234_14151"); + queryParams.put("app_id", appId); + Map login = Wallet.login(queryParams, merchantKey); + if (login != null && "succeeded".equals(login.get("status"))) { + String formString = login.get("redirect_url").toString(); + System.out.println("跳转地址:" + formString); + } + + } + + /** + * 钱包登录申请 + * + * @throws Exception 异常 + */ + public static void executeLoginTest(String appId) throws Exception { + Map queryParams = new HashMap(5); + queryParams.put("ip", "127.0.0.1"); + queryParams.put("member_id", "0"); + //queryParams.put("member_id", "iris1234_14151"); + queryParams.put("app_id", appId); + Map login = Wallet.login(queryParams); + if (login != null && "succeeded".equals(login.get("status"))) { + String formString = login.get("redirect_url").toString(); + System.out.println("跳转地址:" + formString); + } + + } + + /** + * 执行一个下载对账文件操作 + * + * @return 下载链接 + * @throws Exception 异常 + */ + public Map executeBillDownLoad() throws Exception { + + + Map downloadParam = new HashMap(2); + downloadParam.put("bill_date", "20190912"); + + Map download = Bill.download(downloadParam); + + String errorCode = (String) download.get("error_code"); + + if (null != errorCode) { + + System.out.println("对账单下载,请求参数:" + JSON.toJSONString(downloadParam)); + System.out.println("对账单下载,返回参数:" + JSON.toJSONString(download)); + + } else { + System.out.println("对账单下载,成功"); + } + return download; + } + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BaseDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BaseDemo.java new file mode 100644 index 000000000..4c2128169 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BaseDemo.java @@ -0,0 +1,7 @@ +package com.huifu.adapay.demo; + +/** + * @author jane.zhao + */ +public class BaseDemo { +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java new file mode 100644 index 000000000..38f8fd1b1 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java @@ -0,0 +1,90 @@ +package com.huifu.adapay.demo; + +import java.util.HashMap; +import java.util.Map; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.AdapayTools; +import com.huifu.adapay.model.Bill; + +/** + * @author yingyong.wang + */ +public class BillDemo extends BaseDemo{ + + /** + * 运行账单下载接口 + * @throws Exception 异常 + */ + public static void executeBillTest(String merchantKey) throws Exception{ + BillDemo demo = new BillDemo(); + + Map download = demo.executeBillDownLoad(merchantKey); + + } + + /** + * 运行账单下载接口 + * @throws Exception 异常 + */ + public static void executeBillTest() throws Exception{ + BillDemo demo = new BillDemo(); + + Map download = demo.executeBillDownLoad(); + + } + + /** + * 执行一个下载对账文件操作 + * @return 下载链接 + * @throws Exception 异常 + */ + public Map executeBillDownLoad(String merchantKey) throws Exception { + System.out.println("=======execute download begin======="); + + Map downloadParam = new HashMap(2); + downloadParam.put("bill_date", "20190912"); + Map download = Bill.download(downloadParam, merchantKey); + + String errorCode = (String)download.get("error_code"); + + if(null != errorCode){ + + System.out.println("对账单下载,请求参数:" + JSON.toJSONString(downloadParam)); + System.out.println("对账单下载,返回参数:" + JSON.toJSONString(download)); + + }else{ + System.out.println("对账单下载,成功"); + } + + + return download; + } + + /** + * 执行一个下载对账文件操作 + * @return 下载链接 + * @throws Exception 异常 + */ + public Map executeBillDownLoad() throws Exception { + + + Map downloadParam = new HashMap(2); + downloadParam.put("bill_date", "20190912"); + + Map download = AdapayTools.downloadBill(downloadParam); + + String errorCode = (String)download.get("error_code"); + + if(null != errorCode){ + + System.out.println("对账单下载,请求参数:" + JSON.toJSONString(downloadParam)); + System.out.println("对账单下载,返回参数:" + JSON.toJSONString(download)); + + }else{ + System.out.println("对账单下载,成功"); + } + return download; + } + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java new file mode 100644 index 000000000..db283d018 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java @@ -0,0 +1,173 @@ +package com.huifu.adapay.demo; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.CorpMember; + +/** + * @author yingyong.wang + */ +public class CorpMemberDemo extends BaseDemo { + + /** + * 运行 CorpMember 类接口 + * + * @throws Exception 异常 + */ + public static void executeCorpMemberTest(String merchantKey, String app_id) throws Exception { + CorpMemberDemo demo = new CorpMemberDemo(); + Map member = demo.executeCreateMember(merchantKey, app_id); + demo.executeQueryMember(merchantKey, (String) member.get("member_id"), app_id); + + } + + + /** + * 创建 CorpMember + * + * @return 创建的CorpMember 对象 + * @throws Exception 异常 + */ + public Map executeCreateMember(String merchantKey, String app_id) throws Exception { + System.out.println("=======execute Create CorpMember begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", "jsdk_member_" + System.currentTimeMillis()); + memberParams.put("app_id", app_id); + memberParams.put("order_no", "jsdk_order_" + System.currentTimeMillis()); + memberParams.put("social_credit_code_expires", "1111"); + memberParams.put("business_scope", "123"); + + memberParams.put("name", "中国测试有限公司"); + memberParams.put("prov_code", "0011"); + memberParams.put("area_code", "1100"); + memberParams.put("social_credit_code", "201932658452655"); + memberParams.put("legal_person", "张测试"); + memberParams.put("legal_cert_id", "321485199014234852"); + memberParams.put("legal_cert_id_expires", "20220112"); + memberParams.put("legal_mp", "13958465215"); + memberParams.put("address", "中国上海"); + memberParams.put("zip_code", "225485"); + memberParams.put("telphone", "41164452"); + memberParams.put("email", "ceshi@qq.com"); + memberParams.put("bank_code", "652142"); + memberParams.put("bank_acct_type", "1"); + memberParams.put("card_no", "622546895642156"); + memberParams.put("card_name", "中国测试有限公司"); + File file = new File("/Users/will/Project/Adapay/AdapayJava/AdapayDemo/src/main/java/com/huifu/adapay/demo/归档.zip"); + + System.out.println("创建企业用户,请求参数:" + JSON.toJSONString(memberParams) ); + Map member = CorpMember.create(memberParams, file, merchantKey); + System.out.println("创建企业用户,返回参数:" + JSON.toJSONString(member) ); + + + System.out.println("=======execute Create CorpMember end======="); + + return member; + + } + + /** + * 查询 CorpMember + * + * @param member_id 待查询的member_id + * @return 查询的 CorpMember 对象 + * @throws Exception 异常 + */ + public Map executeQueryMember(String merchantKey, String member_id,String app_id) throws Exception { + System.out.println("=======execute query CorpMember begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", member_id); + memberParams.put("app_id", app_id); + System.out.println("查询企业用户,请求参数:"+JSON.toJSONString(memberParams)); + Map member = CorpMember.query(memberParams, merchantKey); + System.out.println("查询企业用户,返回参数:"+JSON.toJSONString(member)); + + System.out.println("=======execute query CorpMember end======="); + + return member; + } + + /** + * 运行 CorpMember 类接口 + * + * @throws Exception 异常 + */ + public static void executeCorpMemberTest( String app_id) throws Exception { + CorpMemberDemo demo = new CorpMemberDemo(); + Map member = demo.executeCreateMember( app_id); + demo.executeQueryMember( (String) member.get("member_id"), app_id); + + } + + + /** + * 创建 CorpMember + * + * @return 创建的CorpMember 对象 + * @throws Exception 异常 + */ + public Map executeCreateMember( String app_id) throws Exception { + System.out.println("=======execute Create CorpMember begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", "jsdk_member_" + System.currentTimeMillis()); + memberParams.put("app_id", app_id); + memberParams.put("order_no", "jsdk_order_" + System.currentTimeMillis()); + memberParams.put("social_credit_code_expires", "1111"); + memberParams.put("business_scope", "123"); + + memberParams.put("name", "中国测试有限公司"); + memberParams.put("prov_code", "0011"); + memberParams.put("area_code", "1100"); + memberParams.put("social_credit_code", "201932658452655"); + memberParams.put("legal_person", "张测试"); + memberParams.put("legal_cert_id", "321485199014234852"); + memberParams.put("legal_cert_id_expires", "20220112"); + memberParams.put("legal_mp", "13958465215"); + memberParams.put("address", "中国上海"); + memberParams.put("zip_code", "225485"); + memberParams.put("telphone", "41164452"); + memberParams.put("email", "ceshi@qq.com"); + memberParams.put("bank_code", "652142"); + memberParams.put("bank_acct_type", "1"); + memberParams.put("card_no", "622546895642156"); + memberParams.put("card_name", "中国测试有限公司"); + String path= CorpMemberDemo.class.getClassLoader().getResource("").getPath()+"test.zip"; + + File file = new File(path); + System.out.println("创建企业用户,请求参数:" + JSON.toJSONString(memberParams) ); + Map member = CorpMember.create(memberParams, file); + System.out.println("创建企业用户,返回参数:" + JSON.toJSONString(member) ); + + + System.out.println("=======execute Create CorpMember end======="); + + return member; + + } + + /** + * 查询 CorpMember + * + * @param member_id 待查询的member_id + * @return 查询的 CorpMember 对象 + * @throws Exception 异常 + */ + public Map executeQueryMember( String member_id,String app_id) throws Exception { + System.out.println("=======execute query CorpMember begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", member_id); + memberParams.put("app_id", app_id); + System.out.println("查询企业用户,请求参数1:"+JSON.toJSONString(memberParams)); + Map member = CorpMember.query(memberParams); + System.out.println("查询企业用户,返回参数:"+JSON.toJSONString(member)); + + System.out.println("=======execute query CorpMember end======="); + + return member; + } + + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java new file mode 100644 index 000000000..b8f590092 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java @@ -0,0 +1,122 @@ +package com.huifu.adapay.demo; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.FastPay; + +import java.util.HashMap; +import java.util.Map; + + +/** + * @author gxw + * @date 2020-12-04 + */ +public class FastPayDemo extends BaseDemo{ + + /** + * 运行 member 类接口 + * @throws Exception 异常 + */ + public static Map executeCardTest(String app_id) throws Exception{ + FastPayDemo fastPayDemo = new FastPayDemo(); + Map result = new HashMap<>(); + result = fastPayDemo.executeCardApply(app_id); + result = fastPayDemo.executeCardConfirm(app_id); + result = fastPayDemo.executeCardList(app_id); + result = fastPayDemo.executeConfirm(app_id); + result = fastPayDemo.executeSendSms(app_id); + return result; + } + + + /** + * 创建快捷绑卡 + * @return 创建快捷绑卡 对象 + * @throws Exception 异常 + */ + public Map executeCardApply(String app_id) throws Exception { + System.out.println("=======execute executeCardApply begin======="); + Map applyParam = new HashMap(); + applyParam.put("app_id", app_id); + applyParam.put("member_id", "member_id_test"); + applyParam.put("card_id", "666666666666666666666666"); + applyParam.put("tel_no", "13888888888"); + applyParam.put("vip_code", "321"); + applyParam.put("expiration", "0225"); + Map result = FastPay.cardApply(applyParam); + System.out.println("=======execute executeCardApply end======="); + return result; + + } + + + /** + * 创建快捷绑卡确认 + * @return 创建快捷绑卡确认 对象 + * @throws Exception 异常 + */ + public Map executeCardConfirm(String app_id) throws Exception { + System.out.println("=======execute executeCardConfirm begin======="); + Map confirmParam = new HashMap(); + confirmParam.put("apply_id", app_id); + confirmParam.put("sms_code", "123456"); + confirmParam.put("notify_url", "https://xxxx.com/xxxx"); + Map result = FastPay.cardConfirm(confirmParam); + System.out.println("创建用户,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute executeCardConfirm end======="); + + return result; + + } + /** + * 查询快捷卡对象列表 + * @return 查询快捷卡对象列表 + * @throws Exception 异常 + */ + public Map executeCardList( String app_id) throws Exception { + System.out.println("=======execute executeCardList begin======="); + Map listParam = new HashMap(); + listParam.put("app_id", app_id); + listParam.put("member_id", "member_id_test"); + listParam.put("token_no", "10000067502"); + Map result = FastPay.cardList(listParam); + System.out.println("查询用户,返回参数:" + JSON.toJSONString(result)); + + System.out.println("=======execute executeCardList end======="); + + return result; + + } + /** + * 创建支付对象 + * @return 创建支付对象 + * @throws Exception 异常 + */ + public Map executeConfirm( String app_id) throws Exception { + System.out.println("=======execute executeConfirm begin======="); + Map confirmParams = new HashMap(); + confirmParams.put("payment_id", "002112020012010545810065165317376983040"); + confirmParams.put("sms_code", "123456"); + confirmParams.put("app_id", app_id); + Map result = FastPay.confirm(confirmParams); + System.out.println("=======execute executeConfirm end======="); + return result; + + } + + /** + * 创建快捷支付短信重发 + * @return 创建快捷支付短信重发 + * @throws Exception 异常 + */ + public Map executeSendSms( String app_id) throws Exception { + System.out.println("=======execute executeSendSms begin======="); + Map smsCodeParam = new HashMap(); + smsCodeParam.put("payment_id", "20190912"); + Map result = FastPay.smsCode(smsCodeParam); + System.out.println("=======execute executeSendSms end======="); + return result; + + } + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java new file mode 100644 index 000000000..8bc5c7556 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java @@ -0,0 +1,187 @@ +package com.huifu.adapay.demo; + +import com.huifu.adapay.Adapay; +import com.huifu.adapay.model.MerConfig; + +import java.util.HashMap; +import java.util.Map; + + +/** + * @author jane.zhao + */ +public class MainDemo { + public static void main(String[] args) throws Exception { + //若是商户只是自己对接adapay,请使用如下demo + testMerchant(); + + //若是技术性渠道商为其它商户提供服务功能,请使用多商户模式 +// testMultiMerchant(); + } + + public static void testMerchant() throws Exception { + /** + * debug 模式,开启后有详细的日志 + */ + Adapay.debug = true; + + /** + * prodMode 模式,默认为生产模式,false可以使用mock模式 + */ + Adapay.prodMode = true; + + /** + * 初始化商户配置,服务器启动前,必须通过该方式初始化商户配置完成 + * apiKey为prod模式的API KEY + * mockApiKey为mock模式的API KEY + * rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥 + */ + String apiKey = "api_live_9c14f264-e390-41df-984d-df15a6952031"; + String mockApiKey = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; + String rsaPrivateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; + MerConfig merConfig = new MerConfig(); + merConfig.setApiKey(apiKey); + merConfig.setApiMockKey(mockApiKey); + merConfig.setRSAPrivateKey(rsaPrivateKey); + Adapay.initWithMerConfig(merConfig); + + + /** + * 初始化完成,可以开始交易 + */ + String appId = "app_7d87c043-aae3-4357-9b2c-269349a980d6"; + + + // 运行支付类接口 +// String pamentId = PaymentDemo.executePaymentTest(appId); + // 带区域和超时参数的支付请求Demo + String pamentId = PaymentRegionAndRequestTimeOutDemo.executePaymentTest(appId); + + // //运行退款类接口 + // RefundDemo.executeRefundTest("002112020010618571810060213271697731584"); + + // /**用户类接口*/ + Map member = MemberDemo.executeMemberTest(appId); + String memberId = (String) member.get("member_id"); + // /** 结算户绑定*/ + SettleAccountDemo.executeSettleAccountTest("app_7d87c043-aae3-4357-9b2c-269349a980d6", memberId); + /**企业开户*/ + CorpMemberDemo.executeCorpMemberTest("app_7d87c043-aae3-4357-9b2c-269349a980d6"); + + /** + * 对账单下载 + */ + // BillDemo.executeBillTest(); + + // /** + // * 获取云闪付用户号 + // */ + // AdapayToolsDemo.executeToolsTest(appId); + // /** + // * 余额查询 + // */ + // SettleAccountDemo.executeQueryBalance(appId, "member_id", "settleCount_id"); + // /** + // *用户取现 + // */ + // SettleAccountDemo.executeDrawCash(appId, "member_id"); + // /** + // * 钱包登录申请 + // */ + // AdapayToolsDemo.executeLoginTest(appId,"member_id"); + //银行卡管理 + //FastPayDemo.executeCardTest(appId); + } + + public static void testMultiMerchant() throws Exception { + /** + * debug 模式,开启后与详细的日志 + */ + Adapay.debug = true; + + /** + * prodMode 模式,默认为生产模式,false可以使用mock模式 + */ + Adapay.prodMode = true; + + /** + * 初始化每个商户配置,服务器启动前,必须通过该方式初始化商户配置完成 + * apiKey为prod模式的API KEY + * mockApiKey为mock模式的API KEY + * rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥 + */ + // 创建商户A的商户配置对象 + Map configPathMap = new HashMap<>(); + String apiKeyA = "api_live_9c14f264-e390-41df-984d-df15a6952031"; + String mockApiKeyA = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; + String rsaPrivateKeyA = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; + MerConfig merConfigA = new MerConfig(); + merConfigA.setApiKey(apiKeyA); + merConfigA.setApiMockKey(mockApiKeyA); + merConfigA.setRSAPrivateKey(rsaPrivateKeyA); + // 定义一个商户的A的唯一标识,交易发起时,用于定位是哪个商户发起交易 + configPathMap.put("商户A的唯一标识", merConfigA); + + // 创建商户B的商户配置对象 + String apiKeyB = "api_live_9c14f264-e390-41df-984d-df15a6952031"; + String mockApiKeyB = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; + String rsaPrivateKeyB = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; + MerConfig merConfigB = new MerConfig(); + merConfigB.setApiKey(apiKeyB); + merConfigB.setApiMockKey(mockApiKeyB); + merConfigB.setRSAPrivateKey(rsaPrivateKeyB); + // 定义一个商户的B的唯一标识,交易发起时,用于定位是哪个商户发起交易 + configPathMap.put("商户B的唯一标识", merConfigB); + + // 将商户A和B的商户配置放入本地缓存 + Adapay.initWithMerConfigs(configPathMap); + + /** + * 商户配置初始化完成后,可以发起交易 + */ + + // 运行支付类接口,其中app_id必须是商户A下的app_id + String pamentId = PaymentDemo.executePaymentTest("商户A的唯一标识", "app_7d87c043-aae3-4357-9b2c-269349a980d6"); + // String pamentI2 = PaymentDemo.executePaymentTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); + + // //运行退款类接口 + // RefundDemo.executeRefundTest("yifuyun", "002112019101420422510029799145265012736"); + // RefundDemo.executeRefundTest("yifuyun", "002112019101420422610029799148904755200"); + // /** + // * 分账使用配套接口 begin + // */ + // /**用户类接口*/ + // Map member = MemberDemo.executeMemberTest("yifuyun", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); + // String memberId = (String) member.get("member_id"); + // /** 结算户绑定*/ + // SettleAccountDemo.executeSettleAccountTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029", memberId); + // /**企业开户*/ + // CorpMemberDemo.executeCorpMemberTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); + // /** + // * 分账使用配套接口 end + // */ + // //对账单下载 + // BillDemo.executeBillTest("yifuyun"); + // String appId = "app_67ba475b-26e0-4cfa-847c-0f115cae5029"; + + // /** + // * 获取云闪付用户号 + // */ + // AdapayToolsDemo.executeToolsTest(appId, "yifuyun"); + // /** + // * 余额查询 + // */ + // SettleAccountDemo.executeQueryBalance("yifuyun", appId, "member_id", "settleCount_id"); + // /** + // *用户取现 + // */ + // SettleAccountDemo.executeDrawCash("yifuyun", appId, "member_id"); + // /** + // * 钱包登录申请 + // */ + // AdapayToolsDemo.executeLoginTest(appId,"yifuyun"); + + } + + +} \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java new file mode 100644 index 000000000..46f31fc3f --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java @@ -0,0 +1,244 @@ +package com.huifu.adapay.demo; + +import java.util.HashMap; +import java.util.Map; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.Member; + + +/** + * @author yingyong.wang + */ +public class MemberDemo extends BaseDemo{ + + /** + * 运行 member 类接口 + * @throws Exception 异常 + */ + public static Map executeMemberTest(String merchantKey, String app_id) throws Exception{ + MemberDemo demo = new MemberDemo(); + Map member = demo.executeCreateMember(merchantKey, app_id); + demo.executeQueryMember(merchantKey, (String)member.get("member_id"),app_id); + demo.executeUpdateMember(merchantKey, (String)member.get("member_id"),app_id); + demo.executeQueryMember(merchantKey, (String)member.get("member_id"),app_id); + demo.executeListMember(merchantKey, app_id); + return member; + } + + + /** + * 创建 member + * @return 创建的member 对象 + * @throws Exception 异常 + */ + public Map executeCreateMember(String merchantKey, String app_id) throws Exception { + System.out.println("=======execute CreateMember begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", "jsdk_member_"+System.currentTimeMillis()); + memberParams.put("app_id",app_id); + memberParams.put("location", "上海市徐汇区宜山路"); + memberParams.put("email", "123@163.com"); + memberParams.put("gender", "MALE"); + memberParams.put("tel_no", "13153333333"); + memberParams.put("nickname", "nick_name"); + System.out.println("创建用户,请求参数:" + JSON.toJSONString(memberParams)); + Map member = Member.create(memberParams, merchantKey); + System.out.println("创建用户,返回参数:" + JSON.toJSONString(member)); + System.out.println("=======execute CreateMember end======="); + + return member; + + } + + /** + * 查询 member + * @param member_id 待查询的member_id + * @return 创建的member 对象 + * @throws Exception 异常 + */ + public Map executeQueryMember(String merchantKey, String member_id,String app_id) throws Exception { + System.out.println("=======execute queryMember begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", member_id); + memberParams.put("app_id", app_id); + System.out.println("查询用户,请求参数:" + JSON.toJSONString(memberParams)); + Map member = Member.query(memberParams, merchantKey); + System.out.println("查询用户,返回参数:" + JSON.toJSONString(member)); + + + System.out.println("=======execute queryMember end======="); + + return member; + + } + + + /** + * 更新 member + * @param member_id 待更新的member_id + * @return 更新的member 对象 + * @throws Exception 异常 + */ + public Map executeUpdateMember(String merchantKey, String member_id,String app_id) throws Exception { + System.out.println("=======execute update Member begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", member_id); + memberParams.put("app_id", app_id); + memberParams.put("location", "上海市徐汇区宜山路1"); + memberParams.put("email", "1234@163.com"); + memberParams.put("gender", "MALE"); + memberParams.put("tel_no", "13153333333"); + memberParams.put("nickname", "nick_name2"); + + System.out.println("更新用户,请求参数:"+JSON.toJSONString(memberParams)); + Map member = Member.update(memberParams, merchantKey); + System.out.println("更新用户,返回参数:"+JSON.toJSONString(member)); + + System.out.println("=======execute update Member end======="); + + return member; + + } + + /** + * 查询 member list + * @param app_id app_id + * @return 查询的member list + * @throws Exception 异常 + */ + public Map executeListMember(String merchantKey, String app_id) throws Exception { + System.out.println("=======execute list Member begin======="); + Map memberParams = new HashMap(2); + memberParams.put("page_index", "1"); + memberParams.put("app_id", app_id); + memberParams.put("page_size", "20"); + memberParams.put("created_gte", String.valueOf(System.currentTimeMillis() - 5 * 60 * 1000)); + memberParams.put("created_lte", String.valueOf(System.currentTimeMillis())); + System.out.println("查询用户列表,请求参数:"+JSON.toJSONString(memberParams)); + Map member = Member.queryList(memberParams, merchantKey); + System.out.println("查询用户列表,返回参数:"+JSON.toJSONString(member)); + + + System.out.println("=======execute list Member end======="); + + return member; + + } + + /** + * 运行 member 类接口 + * @throws Exception 异常 + */ + public static Map executeMemberTest( String app_id) throws Exception{ + MemberDemo demo = new MemberDemo(); + Map member = demo.executeCreateMember( app_id); + demo.executeQueryMember( (String)member.get("member_id"),app_id); + demo.executeUpdateMember( (String)member.get("member_id"),app_id); + demo.executeQueryMember( (String)member.get("member_id"),app_id); + demo.executeListMember( app_id); + return member; + } + + + /** + * 创建 member + * @return 创建的member 对象 + * @throws Exception 异常 + */ + public Map executeCreateMember( String app_id) throws Exception { + System.out.println("=======execute CreateMember begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", "jsdk_member_"+System.currentTimeMillis()); + memberParams.put("app_id",app_id); + memberParams.put("location", "上海市徐汇区宜山路"); + memberParams.put("email", "123@163.com"); + memberParams.put("gender", "MALE"); + memberParams.put("tel_no", "13153333333"); + memberParams.put("nickname", "nick_name"); + System.out.println("创建用户,请求参数:" + JSON.toJSONString(memberParams)); + Map member = Member.create(memberParams); + System.out.println("创建用户,返回参数:" + JSON.toJSONString(member)); + System.out.println("=======execute CreateMember end======="); + + return member; + + } + + /** + * 查询 member + * @param member_id 待查询的member_id + * @return 创建的member 对象 + * @throws Exception 异常 + */ + public Map executeQueryMember( String member_id,String app_id) throws Exception { + System.out.println("=======execute queryMember begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", member_id); + memberParams.put("app_id", app_id); + System.out.println("查询用户,请求参数:" + JSON.toJSONString(memberParams)); + Map member = Member.query(memberParams); + System.out.println("查询用户,返回参数:" + JSON.toJSONString(member)); + + + System.out.println("=======execute queryMember end======="); + + return member; + + } + + + /** + * 更新 member + * @param member_id 待更新的member_id + * @return 更新的member 对象 + * @throws Exception 异常 + */ + public Map executeUpdateMember( String member_id,String app_id) throws Exception { + System.out.println("=======execute update Member begin======="); + Map memberParams = new HashMap(2); + memberParams.put("member_id", member_id); + memberParams.put("app_id", app_id); + memberParams.put("location", "上海市徐汇区宜山路1"); + memberParams.put("email", "1234@163.com"); + memberParams.put("gender", "MALE"); + memberParams.put("tel_no", "13153333333"); + memberParams.put("nickname", "nick_name2"); + + System.out.println("更新用户,请求参数:"+JSON.toJSONString(memberParams)); + Map member = Member.update(memberParams); + System.out.println("更新用户,返回参数:"+JSON.toJSONString(member)); + + System.out.println("=======execute update Member end======="); + + return member; + + } + + /** + * 查询 member list + * @param app_id app_id + * @return 查询的member list + * @throws Exception 异常 + */ + public Map executeListMember( String app_id) throws Exception { + System.out.println("=======execute list Member begin======="); + Map memberParams = new HashMap(2); + memberParams.put("page_index", "1"); + memberParams.put("app_id", app_id); + memberParams.put("page_size", "20"); + memberParams.put("created_gte", String.valueOf(System.currentTimeMillis() - 5 * 60 * 1000)); + memberParams.put("created_lte", String.valueOf(System.currentTimeMillis())); + System.out.println("查询用户列表,请求参数:"+JSON.toJSONString(memberParams)); + Map member = Member.queryList(memberParams); + System.out.println("查询用户列表,返回参数:"+JSON.toJSONString(member)); + + + System.out.println("=======execute list Member end======="); + + return member; + + } + + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java new file mode 100644 index 000000000..299422a62 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java @@ -0,0 +1,964 @@ +package com.huifu.adapay.demo; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.huifu.adapay.model.Checkout; +import com.huifu.adapay.model.Payment; +import com.huifu.adapay.model.PaymentConfirm; +import com.huifu.adapay.model.PaymentReverse; + +import java.util.HashMap; +import java.util.Map; + + +/** + * @author jane.zhao + */ +public class PaymentDemo extends BaseDemo { + /** + * 运行支付类接口 + * + * @return paymentId + * @throws Exception 异常 + */ + public static String executePaymentTest(String merchantKey, String app_id) throws Exception { + PaymentDemo demo = new PaymentDemo(); + //支付接口 + Map payment = demo.executePayment(merchantKey, app_id); + payment = demo.executeDelayPayment(merchantKey, app_id); + + // payment = demo.createReverse(merchantKey, "002112019102420545010033426145952493568",app_id); + // payment = demo.queryReverse(merchantKey,"002112019102420545010033426145952493568", app_id); + // payment = demo.queryReverseList(merchantKey,"002112019102420545010033426145952493568", app_id); + // payment = demo.createConfirm(merchantKey,"002112019102420545010033426145952493568", app_id); + // payment = demo.queryConfirm(merchantKey,"002112019102420545010033426145952493568", app_id); + // payment = demo.queryConfirmList(merchantKey, "002112019102420545010033426145952493568",app_id); + //payment = demo.executePagePayment(merchantKey, app_id); + payment = demo.executeCheckOutPayment(merchantKey, app_id); + System.out.println("钱包支付地址:" + payment.get("pay_url")); + payment = demo.queryList(merchantKey,app_id); + + //支付查询接口 + demo.queryPayment(merchantKey, (String) payment.get("id")); + // //关单接口 + demo.closePayment(merchantKey, (String) payment.get("id")); + + return (String) payment.get("id"); + } + + /** + * 运行支付类接口 + * + * @return paymentId + * @throws Exception 异常 + */ + public static String executePaymentTest(String app_id) throws Exception { + PaymentDemo demo = new PaymentDemo(); + //支付接口 + Map payment = demo.executePayment(app_id); + // payment = demo.executeDelayPayment( app_id); + +// payment = demo.createReverse("002112019102420545010033426145952493568", app_id); +// payment = demo.queryReverse("002112019102420545010033426145952493568", app_id); +// payment = demo.queryReverseList("002112019102420545010033426145952493568", app_id); +// payment = demo.createConfirm("002112019102420545010033426145952493568", app_id); +// payment = demo.queryConfirm("002112019102420545010033426145952493568", app_id); +// payment = demo.queryConfirmList("002112019102420545010033426145952493568", app_id); +// +// payment = demo.executePagePayment(app_id); +// payment = demo.executeCheckOutPayment(app_id); +// payment = demo.queryCheckoutList("002112019102420545010033426145952493568",app_id); +// +// System.out.println("钱包支付地址:" + payment.get("pay_url")); +// +// //支付查询接口 +// demo.queryPayment((String) payment.get("id")); +// // //关单接口 +// demo.closePayment((String) payment.get("id")); + + + return (String) payment.get("id"); + } + + /** + * 执行一个支付交易 + * + * @return 创建的支付对象 + * @throws Exception 异常 + */ + public Map executeDelayPayment(String merchantKey, String app_id) throws Exception { + System.out.println("=======execute payment begin======="); + //创建支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + Map paymentParams = new HashMap<>(10); + paymentParams.put("app_id", app_id); + paymentParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis()); + paymentParams.put("pay_channel", "alipay"); + paymentParams.put("pay_amt", "0.01"); + + paymentParams.put("goods_title", "your goods title"); + paymentParams.put("goods_desc", "your goods desc"); + + paymentParams.put("div_members", ""); + paymentParams.put("pay_mode", "delay"); + + + //调用sdk方法,创建支付,得到支付对象 + Map payment = new HashMap<>(); + try { + payment = Payment.create(paymentParams, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + String error_code = (String) payment.get("error_code"); + if (null != error_code) { + String error_msg = (String) payment.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + + + return payment; + } + + /** + * 执行一个支付交易 + * + * @return 创建的支付对象 + * @throws Exception 异常 + */ + public Map executePayment(String merchantKey, String app_id) throws Exception { + System.out.println("=======execute payment begin======="); + //创建支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + Map paymentParams = new HashMap<>(10); + paymentParams.put("app_id", app_id); + paymentParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis()); + paymentParams.put("pay_channel", "alipay"); + paymentParams.put("pay_amt", "0.01"); + + paymentParams.put("goods_title", "your goods title"); + paymentParams.put("goods_desc", "your goods desc"); + + + paymentParams.put("div_members", ""); + + Map deviceInfo = new HashMap<>(2); + + deviceInfo.put("device_ip", "127.0.0.1"); + deviceInfo.put("device_mac", "交易设备 MAC"); + deviceInfo.put("device_type", "1"); + deviceInfo.put("device_imei", "交易设备 IMEI"); + deviceInfo.put("device_imsi", "交易设备 IMSI"); + deviceInfo.put("device_iccId", "ICCID"); + deviceInfo.put("device_wifi_mac", "WIFIMAC"); + + paymentParams.put("device_info", deviceInfo); + + Map expendParams = new HashMap<>(2); + String openId = "";//微信授权获取 + expendParams.put("open_id", openId); + expendParams.put("is_raw", "1"); + expendParams.put("callback_url", "绝对路径"); + expendParams.put("limit_pay", "1"); + + paymentParams.put("expend", expendParams); + + //调用sdk方法,创建支付,得到支付对象 + Map payment = new HashMap<>(); + try { + + payment = Payment.create(paymentParams, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + String error_code = (String) payment.get("error_code"); + if (null != error_code) { + System.out.println("创建支付返回参数:" + JSON.toJSONString(payment)); + + String error_msg = (String) payment.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + + return payment; + } + + /** + * 关闭一个支付交易 + * + * @param paymentId 要关闭的支付id + * @return 关闭的支付对象 + * @throws Exception 异常 + */ + public Map closePayment(String merchantKey, String paymentId) throws Exception { + System.out.println("=======close payment begin======="); + //关闭支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + //调用sdk方法,关闭支付,得到支付对象 + Map payment = new HashMap<>(); + Map paymentParams = new HashMap<>(10); + paymentParams.put("payment_id", paymentId); + try { + paymentParams.put("payment_id", paymentId); + paymentParams.put("reason", "reason"); + paymentParams.put("expend", "expend"); + paymentParams.put("notify_url", "notify_url"); + System.out.println("关单请求参数:" + JSON.toJSONString(paymentId)); + payment = Payment.close(paymentParams, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + + String error_code = (String) payment.get("error_code"); + if (null != error_code) { + System.out.println("关单返回参数:" + JSON.toJSONString(payment)); + String error_msg = (String) payment.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + + + return payment; + } + + + /** + * 查询一个支付交易 + * + * @param paymentId 要查询的支付id + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryPayment(String merchantKey, String paymentId) throws Exception { + System.out.println("=======query payment begin======="); + //查询支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + //调用sdk方法,查询支付交易,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("支付查询请求参数:" + JSON.toJSONString(paymentId)); + payment = Payment.query(paymentId, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("支付查询返回参数:" + JSON.toJSONString(payment)); + + String error_code = (String) payment.get("error_code"); + if (null == error_code) { + String error_msg = (String) payment.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + System.out.println("=======query payment end======="); + return payment; + } + + + /** + * 创建撤销对象 + * + * @param paymentId 要查询的支付id + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map createReverse(String merchantKey, String paymentId, String app_id) throws Exception { + System.out.println("=======create Reverse begin======="); + + Map reverse = new HashMap<>(); + + reverse.put("payment_id", paymentId); + reverse.put("app_id", app_id); + reverse.put("order_no", "jsdk_reverse_" + System.currentTimeMillis()); + reverse.put("app_id", app_id); + reverse.put("notify_url", ""); + reverse.put("reverse_amt", "0.01"); + reverse.put("reason", "reason"); + reverse.put("expand", "expend"); + reverse.put("device_info", "device_info"); + + + try { + System.out.println("创建撤销对象" + JSON.toJSONString(reverse)); + reverse = PaymentReverse.create(reverse, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("创建撤销对象返回参数:" + JSON.toJSONString(reverse)); + String error_code = (String) reverse.get("error_code"); + if (null == error_code) { + String error_msg = (String) reverse.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + System.out.println("=======create Reverse end======="); + return reverse; + } + + /** + * 查询撤销对象 + * + * @param reverse_id 要查询的支付id + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryReverse(String merchantKey, String reverse_id, String app_id) throws Exception { + System.out.println("=======query Reverse begin======="); + + Map reverse = new HashMap<>(); + + reverse.put("reverse_id", reverse_id); + + try { + System.out.println("查询撤销对象请求参数:" + JSON.toJSONString(reverse)); + reverse = PaymentReverse.query(reverse, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + String error_code = (String) reverse.get("error_code"); + if (null == error_code) { + String error_msg = (String) reverse.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + System.out.println("查询撤销对象返回参数:" + JSON.toJSONString(reverse)); + System.out.println("=======query Reverse end======="); + return reverse; + } + + /** + * 查询撤销对象列表 + * + * @param + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryReverseList(String merchantKey, String payment_id, String app_id) throws Exception { + System.out.println("=======query Reverse list begin======="); + + Map reverse = new HashMap<>(); + reverse.put("payment_id", payment_id); + reverse.put("app_id", app_id); + reverse.put("page_index", "1"); + reverse.put("page_size", "20"); + reverse.put("created_gte", "1571913923"); + reverse.put("created_lte", "1571913924"); + + + try { + System.out.println("查询撤销对象列表请求参数:" + JSON.toJSONString(reverse)); + reverse = PaymentReverse.queryList(reverse, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + String error_code = (String) reverse.get("error_code"); + if (null == error_code) { + String error_msg = (String) reverse.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + System.out.println("查询撤销对象列表返回参数:" + JSON.toJSONString(reverse)); + System.out.println("=======query Reverse list end======="); + return reverse; + } + + + /** + * 创建确认对象 + * + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map createConfirm(String merchantKey, String paymentId, String app_id) throws Exception { + System.out.println("=======create confirm begin======="); + + Map confirm = new HashMap<>(); + + confirm.put("payment_id", paymentId); + confirm.put("order_no", "jsdk_confirm_" + System.currentTimeMillis()); + confirm.put("confirm_amt", "0.01"); + confirm.put("description", "description"); + confirm.put("div_members", ""); + + try { + System.out.println("创建确认对象" + JSON.toJSONString(confirm)); + confirm = PaymentConfirm.create(confirm, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + String error_code = (String) confirm.get("error_code"); + if (null == error_code) { + String error_msg = (String) confirm.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + System.out.println("创建确认对象返回参数:" + JSON.toJSONString(confirm)); + System.out.println("=======create confirm end======="); + return confirm; + } + + /** + * 查询撤销对象 + * + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryConfirm(String merchantKey, String payment_confirm_id, String app_id) throws Exception { + System.out.println("=======query confirm begin======="); + + Map confirm = new HashMap<>(); + + confirm.put("payment_confirm_id", payment_confirm_id); + + try { + System.out.println("查询确认对象请求参数:" + JSON.toJSONString(confirm)); + confirm = PaymentConfirm.query(confirm, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + String error_code = (String) confirm.get("error_code"); + if (null == error_code) { + String error_msg = (String) confirm.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + System.out.println("查询撤销对象返回参数:" + JSON.toJSONString(confirm)); + System.out.println("=======query confirm end======="); + return confirm; + } + + /** + * 查询确认对象列表 + * + * @param + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryConfirmList(String merchantKey, String payment_id, String app_id) throws Exception { + System.out.println("=======query confirm list begin======="); + + Map confirm = new HashMap<>(); + confirm.put("payment_id", payment_id); + confirm.put("app_id", app_id); + confirm.put("page_index", "1"); + confirm.put("page_size", "20"); + confirm.put("created_gte", "1571913867"); + confirm.put("created_lte", "1571913923"); + + + try { + System.out.println("查询撤销对象列表请求参数:" + JSON.toJSONString(confirm)); + confirm = PaymentConfirm.queryList(confirm, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + String error_code = (String) confirm.get("error_code"); + if (null == error_code) { + String error_msg = (String) confirm.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + System.out.println("查询撤销对象列表返回参数:" + JSON.toJSONString(confirm)); + System.out.println("=======query Reverse list end======="); + return confirm; + } + + /** + * 执行一个支付交易 + * + * @return 创建的支付对象 + * @throws Exception 异常 + */ + public Map executeDelayPayment(String app_id) throws Exception { + System.out.println("=======execute payment begin======="); + //创建支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + Map paymentParams = new HashMap<>(10); + paymentParams.put("app_id", app_id); + paymentParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis()); + paymentParams.put("pay_channel", "alipay"); + paymentParams.put("pay_amt", "0.10"); + + paymentParams.put("goods_title", "your goods title"); + paymentParams.put("goods_desc", "your goods desc"); + + paymentParams.put("div_members", ""); + paymentParams.put("pay_mode", "delay"); + + + //调用sdk方法,创建支付,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("支付交易,请求参数:" + JSON.toJSONString(paymentParams)); + payment = Payment.create(paymentParams); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + System.out.println("支付交易,返回参数:" + JSON.toJSONString(payment)); + String error_code = (String) payment.get("error_code"); + if (null == error_code) { + String error_msg = (String) payment.get("error_msg"); + System.out.println("error_code:" + error_code + "............." + error_msg); + } + + System.out.println("=======execute payment end======="); + return payment; + } + + /** + * 执行一个支付交易 + * + * @return 创建的支付对象 + * @throws Exception 异常 + */ + public Map executePayment(String app_id) throws Exception { + System.out.println("=======execute payment begin======="); + //创建支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + Map paymentParams = new HashMap<>(10); + + paymentParams.put("adapay_connection_request_timeout", 500); + paymentParams.put("adapay_connect_timeout", 500); + paymentParams.put("adapay_socket_timeout", 500); + paymentParams.put("adapay_region", "beijing"); + + + paymentParams.put("app_id", app_id); + paymentParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis()); + paymentParams.put("pay_channel", "alipay"); + paymentParams.put("pay_amt", "0.01"); + + paymentParams.put("goods_title", "your goods title"); + paymentParams.put("goods_desc", "your goods desc"); + + paymentParams.put("div_members", ""); + + + //调用sdk方法,创建支付,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("支付交易,请求参数:" + JSON.toJSONString(paymentParams)); + payment = Payment.create(paymentParams); + + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + System.out.println("支付交易,返回参数:" + JSON.toJSONString(payment)); + System.out.println("=======execute payment end======="); + return payment; + } + + + /** + * 执行一个包支付交易 + * + * @return 创建的支付对象 + * @throws Exception 异常 + */ + public Map executePagePayment(String app_id) throws Exception { + System.out.println("=======execute pagePayment begin======="); + //请参考 https://docs.adapay.tech/api/index.html + Map params = new HashMap<>(); + params.put("order_no", System.currentTimeMillis()); + params.put("pay_amt", "0.01"); + params.put("currency", "cny"); + params.put("goods_title", "goods"); + params.put("goods_desc", "goodsdesc"); + params.put("app_id", app_id); +// params.put("app_id", "app_f8b14a77-dc24-433b-864f-98a62209d6c4"); + params.put("callback_url", "https://www.baidu.com/"); + + //调用sdk方法,创建支付,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("钱包支付交易,请求参数:" + JSON.toJSONString(params)); + payment = Payment.createPage(params); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + System.out.println("钱包交易,返回参数:" + JSON.toJSONString(payment)); + System.out.println("=======execute pagePayment end======="); + return payment; + } + + /** + * 执行一个包支付交易 + * + * @return 创建的支付对象 + * @throws Exception 异常 + */ + public Map executePagePayment(String merchantKey, String app_id) throws Exception { + System.out.println("=======execute pagePayment begin======="); + //请参考 https://docs.adapay.tech/api/index.html + Map params = new HashMap<>(); + params.put("order_no", System.currentTimeMillis()); + params.put("pay_amt", "0.01"); + params.put("currency", "cny"); + params.put("goods_title", "goods"); + params.put("goods_desc", "goodsdesc"); + params.put("app_id", "app_f8b14a77-dc24-433b-864f-98a62209d6c4"); + params.put("callback_url", "https://www.baidu.com/"); + + //调用sdk方法,创建支付,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("钱包支付交易,请求参数:" + JSON.toJSONString(params)); + payment = Payment.createPage(params, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + System.out.println("钱包交易,返回参数:" + JSON.toJSONString(payment)); + System.out.println("=======execute pagePayment end======="); + return payment; + } + + /** + * 执行一个收银台支付交易 + * + * @return 创建的支付对象 + * @throws Exception 异常 + */ + public Map executeCheckOutPayment(String app_id) throws Exception { + System.out.println("=======execute quickPayment begin======="); + //请参考 https://docs.adapay.tech/api/index.html + Map params = new HashMap<>(); + params.put("order_no", "jdskjdd_200000014"); + params.put("member_id", "user_00013"); + params.put("pay_amt", "0.01"); + params.put("currency", "cny"); + params.put("goods_title", "商品标题"); + params.put("goods_desc", "商品描述"); + params.put("app_id", "app_7d87c043-aae3-4357-9b2c-269349a980d6"); + params.put("callback_url", "https://www.cnblogs.com/wanlibingfeng/p/7080581.html"); + + //调用sdk方法,创建支付,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("收银台支付交易,请求参数:" + JSON.toJSONString(params)); + payment = Checkout.create(params); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + System.out.println("收银台交易,返回参数:" + JSON.toJSONString(payment)); + System.out.println("=======execute quickPayment end======="); + return payment; + } + + /** + * 执行一个收银台支付交易 + * + * @return 创建的支付对象 + * @throws Exception 异常 + */ + public Map executeCheckOutPayment(String merchantKey, String app_id) throws Exception { + System.out.println("=======execute quickPayment begin======="); + //请参考 https://docs.adapay.tech/api/index.html + Map params = new HashMap<>(); + params.put("order_no", "jdskjdd_200000013"); + params.put("member_id", "user_00013"); + params.put("pay_amt", "0.01"); + params.put("currency", "cny"); + params.put("goods_title", "商品标题"); + params.put("goods_desc", "商品描述"); + params.put("app_id", "app_7d87c043-aae3-4357-9b2c-269349a980d6"); + params.put("callback_url", "https://www.cnblogs.com/wanlibingfeng/p/7080581.html"); + + //调用sdk方法,创建支付,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("收银台支付交易,请求参数:" + JSON.toJSONString(params)); + payment = Checkout.create(params, merchantKey); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + System.out.println("收银台交易,返回参数:" + JSON.toJSONString(payment)); + System.out.println("=======execute quickPayment end======="); + return payment; + } + + /** + * 关闭一个支付交易 + * + * @param paymentId 要关闭的支付id + * @return 关闭的支付对象 + * @throws Exception 异常 + */ + public Map closePayment(String paymentId) throws Exception { + System.out.println("=======close payment begin======="); + //关闭支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + //调用sdk方法,关闭支付,得到支付对象 + Map payment = new HashMap<>(); + try { + Map paymentParams = new HashMap<>(10); + paymentParams.put("payment_id", paymentId); + paymentParams.put("reason", "reason"); + paymentParams.put("expend", "expend"); + paymentParams.put("notify_url", "notify_url"); + System.out.println("关单请求参数:" + JSON.toJSONString(paymentId)); + payment = Payment.close(paymentParams); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + System.out.println("关单返回参数:" + JSON.toJSONString(payment)); + + System.out.println("=======close payment end======="); + return payment; + } + + + /** + * 查询一个支付交易 + * + * @param paymentId 要查询的支付id + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryPayment(String paymentId) throws Exception { + System.out.println("=======query payment begin======="); + //查询支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + //调用sdk方法,查询支付交易,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("支付查询请求参数:" + JSON.toJSONString(paymentId)); + payment = Payment.query(paymentId); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("支付查询返回参数:" + JSON.toJSONString(payment)); + System.out.println("=======query payment end======="); + return payment; + } + + + /** + * 创建撤销对象 + * + * @param paymentId 要查询的支付id + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map createReverse(String paymentId, String app_id) throws Exception { + System.out.println("=======create Reverse begin======="); + + Map reverse = new HashMap<>(); + + reverse.put("payment_id", paymentId); + reverse.put("app_id", app_id); + reverse.put("order_no", "jsdk_reverse_" + System.currentTimeMillis()); + reverse.put("app_id", app_id); + reverse.put("notify_url", app_id); + reverse.put("reverse_amt", "0.01"); + reverse.put("reason", app_id); + reverse.put("expand", app_id); + reverse.put("device_info", app_id); + + + try { + System.out.println("创建撤销对象" + JSON.toJSONString(reverse)); + reverse = PaymentReverse.create(reverse); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("创建撤销对象返回参数:" + JSON.toJSONString(reverse)); + System.out.println("=======create Reverse end======="); + return reverse; + } + + /** + * 查询撤销对象 + * + * @param reverse_id 要查询的支付id + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryReverse(String reverse_id, String app_id) throws Exception { + System.out.println("=======query Reverse begin======="); + + Map reverse = new HashMap<>(); + + reverse.put("reverse_id", reverse_id); + + try { + System.out.println("查询撤销对象请求参数:" + JSON.toJSONString(reverse)); + reverse = PaymentReverse.query(reverse); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("查询撤销对象返回参数:" + JSON.toJSONString(reverse)); + System.out.println("=======query Reverse end======="); + return reverse; + } + + /** + * 查询撤销对象列表 + * + * @param + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryReverseList(String payment_id, String app_id) throws Exception { + System.out.println("=======query Reverse list begin======="); + + Map reverse = new HashMap<>(); + reverse.put("payment_id", payment_id); + reverse.put("app_id", app_id); + reverse.put("page_index", "1"); + reverse.put("page_size", "20"); + reverse.put("created_gte", ""); + reverse.put("created_lte", ""); + + + try { + System.out.println("查询撤销对象列表请求参数:" + JSON.toJSONString(reverse)); + reverse = PaymentReverse.queryList(reverse); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("查询撤销对象列表返回参数:" + JSON.toJSONString(reverse)); + System.out.println("=======query Reverse list end======="); + return reverse; + } + + + /** + * 创建确认对象 + * + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map createConfirm(String paymentId, String app_id) throws Exception { + System.out.println("=======create confirm begin======="); + + Map confirm = new HashMap<>(); + + confirm.put("payment_id", paymentId); + confirm.put("order_no", "jsdk_confirm_" + System.currentTimeMillis()); + confirm.put("confirm_amt", "0.01"); + confirm.put("description", "description"); + confirm.put("div_members", ""); + + + try { + System.out.println("创建确认对象" + JSON.toJSONString(confirm)); + confirm = PaymentConfirm.create(confirm); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("创建确认对象返回参数:" + JSON.toJSONString(confirm)); + System.out.println("=======create confirm end======="); + return confirm; + } + + /** + * 查询撤销对象 + * + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryConfirm(String payment_confirm_id, String app_id) throws Exception { + System.out.println("=======query confirm begin======="); + + Map confirm = new HashMap<>(); + + confirm.put("payment_confirm_id", payment_confirm_id); + + try { + System.out.println("查询确认对象请求参数:" + JSON.toJSONString(confirm)); + confirm = PaymentConfirm.query(confirm); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("查询撤销对象返回参数:" + JSON.toJSONString(confirm)); + System.out.println("=======query confirm end======="); + return confirm; + } + + /** + * 查询确认对象列表 + * + * @param + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryConfirmList(String payment_id, String app_id) throws Exception { + System.out.println("=======query confirm list begin======="); + + Map confirm = new HashMap<>(); + confirm.put("payment_id", payment_id); + confirm.put("app_id", app_id); + confirm.put("page_index", "1"); + confirm.put("page_size", "20"); + confirm.put("created_gte", ""); + confirm.put("created_lte", ""); + + + try { + System.out.println("查询撤销对象列表请求参数:" + JSON.toJSONString(confirm)); + confirm = PaymentConfirm.queryList(confirm); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("查询撤销对象列表返回参数:" + JSON.toJSONString(confirm)); + System.out.println("=======query Reverse list end======="); + return confirm; + } + //add beg + /** + * 查询确认对象列表 + * + * @param + * @return 查询的支付对象列表 + * @throws Exception 异常 + */ + public Map queryList(String payment_id, String app_id) throws Exception { + System.out.println("=======query list begin======="); + + Map querylist = new HashMap<>(); + querylist.put("payment_id", payment_id); + querylist.put("app_id", app_id); + querylist.put("page_index", "1"); + querylist.put("page_size", "20"); + querylist.put("created_gte", ""); + querylist.put("created_lte", ""); + + + try { + System.out.println("查询支付对象列表请求参数:" + JSON.toJSONString(querylist)); + querylist = Payment.queryList(querylist); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("查询支付对象列表返回参数:" + JSON.toJSONString(querylist)); + System.out.println("=======query list end======="); + return querylist; + } + + /** + * 查询收银台对象列表 + * + * @param + * @return 查询的收银台对象列表 + * @throws Exception 异常 + */ + public Map queryCheckoutList(String payment_id, String app_id) throws Exception { + System.out.println("=======query list begin======="); + + Map checklist = new HashMap<>(); + checklist.put("payment_id", payment_id); + checklist.put("app_id", app_id); + checklist.put("page_index", "1"); + checklist.put("page_size", "20"); + checklist.put("created_gte", ""); + checklist.put("created_lte", ""); + + + try { + System.out.println("查询收银台对象列表请求参数:" + JSON.toJSONString(checklist)); + checklist = Checkout.queryList(checklist); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("查询收银台对象列表返回参数:" + JSON.toJSONString(checklist)); + System.out.println("=======query check list end======="); + return checklist; + } + //add end +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java new file mode 100644 index 000000000..1ccb759d7 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java @@ -0,0 +1,149 @@ +package com.huifu.adapay.demo; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.huifu.adapay.model.Payment; + + +import java.util.HashMap; +import java.util.Map; + + +/** + * @author chunying.jia + */ +public class PaymentRegionAndRequestTimeOutDemo extends BaseDemo { + + public static String executePaymentTest(String app_id)throws Exception{ + PaymentRegionAndRequestTimeOutDemo demo = new PaymentRegionAndRequestTimeOutDemo(); + //支付接口 + Map payment = demo.executePayment(app_id); + + return (String) payment.get("id"); + } + + /** + * 执行一个支付交易 + * + * @return 创建的支付对象 + * @throws Exception 异常 + */ + public Map executePayment(String app_id) throws Exception { + System.out.println("=======execute payment begin======="); + //创建支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + Map paymentParams = new HashMap<>(10); + + // 设置超时时间 单位毫秒 类型 int + // adapay_connection_request_timeout 类型 int, 单位:毫秒 ms + // 非必须, 默认 10000 指从连接池获取连接的 timeout + paymentParams.put("adapay_connection_request_timeout", 1500); + // adapay_connect_timeout 单位:毫秒 ms + // 非必须, 默认 30000 指客户端和服务器建立连接的timeout + paymentParams.put("adapay_connect_timeout", 1500); + // adapay_socket_timeout 单位:毫秒 ms + // 非必须, 默认 30000 指客户端从服务器读取数据的timeout,超出后会抛出SocketTimeOutException + paymentParams.put("adapay_socket_timeout", 1500); + + // 设置网络区域 + // 非必须, 默认 shanghai, 如果要使用其他区域请提交工单备注服务器公网出口IP地址申请开通(如:beijing) + paymentParams.put("adapay_region", "beijing"); + + + paymentParams.put("app_id", app_id); + paymentParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis()); + paymentParams.put("pay_channel", "alipay"); + paymentParams.put("pay_amt", "0.01"); + + paymentParams.put("goods_title", "your goods title"); + paymentParams.put("goods_desc", "your goods desc"); + + paymentParams.put("div_members", ""); + + + //调用sdk方法,创建支付,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("支付交易,请求参数:" + JSON.toJSONString(paymentParams)); + payment = Payment.create(paymentParams); + + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + System.out.println("支付交易,返回参数:" + JSON.toJSONString(payment)); + System.out.println("=======execute payment end======="); + return payment; + } + + + /** + * 关闭一个支付交易 + * + * @param paymentId 要关闭的支付id + * @return 关闭的支付对象 + * @throws Exception 异常 + */ + public Map closePayment(String paymentId) throws Exception { + System.out.println("=======close payment begin======="); + //关闭支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + //调用sdk方法,关闭支付,得到支付对象 + Map payment = new HashMap<>(); + try { + Map paymentParams = new HashMap<>(10); + + paymentParams.put("payment_id", paymentId); + + // 设置超时时间 单位毫秒 类型 int + // adapay_connection_request_timeout 类型 int, 单位:毫秒 ms + // 非必须, 默认 10000 指从连接池获取连接的 timeout + paymentParams.put("adapay_connection_request_timeout", 1500); + // adapay_connect_timeout 单位:毫秒 ms + // 非必须, 默认 30000 指客户端和服务器建立连接的timeout + paymentParams.put("adapay_connect_timeout", 1500); + // adapay_socket_timeout 单位:毫秒 ms + // 非必须, 默认 30000 指客户端从服务器读取数据的timeout,超出后会抛出SocketTimeOutException + paymentParams.put("adapay_socket_timeout", 1500); + + // 设置网络区域 + // 非必须, 默认 shanghai, 如果要使用其他区域请提交工单备注服务器公网出口IP地址申请开通(如:beijing) + paymentParams.put("adapay_region", "beijing"); + + + paymentParams.put("reason", "reason"); + paymentParams.put("expend", "expend"); + paymentParams.put("notify_url", "notify_url"); + System.out.println("关单请求参数:" + JSON.toJSONString(paymentId)); + payment = Payment.close(paymentParams); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + System.out.println("关单返回参数:" + JSON.toJSONString(payment)); + + System.out.println("=======close payment end======="); + return payment; + } + + /** + * 查询一个支付交易 + * + * @param paymentId 要查询的支付id + * @return 查询的支付对象 + * @throws Exception 异常 + */ + public Map queryPayment(String paymentId) throws Exception { + System.out.println("=======query payment begin======="); + //查询支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/index.html + //调用sdk方法,查询支付交易,得到支付对象 + Map payment = new HashMap<>(); + try { + System.out.println("支付查询请求参数:" + JSON.toJSONString(paymentId)); + payment = Payment.query(paymentId); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + + System.out.println("支付查询返回参数:" + JSON.toJSONString(payment)); + System.out.println("=======query payment end======="); + return payment; + } + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java new file mode 100644 index 000000000..05b4c5cf0 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java @@ -0,0 +1,157 @@ +package com.huifu.adapay.demo; + +import java.util.HashMap; +import java.util.Map; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.Refund; + +/** + * @author jane.zhao + */ +public class RefundDemo extends BaseDemo { + + /** + * 运行退款类接口 + * + * @throws Exception 异常 + */ + public static void executeRefundTest(String merchantKey, String paymentId) throws Exception { + RefundDemo demo = new RefundDemo(); + //退款接口 + Map refund = demo.executeRefund(merchantKey, paymentId); + //退款查询接口(通过pamentId查询) + demo.queryByPaymentId(merchantKey, paymentId); + //退款查询接口(通过refundId查询) + demo.queryByRefundId(merchantKey, (String) refund.get("id")); + } + + /** + * 执行一个退款交易 + * + * @param paymentId 要退款的原支付paymentId + * @return 创建的退款对象 + * @throws Exception 异常 + */ + public Map executeRefund(String merchantKey, String paymentId) throws Exception { + System.out.println("=======execute refund begin======="); + Map refundParams = new HashMap(2); + refundParams.put("refund_amt", "0.01"); + refundParams.put("app_id", "your appid"); + refundParams.put("refund_order_no", "jsdk_refund_"+System.currentTimeMillis()); + System.out.println("退款请求参数:" + JSON.toJSONString(refundParams)); + Map refund = Refund.create(paymentId, refundParams, merchantKey); + System.out.println("退款返回参数:" + JSON.toJSONString(refund)); + System.out.println("=======execute refund end======="); + + return refund; + } + + /** + * 根据原支付id查询一个退款交易 + * + * @param paymentId 要查询退款的原支付paymentId + * @return 查询的退款对象,可能含多个退款明细RefundDetail + * @throws Exception 异常 + */ + public Map queryByPaymentId(String merchantKey, String paymentId) throws Exception { + System.out.println("=======query refund by paymentId begin======="); + Map refundParams = new HashMap(1); + refundParams.put("payment_id", paymentId); + System.out.println("通过原支付ID查询退款交易,请求参数:" + JSON.toJSONString(refundParams)); + Map refund = Refund.query(refundParams, merchantKey); + System.out.println("通过原支付ID查询退款交易,返回参数:" + JSON.toJSONString(refund)); + System.out.println("=======query refund by paymentId end======="); + return refund; + } + + /** + * 根据退款refundId查询一个退款交易 + * + * @param refundId 要查询的退款refundId + * @return 查询的退款对象 + * @throws Exception 异常 + */ + public Map queryByRefundId(String merchantKey, String refundId) throws Exception { + System.out.println("=======query refund by refundid begin======="); + Map refundParams = new HashMap(1); + refundParams.put("refund_id", refundId); + System.out.println("通过refundId查询退款交易,请求参数:" + JSON.toJSONString(refundParams)); + Map refund = Refund.query(refundParams, merchantKey); + System.out.println("通过refundId查询退款交易,返回参数:" + JSON.toJSONString(refund)); + System.out.println("=======query refund by refundid end======="); + return refund; + } + + /** + * 运行退款类接口 + * + * @throws Exception 异常 + */ + public static void executeRefundTest( String paymentId) throws Exception { + RefundDemo demo = new RefundDemo(); + //退款接口 + Map refund = demo.executeRefund( paymentId); + //退款查询接口(通过pamentId查询) + demo.queryByPaymentId( paymentId); + //退款查询接口(通过refundId查询) + demo.queryByRefundId( (String) refund.get("id")); + } + + /** + * 执行一个退款交易 + * + * @param paymentId 要退款的原支付paymentId + * @return 创建的退款对象 + * @throws Exception 异常 + */ + public Map executeRefund( String paymentId) throws Exception { + System.out.println("=======execute refund begin======="); + Map refundParams = new HashMap(2); + refundParams.put("refund_amt", "0.01"); + refundParams.put("app_id", "your appid"); + refundParams.put("refund_order_no", "jsdk_refund_"+System.currentTimeMillis()); + System.out.println("退款请求参数:" + JSON.toJSONString(refundParams)); + Map refund = Refund.create(paymentId, refundParams); + System.out.println("退款返回参数:" + JSON.toJSONString(refund)); + System.out.println("=======execute refund end======="); + + return refund; + } + + /** + * 根据原支付id查询一个退款交易 + * + * @param paymentId 要查询退款的原支付paymentId + * @return 查询的退款对象,可能含多个退款明细RefundDetail + * @throws Exception 异常 + */ + public Map queryByPaymentId( String paymentId) throws Exception { + System.out.println("=======query refund by paymentId begin======="); + Map refundParams = new HashMap(1); + refundParams.put("payment_id", paymentId); + System.out.println("通过原支付ID查询退款交易,请求参数:" + JSON.toJSONString(refundParams)); + Map refund = Refund.query(refundParams); + System.out.println("通过原支付ID查询退款交易,返回参数:" + JSON.toJSONString(refund)); + System.out.println("=======query refund by paymentId end======="); + return refund; + } + + /** + * 根据退款refundId查询一个退款交易 + * + * @param refundId 要查询的退款refundId + * @return 查询的退款对象 + * @throws Exception 异常 + */ + public Map queryByRefundId( String refundId) throws Exception { + System.out.println("=======query refund by refundid begin======="); + Map refundParams = new HashMap(1); + refundParams.put("refund_id", refundId); + System.out.println("通过refundId查询退款交易,请求参数:" + JSON.toJSONString(refundParams)); + Map refund = Refund.query(refundParams); + System.out.println("通过refundId查询退款交易,返回参数:" + JSON.toJSONString(refund)); + System.out.println("=======query refund by refundid end======="); + return refund; + } +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java new file mode 100644 index 000000000..373896cd9 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java @@ -0,0 +1,853 @@ +package com.huifu.adapay.demo; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.Drawcash; +import com.huifu.adapay.model.SettleAccount; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author yingyong.wang + */ +public class SettleAccountDemo extends BaseDemo { + + /** + * 运行结算账户类接口 + * + * @throws Exception 异常 + */ + public static void executeSettleAccountTest(String merchantKey, String app_id, String member_id) throws Exception { + SettleAccountDemo demo = new SettleAccountDemo(); + // 创建结算账户 + Map settlecount = demo.executeCreateSettleAccount(merchantKey, app_id, member_id); + String settleCount_id = (String) settlecount.get("id"); + + + // 查询结算账户 + demo.executeQuerySettleAccount(merchantKey, settleCount_id, app_id, member_id); + + // 查询结算账户明细列表 + demo.executeQuerySettleDetails(merchantKey, app_id, member_id, settleCount_id); + // 删除结算账户 + demo.executeDeleteSettleAccount(merchantKey, settleCount_id, app_id, member_id); + + member_id = "user_test_10001"; + settleCount_id = "0023056905335360"; + + demo.executeModifySettleAccount(merchantKey, settleCount_id, app_id, member_id); + +// SettleAccountDemo.executeDrawCash(merchantKey, app_id, member_id); +// +// SettleAccountDemo.executeQueryBalance(merchantKey, app_id, member_id, settleCount_id); + + demo.executeTransfer(app_id,member_id); + + demo.executeTransferList(app_id,member_id,settleCount_id); + + demo.executeCommission(app_id,member_id); + demo.executeCommissionList(app_id); + } + + /** + * 运行查询结算明细列表接口 + * + * @throws Exception 异常 + */ +// public static void executeQuerySettleDetailTest(String merchantKey, String appId, String memberId, String settleAccountId, String beginDate, String endDate) throws Exception { +// SettleAccountDemo demo = new SettleAccountDemo(); +// demo.executeQuerySettleDetails(merchantKey, appId, memberId, settleAccountId, beginDate, endDate); +// } + + + /** + * 创建 settleCount + * + * @return 创建的settleCount 对象 + * @throws Exception 异常 + */ + public Map executeCreateSettleAccount(String merchantKey, String app_id, String member_id) throws Exception { + System.out.println("=======execute Create SettleAccount begin======="); + Map settleCountParams = new HashMap(2); + Map accountInfo = new HashMap(2); + accountInfo.put("card_id", "6222021703001692221"); + accountInfo.put("card_name", "袁电茜"); + accountInfo.put("cert_id", "310109200006062491"); + accountInfo.put("cert_type", "00"); + accountInfo.put("tel_no", "18888888881"); + accountInfo.put("bank_code", "03060000"); + accountInfo.put("bank_acct_type", "1"); + accountInfo.put("prov_code", "0031"); + accountInfo.put("area_code", "3100"); + settleCountParams.put("member_id", member_id); + settleCountParams.put("app_id", app_id); + settleCountParams.put("channel", "bank_account"); + settleCountParams.put("account_info", accountInfo); + System.out.println("创建结算账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.create(settleCountParams, merchantKey); + System.out.println("创建结算账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute Create SettleAccount end======="); + + return settleCount; + + } + + /** + * 查询 SettleAccount + * + * @param settleCount_id 待查询的settleCount_id + * @param app_id app_id + * @return 查询的settleCount 对象 + * @throws Exception 异常 + */ + public Map executeQuerySettleAccount(String merchantKey, String settleCount_id, String app_id, String member_id) throws Exception { + System.out.println("=======execute query SettleAccount begin======="); + Map settleCountParams = new HashMap(2); + settleCountParams.put("settle_account_id", settleCount_id); + settleCountParams.put("member_id", member_id); + settleCountParams.put("app_id", app_id); + System.out.println("查询结算账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.query(settleCountParams, merchantKey); + System.out.println("查询结算账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute query SettleAccount end======="); + + return settleCount; + } + + /** + * 删除 SettleAccount + * + * @param settleCount_id 待删除的settleCount_id + * @param app_id app_id + * @return delete的settleCount 对象 + * @throws Exception 异常 + */ + public Map executeDeleteSettleAccount(String merchantKey, String settleCount_id, String app_id, String member_id) throws Exception { + System.out.println("=======execute delete SettleAccount begin======="); + Map settleCountParams = new HashMap(2); + settleCountParams.put("settle_account_id", settleCount_id); + settleCountParams.put("member_id", member_id); + settleCountParams.put("app_id", app_id); + System.out.println("删除结算账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.delete(settleCountParams, merchantKey); + System.out.println("删除结算账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute delete SettleAccount end======="); + + return settleCount; + } + + /** + * 查询结算明细列表 + * + * @param merchantKey + * @param app_id app_id + * @param member_id 待查询的member_id + * @param settleAccountId 待查询的settleAccountId + * @return + * @throws Exception 异常 + */ + public Map executeQuerySettleDetails(String merchantKey, String app_id, String member_id, + String settleAccountId) throws Exception { + System.out.println("=======execute query settle details begin======="); + Map querySettleDetailParams = new HashMap(2); + querySettleDetailParams.put("app_id", app_id); + querySettleDetailParams.put("member_id", member_id); + querySettleDetailParams.put("settle_account_id", settleAccountId); + querySettleDetailParams.put("begin_date", "20191008"); + querySettleDetailParams.put("end_date", "20191010"); + System.out.println("查询结算明细列表,请求参数:" + JSON.toJSONString(querySettleDetailParams)); + Map settleCount = SettleAccount.detail(querySettleDetailParams, merchantKey); + System.out.println("查询结算明细列表,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute query settle details end======="); + + return settleCount; + } + + + /** + * 运行结算账户类接口 + * + * @throws Exception 异常 + */ + public static void executeSettleAccountTest(String app_id, String member_id) throws Exception { + SettleAccountDemo demo = new SettleAccountDemo(); + // 创建结算账户 + Map settlecount = demo.executeCreateSettleAccount(app_id, member_id); + String settleCount_id = (String) settlecount.get("id"); + // 查询结算账户 + demo.executeQuerySettleAccount(settleCount_id, app_id, member_id); + // 查询结算账户明细列表 + demo.executeQuerySettleDetails(app_id, member_id, settleCount_id); + + demo.executeTransfer(app_id,member_id); + + demo.executeTransferList(app_id,member_id,settleCount_id); + + demo.executeFreeze(app_id,member_id); + + demo.executeFreezeList(app_id,member_id,settleCount_id); + + demo.executeUnFreeze(app_id,member_id); + + demo.executeUnFreezeList(app_id,member_id,settleCount_id); + + demo.executeCommission(app_id,member_id); + + demo.executeCommissionList(app_id); + } + + /** + * 运行查询结算明细列表接口 + * + * @throws Exception 异常 + */ +// public static void executeQuerySettleDetailTest( String appId, String memberId, String settleAccountId, String beginDate, String endDate) throws Exception { +// SettleAccountDemo demo = new SettleAccountDemo(); +// demo.executeQuerySettleDetails( appId, memberId, settleAccountId, beginDate, endDate); +// } + + + /** + * 创建 settleCount + * + * @return 创建的settleCount 对象 + * @throws Exception 异常 + */ + public Map executeCreateSettleAccount(String app_id, String member_id) throws Exception { + System.out.println("=======execute Create SettleAccount begin======="); + Map settleCountParams = new HashMap(2); + Map accountInfo = new HashMap(2); + accountInfo.put("card_id", "6222021703001692221"); + accountInfo.put("card_name", "袁电茜"); + accountInfo.put("cert_id", "310109200006062491"); + accountInfo.put("cert_type", "00"); + accountInfo.put("tel_no", "18888888881"); + accountInfo.put("bank_code", "03060000"); + accountInfo.put("bank_acct_type", "1"); + accountInfo.put("prov_code", "0031"); + accountInfo.put("area_code", "3100"); + settleCountParams.put("member_id", member_id); + settleCountParams.put("app_id", app_id); + settleCountParams.put("channel", "bank_account"); + settleCountParams.put("account_info", accountInfo); + System.out.println("创建结算账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.create(settleCountParams); + System.out.println("创建结算账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute Create SettleAccount end======="); + + return settleCount; + + } + + /** + * 查询 SettleAccount + * + * @param settleCount_id 待查询的settleCount_id + * @param app_id app_id + * @return 查询的settleCount 对象 + * @throws Exception 异常 + */ + public Map executeQuerySettleAccount(String settleCount_id, String app_id, String member_id) throws Exception { + System.out.println("=======execute query SettleAccount begin======="); + Map settleCountParams = new HashMap(2); + settleCountParams.put("settle_account_id", settleCount_id); + settleCountParams.put("member_id", member_id); + settleCountParams.put("app_id", app_id); + System.out.println("查询结算账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.query(settleCountParams); + System.out.println("查询结算账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute query SettleAccount end======="); + + return settleCount; + } + + /** + * 修改 SettleAccount + * + * @param settleCount_id 待修改的settleCount_id + * @param app_id app_id + * @return 修改的settleCount 对象 + * @throws Exception 异常 + */ + public Map executeModifySettleAccount(String settleCount_id, String app_id, String member_id) throws Exception { + System.out.println("=======execute modify SettleAccount begin======="); + Map settleCountParams = new HashMap(2); + settleCountParams.put("settle_account_id", settleCount_id); + settleCountParams.put("member_id", member_id); + settleCountParams.put("app_id", app_id); + + settleCountParams.put("min_amt", "0.10"); + settleCountParams.put("remained_amt", "0.10"); + System.out.println("修改结算账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.update(settleCountParams); + System.out.println("修改结算账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute modify SettleAccount end======="); + + return settleCount; + } + + /** + * 修改 SettleAccount + * + * @param settleCount_id 待修改的settleCount_id + * @param app_id app_id + * @return 修改的settleCount 对象 + * @throws Exception 异常 + */ + public Map executeModifySettleAccount(String merchantKey, String settleCount_id, String app_id, String member_id) throws Exception { + System.out.println("=======execute modify SettleAccount begin======="); + Map settleCountParams = new HashMap(2); + settleCountParams.put("settle_account_id", settleCount_id); + settleCountParams.put("member_id", member_id); + settleCountParams.put("app_id", app_id); + settleCountParams.put("min_amt", ""); + settleCountParams.put("remained_amt", ""); + + System.out.println("修改结算账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.modify(settleCountParams, merchantKey); + System.out.println("修改结算账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute modify SettleAccount end======="); + + return settleCount; + } + + + /** + * 删除 SettleAccount + * + * @param settleCount_id 待删除的settleCount_id + * @param app_id app_id + * @return delete的settleCount 对象 + * @throws Exception 异常 + */ + public Map executeDeleteSettleAccount(String settleCount_id, String app_id, String member_id) throws Exception { + System.out.println("=======execute delete SettleAccount begin======="); + Map settleCountParams = new HashMap(2); + settleCountParams.put("settle_account_id", settleCount_id); + settleCountParams.put("member_id", member_id); + settleCountParams.put("app_id", app_id); + System.out.println("删除结算账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.delete(settleCountParams); + System.out.println("删除结算账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute delete SettleAccount end======="); + + return settleCount; + } + + /** + * 查询结算明细列表 + * + * @param app_id app_id + * @param member_id 待查询的member_id + * @param settleAccountId 待查询的settleAccountId + * @return + * @throws Exception 异常 + */ + public Map executeQuerySettleDetails(String app_id, String member_id, + String settleAccountId) throws Exception { + System.out.println("=======execute query settle details begin======="); + Map querySettleDetailParams = new HashMap(2); + querySettleDetailParams.put("app_id", app_id); + querySettleDetailParams.put("member_id", member_id); + querySettleDetailParams.put("settle_account_id", settleAccountId); + querySettleDetailParams.put("begin_date", "20191008"); + querySettleDetailParams.put("end_date", "20191010"); + System.out.println("查询结算明细列表,请求参数:" + JSON.toJSONString(querySettleDetailParams)); + Map settleCount = SettleAccount.detail(querySettleDetailParams); + System.out.println("查询结算明细列表,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute query settle details end======="); + + return settleCount; + } + + /** + * 取现 + * + * @param merchantKey + * @param app_id + * @param member_id + * @return + * @throws Exception + */ + public static Map executeDrawCash(String merchantKey, String app_id, String member_id) throws Exception { + System.out.println("=======execute modify SettleAccount begin======="); + Map settleCountParams = new HashMap(); + + settleCountParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis()); + settleCountParams.put("cash_amt", "0.01"); + settleCountParams.put("member_id", "user_00008"); + settleCountParams.put("app_id", app_id); + // settleCountParams.put("settle_account_id", "0008919797515968"); + settleCountParams.put("cash_type", "T1"); + settleCountParams.put("notify_url", ""); + + System.out.println("取现接口,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = Drawcash.create(settleCountParams, merchantKey); + System.out.println("取现接口返回参数" + JSON.toJSONString(settleCount)); + System.out.println("=======execute modify SettleAccount end======="); + + return settleCount; + } + + /** + * 查询余额 + * + * @param merchantKey + * @param app_id + * @param member_id + * @param settleCount_id + * @return + * @throws Exception + */ + public static Map executeQueryBalance(String merchantKey, String app_id, String member_id, String settleCount_id) throws Exception { + System.out.println("=======execute modify SettleAccount begin======="); + Map settleCountParams = new HashMap(); + + settleCountParams.put("app_id", app_id); + settleCountParams.put("member_id", "user_00008"); + settleCountParams.put("settle_account_id", "0035172521665088"); + + + System.out.println("查询余额账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.balance(settleCountParams, merchantKey); + System.out.println("查询余额账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute modify SettleAccount end======="); + + return settleCount; + } + + /** + * 取现 + * + * @param app_id + * @param member_id + * @return + * @throws Exception + */ + public static Map executeDrawCash(String app_id, String member_id) throws Exception { + System.out.println("=======execute modify SettleAccount begin======="); + Map settleCountParams = new HashMap(); + + settleCountParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis()); + settleCountParams.put("cash_amt", "0.01"); + settleCountParams.put("member_id", "user_00008"); + settleCountParams.put("app_id", app_id); + // settleCountParams.put("settle_account_id", "0008919797515968"); + settleCountParams.put("cash_type", "T1"); + settleCountParams.put("notify_url", ""); + + System.out.println("取现接口,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = Drawcash.create(settleCountParams); + System.out.println("取现接口返回参数" + JSON.toJSONString(settleCount)); + System.out.println("=======execute modify SettleAccount end======="); + + return settleCount; + } + + /** + * 查询余额 + * + * @param app_id + * @param member_id + * @param settleCount_id + * @return + * @throws Exception + */ + public static Map executeQueryBalance(String app_id, String member_id, String settleCount_id) throws Exception { + System.out.println("=======execute modify SettleAccount begin======="); + Map settleCountParams = new HashMap(); + + settleCountParams.put("app_id", app_id); + settleCountParams.put("member_id", "user_00008"); + settleCountParams.put("settle_account_id", "0035172521665088"); + + + System.out.println("查询余额账户,请求参数:" + JSON.toJSONString(settleCountParams)); + Map settleCount = SettleAccount.balance(settleCountParams); + System.out.println("查询余额账户,返回参数:" + JSON.toJSONString(settleCount)); + System.out.println("=======execute modify SettleAccount end======="); + + return settleCount; + } + + /** + * 创建转账对象 + * + * @param app_id + * @param member_id + * @return + * @throws Exception + */ + public Map executeTransfer(String app_id, String member_id) throws Exception { + System.out.println("=======execute transfer SettleAccount begin======="); + Map transferParams = new HashMap<>(); + transferParams.put("order_no", "order_no_123"); + transferParams.put("trans_amt", "0.01"); + transferParams.put("app_id", "app_XXXXXXXX"); + transferParams.put("in_member_id", "0"); + transferParams.put("out_member_id", "user_member_id_test"); + System.out.println("创建转账对象,请求参数:" + JSON.toJSONString(transferParams)); + + Map result = SettleAccount.transfer(transferParams); + System.out.println("创建转账对象,返回参数:" + JSON.toJSONString(result)); + + System.out.println("=======execute transfer SettleAccount end======="); + + return result; + } + + /** + * 创建转账对象 + * + * @param app_id + * @param member_id + * @return + * @throws Exception + */ + public Map executeTransfer(String merchantKey, String app_id, String member_id) throws Exception { + System.out.println("=======execute transfer SettleAccount begin======="); + Map transferParams = new HashMap<>(); + transferParams.put("order_no", "order_no_124"); + transferParams.put("trans_amt", "0.01"); + transferParams.put("app_id", "app_XXXXXXXX"); + transferParams.put("in_member_id", "0"); + transferParams.put("out_member_id", "user_member_id_test"); + System.out.println("创建转账对象,请求参数:" + JSON.toJSONString(transferParams)); + + Map result = SettleAccount.transfer(transferParams); + System.out.println("创建转账对象,返回参数:" + JSON.toJSONString(result)); + + System.out.println("=======execute transfer SettleAccount end======="); + + return result; + } + + /** + * 查询账户转账对象列表 + * + * @param app_id + * @param member_id + * @param settleCount_id + * @return + * @throws Exception + */ + public Map executeTransferList(String app_id, String member_id, String settleCount_id) throws Exception { + System.out.println("=======execute query transferList begin======="); + Map transferListParams = new HashMap(); + + transferListParams.put("app_id", "app_XXXXXXXX"); + transferListParams.put("status", "succeeded"); + transferListParams.put("page_index", "1"); + transferListParams.put("page_size", "10"); + transferListParams.put("created_gte", "1571466657929"); + transferListParams.put("created_lte", "1571898657929"); + + System.out.println("查询账户转账对象列表,请求参数:" + JSON.toJSONString(transferListParams)); + Map result = SettleAccount.transferList(transferListParams); + System.out.println("查询账户转账对象列表,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute query transferList end======="); + + return result; + } + + /** + * 查询账户转账对象列表 + * + * @param app_id + * @param member_id + * @param settleCount_id + * @return + * @throws Exception + */ + public Map executeTransferList(String merchantKey, String app_id, String member_id, String settleCount_id) throws Exception { + System.out.println("=======execute query transferList begin======="); + Map transferListParams = new HashMap(); + + transferListParams.put("app_id", "app_XXXXXXXX"); + transferListParams.put("status", "succeeded"); + transferListParams.put("page_index", "1"); + transferListParams.put("page_size", "10"); + transferListParams.put("created_gte", "1571466657928"); + transferListParams.put("created_lte", "1571898657928"); + + System.out.println("查询账户转账对象列表,请求参数:" + JSON.toJSONString(transferListParams)); + Map result = SettleAccount.transferList(transferListParams); + System.out.println("查询账户转账对象列表,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute query transferList end======="); + + return result; + } + + /** + * 创建冻结对象 + * + * @param app_id + * @param member_id + * @return + * @throws Exception + */ + public Map executeFreeze(String app_id, String member_id) throws Exception { + System.out.println("=======execute freeze SettleAccount begin======="); + Map freezeParam = new HashMap(4); + freezeParam.put("order_no", "1579163031383"); + freezeParam.put("app_id", "app_XXXXXXXX"); + freezeParam.put("account_freeze_id", "002112020111717230410174704123849117696"); + Map result = SettleAccount.freeze(freezeParam); + System.out.println("创建冻结对象,返回参数:" + JSON.toJSONString(result)); + + System.out.println("=======execute freeze SettleAccount end======="); + + return result; + } + + /** + * 创建冻结对象 + * + * @param app_id + * @param member_id + * @return + * @throws Exception + */ + public Map executeFreeze(String merchantKey, String app_id, String member_id) throws Exception { + System.out.println("=======execute freeze SettleAccount begin======="); + Map freezeParam = new HashMap(4); + freezeParam.put("order_no", "1579163031384"); + freezeParam.put("app_id", "app_XXXXXXXX"); + freezeParam.put("account_freeze_id", "002112020111717230410174704123849117696"); + Map result = SettleAccount.freeze(freezeParam); + System.out.println("创建冻结对象,返回参数:" + JSON.toJSONString(result)); + + System.out.println("=======execute freeze SettleAccount end======="); + return result; + } + + /** + * 查询账户冻结对象列表 + * + * @param app_id + * @param member_id + * @param settleCount_id + * @return + * @throws Exception + */ + public Map executeFreezeList(String app_id, String member_id, String settleCount_id) throws Exception { + System.out.println("=======execute query freezeList begin======="); + Map params = new HashMap<>(); + System.out.println("查询账户冻结对象列表,请求参数:" + JSON.toJSONString(params)); + params.put("app_id", "app_XXXXXXXX"); + params.put("status", "succeeded"); + params.put("page_index", "1"); + params.put("page_size", "10"); + params.put("created_gte", "1571466657929"); + params.put("created_lte", "1571898657929"); + Map result = SettleAccount.freezeList(params); + System.out.println("查询账户冻结对象列表,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute query freezeList end======="); + return result; + } + + /** + * 查询账户冻结对象列表 + * + * @param app_id + * @param member_id + * @param settleCount_id + * @return + * @throws Exception + */ + public Map executeFreezeList(String merchantKey, String app_id, String member_id, String settleCount_id) throws Exception { + System.out.println("=======execute query freezeList begin======="); + Map params = new HashMap<>(); + System.out.println("查询账户冻结对象列表,请求参数:" + JSON.toJSONString(params)); + params.put("app_id", "app_XXXXXXXX"); + params.put("status", "succeeded"); + params.put("page_index", "1"); + params.put("page_size", "10"); + params.put("created_gte", "1571466657928"); + params.put("created_lte", "1571898657928"); + Map result = SettleAccount.freezeList(params); + System.out.println("查询账户冻结对象列表,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute query freezeList end======="); + return result; + } + + /** + * 创建解冻对象 + * + * @param app_id + * @param member_id + * @return + * @throws Exception + */ + public Map executeUnFreeze(String app_id, String member_id) throws Exception { + System.out.println("=======execute unfreeze SettleAccount begin======="); + Map unfreezeParam = new HashMap(4); + unfreezeParam.put("order_no", "1579163031383"); + unfreezeParam.put("app_id", "app_XXXXXXXX"); + unfreezeParam.put("account_freeze_id", "002112020111717230410174704123849117696"); + Map result = SettleAccount.unfreeze(unfreezeParam); + System.out.println("创建解冻对象,返回参数:" + JSON.toJSONString(result)); + + System.out.println("=======execute unfreeze SettleAccount end======="); + + return result; + } + + /** + * 创建解冻对象 + * + * @param app_id + * @param member_id + * @return + * @throws Exception + */ + public Map executeUnFreeze(String merchantKey, String app_id, String member_id) throws Exception { + System.out.println("=======execute unfreeze SettleAccount begin======="); + Map unfreezeParam = new HashMap(4); + unfreezeParam.put("order_no", "1579163031384"); + unfreezeParam.put("app_id", "app_XXXXXXXX"); + unfreezeParam.put("account_freeze_id", "002112020111717230410174704123849117696"); + Map result = SettleAccount.unfreeze(unfreezeParam); + System.out.println("创建解冻对象,返回参数:" + JSON.toJSONString(result)); + + System.out.println("=======execute unfreeze SettleAccount end======="); + + return result; + } + + /** + * 查询账户解冻对象列表 + * + * @param app_id + * @param member_id + * @param settleCount_id + * @return + * @throws Exception + */ + public Map executeUnFreezeList(String app_id, String member_id, String settleCount_id) throws Exception { + System.out.println("=======execute query unfreezeList begin======="); + Map params = new HashMap<>(); + System.out.println("查询账户解冻对象列表,请求参数:" + JSON.toJSONString(params)); + params.put("app_id", "app_XXXXXXXX"); + params.put("status", "succeeded"); + params.put("page_index", "1"); + params.put("page_size", "10"); + params.put("created_gte", "1571466657928"); + params.put("created_lte", "1571898657928"); + Map result = SettleAccount.unfreezeList(params); + System.out.println("查询账户解冻对象列表,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute query unfreezeList end======="); + return result; + } + + /** + * 查询账户解冻对象列表 + * + * @param app_id + * @param member_id + * @param settleCount_id + * @return + * @throws Exception + */ + public Map executeUnFreezeList(String merchantKey, String app_id, String member_id, String settleCount_id) throws Exception { + System.out.println("=======execute query unfreezeList begin======="); + Map params = new HashMap<>(); + System.out.println("查询账户解冻对象列表,请求参数:" + JSON.toJSONString(params)); + params.put("app_id", "app_XXXXXXXX"); + params.put("status", "succeeded"); + params.put("page_index", "1"); + params.put("page_size", "10"); + params.put("created_gte", "1571466657929"); + params.put("created_lte", "1571898657929"); + Map result = SettleAccount.unfreezeList(params); + System.out.println("查询账户解冻对象列表,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute query unfreezeList end======="); + return result; + } + + /** + * 创建服务商分账对象 + * + * @param app_id + * @return + * @throws Exception + */ + public Map executeCommission(String app_id, String member_id) throws Exception { + System.out.println("=======execute commissions SettleAccount begin======="); + Map params = new HashMap(4); + params.put("order_no", "commissions_10414212480035000003"); + params.put("payment_id", "002112021011909284110197415174743904256"); + params.put("trans_amt", "0.01"); + System.out.println("创建服务商分账对象,请求参数:" + JSON.toJSONString(params)); + Map result = SettleAccount.commission(params); + System.out.println("创建服务商分账对象,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute commissions SettleAccount end======="); + return result; + } + + /** + * 创建服务商分账对象 + * + * @param app_id + * @return + * @throws Exception + */ + public Map executeCommission(String merchantKey, String app_id, String member_id) throws Exception { + System.out.println("=======execute commissions SettleAccount begin======="); + Map params = new HashMap(4); + params.put("order_no", "1579163031383"); + params.put("payment_id", "002112020111717230410174704123849117696"); + params.put("trans_amt", "0.01"); + System.out.println("创建服务商分账对象,请求参数:" + JSON.toJSONString(params)); + Map result = SettleAccount.commission(params,merchantKey); + System.out.println("创建服务商分账对象,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute commissions SettleAccount end======="); + return result; + } + + /** + * 查询服务商分账对象列表 + * + * @param app_id + * @return + * @throws Exception + */ + public Map executeCommissionList(String app_id) throws Exception { + System.out.println("=======execute query unfreezeList begin======="); + Map params = new HashMap<>(); + params.put("app_id", app_id); + params.put("status", "succeeded"); + params.put("page_index", "1"); + params.put("page_size", "10"); + params.put("created_gte", "1571466657929"); + params.put("created_lte", "1571898657929"); + System.out.println("查询服务商分账对象列表,请求参数:" + JSON.toJSONString(params)); + Map result = SettleAccount.commissionList(params); + System.out.println("查询服务商分账对象列表,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute query unfreezeList end======="); + return result; + } + + /** + * 查询服务商分账对象列表 + * + * @param app_id + * @return + * @throws Exception + */ + public Map executeCommissionList(String merchantKey, String app_id) throws Exception { + System.out.println("=======execute query unfreezeList begin======="); + Map params = new HashMap<>(); + params.put("app_id", app_id); + params.put("status", "succeeded"); + params.put("page_index", "1"); + params.put("page_size", "10"); + params.put("created_gte", "1571466657929"); + params.put("created_lte", "1571898657929"); + System.out.println("查询服务商分账对象列表,请求参数:" + JSON.toJSONString(params)); + Map result = SettleAccount.commissionList(params,merchantKey); + System.out.println("查询服务商分账对象列表,返回参数:" + JSON.toJSONString(result)); + System.out.println("=======execute query unfreezeList end======="); + return result; + } +} From 46806788a1a0c9780dca684efdb3a27a6aed7ed5 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Fri, 21 Apr 2023 10:48:17 +0800 Subject: [PATCH 03/23] update huifu --- .../com/jsowell/adapay/demo/MainDemo.java | 296 +++++++++--------- 1 file changed, 148 insertions(+), 148 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java index 8bc5c7556..58d8aa4d4 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java @@ -11,177 +11,177 @@ import java.util.Map; * @author jane.zhao */ public class MainDemo { - public static void main(String[] args) throws Exception { - //若是商户只是自己对接adapay,请使用如下demo - testMerchant(); + public static void main(String[] args) throws Exception { + //若是商户只是自己对接adapay,请使用如下demo + testMerchant(); - //若是技术性渠道商为其它商户提供服务功能,请使用多商户模式 -// testMultiMerchant(); - } + //若是技术性渠道商为其它商户提供服务功能,请使用多商户模式 + testMultiMerchant(); + } - public static void testMerchant() throws Exception { - /** - * debug 模式,开启后有详细的日志 - */ - Adapay.debug = true; + public static void testMerchant() throws Exception { + /** + * debug 模式,开启后有详细的日志 + */ + Adapay.debug = true; - /** - * prodMode 模式,默认为生产模式,false可以使用mock模式 - */ - Adapay.prodMode = true; + /** + * prodMode 模式,默认为生产模式,false可以使用mock模式 + */ + Adapay.prodMode = true; - /** - * 初始化商户配置,服务器启动前,必须通过该方式初始化商户配置完成 - * apiKey为prod模式的API KEY - * mockApiKey为mock模式的API KEY - * rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥 - */ - String apiKey = "api_live_9c14f264-e390-41df-984d-df15a6952031"; - String mockApiKey = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; - String rsaPrivateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; - MerConfig merConfig = new MerConfig(); - merConfig.setApiKey(apiKey); - merConfig.setApiMockKey(mockApiKey); - merConfig.setRSAPrivateKey(rsaPrivateKey); - Adapay.initWithMerConfig(merConfig); + /** + * 初始化商户配置,服务器启动前,必须通过该方式初始化商户配置完成 + * apiKey为prod模式的API KEY + * mockApiKey为mock模式的API KEY + * rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥 + */ + String apiKey = "api_live_9c14f264-e390-41df-984d-df15a6952031"; + String mockApiKey = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; + String rsaPrivateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; + MerConfig merConfig = new MerConfig(); + merConfig.setApiKey(apiKey); + merConfig.setApiMockKey(mockApiKey); + merConfig.setRSAPrivateKey(rsaPrivateKey); + Adapay.initWithMerConfig(merConfig); - /** - * 初始化完成,可以开始交易 - */ - String appId = "app_7d87c043-aae3-4357-9b2c-269349a980d6"; + /** + * 初始化完成,可以开始交易 + */ + String appId = "app_7d87c043-aae3-4357-9b2c-269349a980d6"; - // 运行支付类接口 + // 运行支付类接口 // String pamentId = PaymentDemo.executePaymentTest(appId); - // 带区域和超时参数的支付请求Demo - String pamentId = PaymentRegionAndRequestTimeOutDemo.executePaymentTest(appId); + // 带区域和超时参数的支付请求Demo + String pamentId = com.huifu.adapay.demo.PaymentRegionAndRequestTimeOutDemo.executePaymentTest(appId); - // //运行退款类接口 - // RefundDemo.executeRefundTest("002112020010618571810060213271697731584"); + // //运行退款类接口 + // RefundDemo.executeRefundTest("002112020010618571810060213271697731584"); - // /**用户类接口*/ - Map member = MemberDemo.executeMemberTest(appId); - String memberId = (String) member.get("member_id"); - // /** 结算户绑定*/ - SettleAccountDemo.executeSettleAccountTest("app_7d87c043-aae3-4357-9b2c-269349a980d6", memberId); - /**企业开户*/ - CorpMemberDemo.executeCorpMemberTest("app_7d87c043-aae3-4357-9b2c-269349a980d6"); + // /**用户类接口*/ + Map member = com.huifu.adapay.demo.MemberDemo.executeMemberTest(appId); + String memberId = (String) member.get("member_id"); + // /** 结算户绑定*/ + com.huifu.adapay.demo.SettleAccountDemo.executeSettleAccountTest("app_7d87c043-aae3-4357-9b2c-269349a980d6", memberId); + /**企业开户*/ + com.huifu.adapay.demo.CorpMemberDemo.executeCorpMemberTest("app_7d87c043-aae3-4357-9b2c-269349a980d6"); - /** - * 对账单下载 - */ - // BillDemo.executeBillTest(); + /** + * 对账单下载 + */ + // BillDemo.executeBillTest(); - // /** - // * 获取云闪付用户号 - // */ - // AdapayToolsDemo.executeToolsTest(appId); - // /** - // * 余额查询 - // */ - // SettleAccountDemo.executeQueryBalance(appId, "member_id", "settleCount_id"); - // /** - // *用户取现 - // */ - // SettleAccountDemo.executeDrawCash(appId, "member_id"); - // /** - // * 钱包登录申请 - // */ - // AdapayToolsDemo.executeLoginTest(appId,"member_id"); - //银行卡管理 - //FastPayDemo.executeCardTest(appId); - } + // /** + // * 获取云闪付用户号 + // */ + // AdapayToolsDemo.executeToolsTest(appId); + // /** + // * 余额查询 + // */ + // SettleAccountDemo.executeQueryBalance(appId, "member_id", "settleCount_id"); + // /** + // *用户取现 + // */ + // SettleAccountDemo.executeDrawCash(appId, "member_id"); + // /** + // * 钱包登录申请 + // */ + // AdapayToolsDemo.executeLoginTest(appId,"member_id"); + //银行卡管理 + //FastPayDemo.executeCardTest(appId); + } - public static void testMultiMerchant() throws Exception { - /** - * debug 模式,开启后与详细的日志 - */ - Adapay.debug = true; + public static void testMultiMerchant() throws Exception { + /** + * debug 模式,开启后与详细的日志 + */ + Adapay.debug = true; - /** - * prodMode 模式,默认为生产模式,false可以使用mock模式 - */ - Adapay.prodMode = true; + /** + * prodMode 模式,默认为生产模式,false可以使用mock模式 + */ + Adapay.prodMode = true; - /** - * 初始化每个商户配置,服务器启动前,必须通过该方式初始化商户配置完成 - * apiKey为prod模式的API KEY - * mockApiKey为mock模式的API KEY - * rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥 - */ - // 创建商户A的商户配置对象 - Map configPathMap = new HashMap<>(); - String apiKeyA = "api_live_9c14f264-e390-41df-984d-df15a6952031"; - String mockApiKeyA = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; - String rsaPrivateKeyA = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; - MerConfig merConfigA = new MerConfig(); - merConfigA.setApiKey(apiKeyA); - merConfigA.setApiMockKey(mockApiKeyA); - merConfigA.setRSAPrivateKey(rsaPrivateKeyA); - // 定义一个商户的A的唯一标识,交易发起时,用于定位是哪个商户发起交易 - configPathMap.put("商户A的唯一标识", merConfigA); + /** + * 初始化每个商户配置,服务器启动前,必须通过该方式初始化商户配置完成 + * apiKey为prod模式的API KEY + * mockApiKey为mock模式的API KEY + * rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥 + */ + // 创建商户A的商户配置对象 + Map configPathMap = new HashMap<>(); + String apiKeyA = "api_live_9c14f264-e390-41df-984d-df15a6952031"; + String mockApiKeyA = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; + String rsaPrivateKeyA = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; + MerConfig merConfigA = new MerConfig(); + merConfigA.setApiKey(apiKeyA); + merConfigA.setApiMockKey(mockApiKeyA); + merConfigA.setRSAPrivateKey(rsaPrivateKeyA); + // 定义一个商户的A的唯一标识,交易发起时,用于定位是哪个商户发起交易 + configPathMap.put("商户A的唯一标识", merConfigA); - // 创建商户B的商户配置对象 - String apiKeyB = "api_live_9c14f264-e390-41df-984d-df15a6952031"; - String mockApiKeyB = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; - String rsaPrivateKeyB = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; - MerConfig merConfigB = new MerConfig(); - merConfigB.setApiKey(apiKeyB); - merConfigB.setApiMockKey(mockApiKeyB); - merConfigB.setRSAPrivateKey(rsaPrivateKeyB); - // 定义一个商户的B的唯一标识,交易发起时,用于定位是哪个商户发起交易 - configPathMap.put("商户B的唯一标识", merConfigB); + // 创建商户B的商户配置对象 + String apiKeyB = "api_live_9c14f264-e390-41df-984d-df15a6952031"; + String mockApiKeyB = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; + String rsaPrivateKeyB = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; + MerConfig merConfigB = new MerConfig(); + merConfigB.setApiKey(apiKeyB); + merConfigB.setApiMockKey(mockApiKeyB); + merConfigB.setRSAPrivateKey(rsaPrivateKeyB); + // 定义一个商户的B的唯一标识,交易发起时,用于定位是哪个商户发起交易 + configPathMap.put("商户B的唯一标识", merConfigB); - // 将商户A和B的商户配置放入本地缓存 - Adapay.initWithMerConfigs(configPathMap); + // 将商户A和B的商户配置放入本地缓存 + Adapay.initWithMerConfigs(configPathMap); - /** - * 商户配置初始化完成后,可以发起交易 - */ + /** + * 商户配置初始化完成后,可以发起交易 + */ - // 运行支付类接口,其中app_id必须是商户A下的app_id - String pamentId = PaymentDemo.executePaymentTest("商户A的唯一标识", "app_7d87c043-aae3-4357-9b2c-269349a980d6"); - // String pamentI2 = PaymentDemo.executePaymentTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); + // 运行支付类接口,其中app_id必须是商户A下的app_id + String pamentId = com.huifu.adapay.demo.PaymentDemo.executePaymentTest("商户A的唯一标识", "app_7d87c043-aae3-4357-9b2c-269349a980d6"); + // String pamentI2 = PaymentDemo.executePaymentTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); - // //运行退款类接口 - // RefundDemo.executeRefundTest("yifuyun", "002112019101420422510029799145265012736"); - // RefundDemo.executeRefundTest("yifuyun", "002112019101420422610029799148904755200"); - // /** - // * 分账使用配套接口 begin - // */ - // /**用户类接口*/ - // Map member = MemberDemo.executeMemberTest("yifuyun", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); - // String memberId = (String) member.get("member_id"); - // /** 结算户绑定*/ - // SettleAccountDemo.executeSettleAccountTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029", memberId); - // /**企业开户*/ - // CorpMemberDemo.executeCorpMemberTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); - // /** - // * 分账使用配套接口 end - // */ - // //对账单下载 - // BillDemo.executeBillTest("yifuyun"); - // String appId = "app_67ba475b-26e0-4cfa-847c-0f115cae5029"; + // //运行退款类接口 + // RefundDemo.executeRefundTest("yifuyun", "002112019101420422510029799145265012736"); + // RefundDemo.executeRefundTest("yifuyun", "002112019101420422610029799148904755200"); + // /** + // * 分账使用配套接口 begin + // */ + // /**用户类接口*/ + // Map member = MemberDemo.executeMemberTest("yifuyun", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); + // String memberId = (String) member.get("member_id"); + // /** 结算户绑定*/ + // SettleAccountDemo.executeSettleAccountTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029", memberId); + // /**企业开户*/ + // CorpMemberDemo.executeCorpMemberTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); + // /** + // * 分账使用配套接口 end + // */ + // //对账单下载 + // BillDemo.executeBillTest("yifuyun"); + // String appId = "app_67ba475b-26e0-4cfa-847c-0f115cae5029"; - // /** - // * 获取云闪付用户号 - // */ - // AdapayToolsDemo.executeToolsTest(appId, "yifuyun"); - // /** - // * 余额查询 - // */ - // SettleAccountDemo.executeQueryBalance("yifuyun", appId, "member_id", "settleCount_id"); - // /** - // *用户取现 - // */ - // SettleAccountDemo.executeDrawCash("yifuyun", appId, "member_id"); - // /** - // * 钱包登录申请 - // */ - // AdapayToolsDemo.executeLoginTest(appId,"yifuyun"); + // /** + // * 获取云闪付用户号 + // */ + // AdapayToolsDemo.executeToolsTest(appId, "yifuyun"); + // /** + // * 余额查询 + // */ + // SettleAccountDemo.executeQueryBalance("yifuyun", appId, "member_id", "settleCount_id"); + // /** + // *用户取现 + // */ + // SettleAccountDemo.executeDrawCash("yifuyun", appId, "member_id"); + // /** + // * 钱包登录申请 + // */ + // AdapayToolsDemo.executeLoginTest(appId,"yifuyun"); - } + } } \ No newline at end of file From d9e138ba5d3ca174caa5b60c8b4f28e998f8c0df Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Sun, 23 Apr 2023 10:25:06 +0800 Subject: [PATCH 04/23] =?UTF-8?q?update=20=E4=BF=AE=E6=94=B9=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/yunkuaichong/impl/YKCPushCommandServiceImpl.java | 2 +- .../jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCPushCommandServiceImpl.java b/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCPushCommandServiceImpl.java index b76cfa0e3..0aaab6fcf 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCPushCommandServiceImpl.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCPushCommandServiceImpl.java @@ -271,7 +271,7 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { */ @Override public void pushProofreadTimeCommand(ProofreadTimeCommand command) { - log.info("充电桩对时,thread:{}", Thread.currentThread().getName()); + // log.info("充电桩对时,thread:{}", Thread.currentThread().getName()); String pileSn = command.getPileSn(); // Date date = new Date(); // Date parseDate = DateUtils.parseDate("2023-02-28 16:45:20"); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index ec48e229a..e340267a3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -1013,7 +1013,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { // 查出来原来的支付信息 WxpayCallbackRecord record = wxpayCallbackRecordService.selectByOrderCode(dto.getOrderCode()); if (Objects.isNull(record)) { - logger.warn("orderCode:{}, 订单退款处理逻辑, 查询订单微信支付记录为空!", dto.getOrderCode()); + logger.error("orderCode:{}, 订单退款处理逻辑, 查询订单微信支付记录为空!", dto.getOrderCode()); throw new BusinessException(ReturnCodeEnum.CODE_REFUND_ORDER_CALLBACK_RECORD_ERROR); } @@ -1021,7 +1021,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { int refundAmountInt = dto.getRefundAmount().multiply(new BigDecimal("100")).intValue(); int payerTotalInt = Integer.parseInt(record.getPayerTotal()); if (refundAmountInt > payerTotalInt) { - logger.warn("订单号:{}, 退款金额:{}(分),大于可退金额{}(分), 抛出异常", dto.getOrderCode(), refundAmountInt, payerTotalInt); + logger.error("订单号:{}, 退款金额:{}(分),大于可退金额{}(分), 抛出异常", dto.getOrderCode(), refundAmountInt, payerTotalInt); throw new BusinessException(ReturnCodeEnum.CODE_REFUND_ORDER_AMOUNT_ERROR); } From e40db7e32b8512c1f83a4e7437a7cfedd53299a4 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Sun, 23 Apr 2023 11:22:28 +0800 Subject: [PATCH 05/23] =?UTF-8?q?update=20=E8=AE=B0=E5=BD=95=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OrderBasicInfoServiceImpl.java | 18 ----------- .../service/impl/WechatPayServiceImpl.java | 3 +- .../response/WechatPayNotifyResource.java | 31 +++++++++++++++++++ 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index e340267a3..7cafeb1ce 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -992,24 +992,6 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { * 订单退款处理逻辑 */ private WechatPayRefundResponse refundForOrder(WeChatRefundDTO dto) { - // 查到orderCode对应的支付订单 - // OrderBasicInfo orderInfo = this.getOrderInfoByOrderCode(dto.getOrderCode()); - // // 校验订单 - // if (Objects.isNull(orderInfo)) { - // logger.warn("orderCode:{}, 订单退款处理逻辑, 查询订单为空!", dto.getOrderCode()); - // throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_NULL_ERROR); - // } - // // 判断退款金额,不能大于支付金额 - // BigDecimal payAmount = orderInfo.getPayAmount(); - // // BigDecimal orderAmount = orderInfo.getOrderAmount(); - // // BigDecimal amountToBeRefunded = payAmount.subtract(orderAmount); // 可退金额 - // BigDecimal amountToBeRefunded = dto.getRefundAmount(); // 可退金额 - // logger.info("订单:{}, 支付金额:{}, 需退款金额:{}", dto.getOrderCode(), payAmount, amountToBeRefunded); - // if (dto.getRefundAmount().compareTo(amountToBeRefunded) > 0) { - // // 退款金额,大于可退金额 抛出异常 - // logger.warn("退款金额:{},大于可退金额{}, 抛出异常", dto.getRefundAmount(), amountToBeRefunded); - // throw new BusinessException(ReturnCodeEnum.CODE_REFUND_ORDER_AMOUNT_ERROR); - // } // 查出来原来的支付信息 WxpayCallbackRecord record = wxpayCallbackRecordService.selectByOrderCode(dto.getOrderCode()); if (Objects.isNull(record)) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/WechatPayServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/WechatPayServiceImpl.java index 90b8cccc6..7e95bc1e8 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/WechatPayServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/WechatPayServiceImpl.java @@ -194,6 +194,7 @@ public class WechatPayServiceImpl implements WechatPayService { // 转换附属参数 PaymentScenarioDTO paymentScenarioDTO = JSONObject.parseObject(attach, PaymentScenarioDTO.class); String type = paymentScenarioDTO.getType(); + // BigDecimal amount = new BigDecimal(wechatPayNotifyResource.getAmount().getTotal()); if (StringUtils.equals(type, ScenarioEnum.ORDER.getValue())) { // 1-订单支付 @@ -225,7 +226,7 @@ public class WechatPayServiceImpl implements WechatPayService { record.setAttach(wechatPayNotifyResource.getAttach()); record.setSuccessTime(DateUtils.toLocalDateTime(wechatPayNotifyResource.getSuccess_time(), DateUtils.RFC3339)); record.setPayerOpenId(wechatPayNotifyResource.getPayer().getOpenid()); - record.setPayerTotal(wechatPayNotifyResource.getAmount().getPayer_total()); + record.setPayerTotal(wechatPayNotifyResource.getAmount().getTotal()); wxpayCallbackRecordService.insertSelective(record); } return resultMap; diff --git a/jsowell-pile/src/main/java/com/jsowell/wxpay/response/WechatPayNotifyResource.java b/jsowell-pile/src/main/java/com/jsowell/wxpay/response/WechatPayNotifyResource.java index 0c197aeb4..9b6ea5c10 100644 --- a/jsowell-pile/src/main/java/com/jsowell/wxpay/response/WechatPayNotifyResource.java +++ b/jsowell-pile/src/main/java/com/jsowell/wxpay/response/WechatPayNotifyResource.java @@ -2,6 +2,8 @@ package com.jsowell.wxpay.response; import lombok.Data; +import java.util.List; + @Data public class WechatPayNotifyResource { @@ -79,6 +81,11 @@ public class WechatPayNotifyResource { */ private Amount amount; + /** + * 优惠功能,享受优惠时返回该字段。 + */ + private List promotion_detail; + @Data public static class Payer { /** @@ -109,4 +116,28 @@ public class WechatPayNotifyResource { */ private String payer_currency; } + + @Data + public static class Promotion{ + // 券ID + private String coupon_id; + // 优惠名称 + private String name; + // 优惠范围 GLOBAL:全场代金券 SINGLE:单品优惠 + private String scope; + //优惠类型 CASH:充值型代金券 NOCASH:免充值型代金券 + private String type; + // 优惠券面额 + private String amount; + // 活动ID + private String stock_id; + // 微信出资 + private String wechatpay_contribute; + // 商户出资 + private String merchant_contribute; + // 其他出资 + private String other_contribute; + // 优惠币种 + private String currency; + } } From 36561d6169cb0d84ec2767758aaa5b698a6f2036 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Thu, 27 Apr 2023 09:53:25 +0800 Subject: [PATCH 06/23] =?UTF-8?q?update=20=E6=B1=87=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/SpringBootTestController.java | 29 +++- .../com/jsowell/adapay/common/AdaPayment.java | 154 ++++++++++++++++++ .../adapay/common/CreateAdaPaymentParam.java | 114 +++++++++++++ .../com/jsowell/adapay/common/DeviceInfo.java | 72 ++++++++ .../jsowell/adapay/service/AdapayService.java | 34 ++++ 5 files changed, 402 insertions(+), 1 deletion(-) create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/common/AdaPayment.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/common/CreateAdaPaymentParam.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/common/DeviceInfo.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index b2a2df73b..b86990d29 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -1,6 +1,9 @@ import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.huifu.adapay.model.Payment; import com.jsowell.JsowellApplication; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; @@ -154,6 +157,30 @@ public class SpringBootTestController { @Autowired private IPileAuthCardService pileAuthCardService; + /** + * 创建交易对象 + */ + @Test + public void test() { + // 请求参数 + Map paymentParams = Maps.newHashMap(); + paymentParams.put("order_no", "fasdftawefawefawsdcaseg"); + paymentParams.put("pay_amt", "0.05"); + paymentParams.put("app_id", "api_test_a6ac1931-11d6-4d76-8e73-086f8219c9e7"); + paymentParams.put("pay_channel", "wx_lite"); + paymentParams.put("goods_title", "Your goods_title"); + paymentParams.put("goods_desc", "Your goods_desc"); + paymentParams.put("description", "payment Discription"); + // paymentParams.put("div_members", [{"amount":"0.05", "fee_flag":"Y", "member_id":"member_id_test"}]); + // 调用创建方法,获取 Payment对象_ + try { + Map response = Payment.create(paymentParams); + System.out.println(response); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + } + @Test public void testupdateElecAmount() { orderBasicInfoService.updateElecAmount(); @@ -755,7 +782,7 @@ public class SpringBootTestController { } @Test - public void testGetMemberToken(){ + public void testGetMemberToken() { String memberId = JWTUtils.getMemberId("eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2NzY1MTY5MzgsImV4cCI6MTY3OTEwODkzOH0.4MwhZIOpnCfQloR7zEm2hwPOh2yyI2qxbBbTcv_SnZ4"); System.out.println(memberId); } diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/common/AdaPayment.java b/jsowell-pile/src/main/java/com/jsowell/adapay/common/AdaPayment.java new file mode 100644 index 000000000..c4851f205 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/common/AdaPayment.java @@ -0,0 +1,154 @@ +package com.jsowell.adapay.common; + +import lombok.Data; + +/** + * 关于支付,Adapay 系统内数据是通过 Payment对象 的形式进行流转,所有的支付相关信息都会存储在这个对象中, + * 您可以通过 Adapay 开放的方法创建一个新的 Payment对象,也可以通过 Payment对象 的唯一标识 id 来查询一个已经存在的 Payment对象 状态 + */ +@Data +public class AdaPayment { + /** + * String(64) + * + * 由 Adapay 生成的支付对象 id, 该 id 在 Adapay 系统内唯一 + */ + private String id; + + /** + * + * String(20) + * + * 支付对象,payment + */ + private String object; + + /** + * Timestamp + * + * 支付创建时的 10 位时间戳 + */ + private String created_time; + + /** + * String(64) + * + * 请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一 + */ + private String order_no; + + /** + * String(5) + * + * 是否 prod模式,true 是 prod模式,false 是 mock模式 + */ + private String prod_mode; + + /** + * String(64) + * + * 控制台 主页面应用的app_id + */ + private String app_id; + + /** + * String(20) + * + * 支付渠道,参见 支付渠道 说明 + */ + private String pay_channel; + + /** + * String(16) + * + * 交易金额(必须大于 0),保留两位小数点,如0.10、100.05等 + */ + private String pay_amt; + + /** + * + * String(3) + * + * 详见 货币代码 + */ + private String currency; + + /** + * String(128) + * + * 可临时用来查询支付订单状态的链接,此链接的有效期只有30分钟 + */ + private String query_url; + + /** + * String(128) + * + * 订单附加说明 + */ + private String description; + + /** + * Map + * + * 支付渠道请求成功返回的额外参数。详见 支付渠道 expend参数 说明 + */ + private String expend; + + /** + * String(64) + * + * 用户账单上的商户订单号 + */ + private String party_order_id; + + /** + * String(64) + * + * 用户账单上的交易订单号 + */ + private String out_trans_id; + + /** + * String(14) + * + * 用户支付完成时间 + */ + private String end_time; + + /** + * String(16) + * + * 当前交易状态,参见 状态 说明 + */ + private String status; + + /** + * + * String(32) + * + * 错误码,详见 错误 + */ + private String error_code; + + /** + * String(128) + * + * 错误描述,详见 错误 + */ + private String error_msg; + + /** + * String(32) + * + * 错误类型,详见 错误 + */ + private String error_type; + + /** + * String(32) + * + * 当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误 + */ + private String invalid_param; + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/common/CreateAdaPaymentParam.java b/jsowell-pile/src/main/java/com/jsowell/adapay/common/CreateAdaPaymentParam.java new file mode 100644 index 000000000..669bf71f4 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/common/CreateAdaPaymentParam.java @@ -0,0 +1,114 @@ +package com.jsowell.adapay.common; + +import lombok.Data; + +/** + * 创建Adapay 支付对象参数 + */ +@Data +public class CreateAdaPaymentParam { + /** + * String(64) + * Y + * 请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一 + */ + private String order_no; + + /** + * String(64) + * Y + * 控制台 主页面应用的app_id + */ + private String app_id; + + /** + * String(20) + * Y + * 支付渠道,参见 支付渠道 + */ + private String pay_channel; + + /** + * String(14) + * Y + * 交易金额,必须大于0,保留两位小数点,如0.10、100.05等 + */ + private String pay_amt; + + /** + * String(20) + * N + * 支付模式,delay- 延时分账模式(值为 delay 时,div_members 字段必须为空);值为空时并且div_mermbers不为空时,表示实时分账;值为空时并且div_mermbers也为空时,表示不分账 + */ + private String pay_mode; + + /** + * String(64) + * Y + * 商品标题 + */ + private String goods_title; + + /** + * String(127) + * Y + * 商品描述信息,微信小程序和微信公众号该字段最大长度42个字符 + */ + private String goods_desc; + + /** + * String(3) + * N + * 3位 ISO 货币代码,小写字母,默认为人民币:cny,详见 货币代码 + */ + private String currency; + + /** + * String + * N + * 分账对象信息列表,最多仅支持7个分账方,json 数组形式,详见 分账对象信息列表 + */ + private String div_members; + + /** + * String(128) + * N + * 订单附加说明 + */ + private String description; + + /** + * String(20) + * N + * 订单失效时间,输入格式:yyyyMMddHHmmss,最长失效时间为微信、支付宝:反扫类:3分钟;非反扫类:2小时;云闪付:1天,值为空时默认最长时效时间 + */ + private String time_expire; + + /** + * Map + * Y + * 前端设备信息,详见 设备信息 + */ + private String device_info; + + /** + * Map + * N + * 支付渠道额外参数,JSON格式,条件可输入,详见 支付渠道 expend参数 + */ + private String expend; + + /** + * String(250) + * N + * 异步通知地址,url为http/https路径,服务器POST回调,URL 上请勿附带参数 + */ + private String notify_url; + + /** + * String(1) + * N + * 手续费收取模式:O-商户手续费账户扣取手续费,I-交易金额中扣取手续费;值为空时,默认值为I;若为O时,分账对象列表中不支持传入手续费承担方 + */ + private String fee_mode; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/common/DeviceInfo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/common/DeviceInfo.java new file mode 100644 index 000000000..b5b13af02 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/common/DeviceInfo.java @@ -0,0 +1,72 @@ +package com.jsowell.adapay.common; + +import lombok.Data; + +/** + * 设备信息 + */ +@Data +public class DeviceInfo { + /** + * String(2) + * N + * 设备类型,1 :手机, 2 :平板, 3:手表, 4:PC + */ + private String device_type; + + /** + * String(64) + * Y + * 交易设备所在的公网 IP + */ + private String device_ip; + + /** + * String(8) + * N + * 终端设备号,收单机构为商户终端分配的唯一编号。当pay_channel的值为alipay_scan或wx_scan时必填。 + */ + private String device_id; + + /** + * String(64) + * N + * 交易设备 MAC + */ + private String device_mac; + + /** + * String(64) + * N + * 交易设备 IMEI + */ + private String device_imei; + + /** + * String(64) + * N + * 交易设备 IMSI + */ + private String device_imsi; + + /** + * String(64) + * N + * 交易设备 ICCID + */ + private String device_iccId; + + /** + * String(64) + * N + * 交易设备 WIFIMAC + */ + private String device_wifi_mac; + + /** + * String(64) + * N + * 交易设备 GPS + */ + private String device_gps; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java new file mode 100644 index 000000000..5cdc52653 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java @@ -0,0 +1,34 @@ +package com.jsowell.adapay.service; + +import com.google.common.collect.Maps; +import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.huifu.adapay.model.Payment; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Service +public class AdapayService { + + /** + * 创建交易对象 + */ + public void test() { + // 请求参数 + Map paymentParams = Maps.newHashMap(); + paymentParams.put("order_no", "123456789"); + paymentParams.put("pay_amt", "0.05"); + paymentParams.put("app_id", "app_XXXXXXXX"); + paymentParams.put("pay_channel", "alipay"); + paymentParams.put("goods_title", "Your goods_title"); + paymentParams.put("goods_desc", "Your goods_desc"); + paymentParams.put("description", "payment Discription"); + // paymentParams.put("div_members", [{"amount":"0.05", "fee_flag":"Y", "member_id":"member_id_test"}]); + // 调用创建方法,获取 Payment对象_ + try { + Map response = Payment.create(paymentParams); + } catch (BaseAdaPayException e) { + e.printStackTrace(); + } + } +} From 818b9177ba8781cd81d35804c44e816ebcd20400 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 9 May 2023 11:39:54 +0800 Subject: [PATCH 07/23] =?UTF-8?q?update=20=E5=8C=85=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/adapay/demo/AdapayToolsDemo.java | 2 +- .../main/java/com/jsowell/adapay/demo/BaseDemo.java | 2 +- .../main/java/com/jsowell/adapay/demo/BillDemo.java | 8 ++++---- .../java/com/jsowell/adapay/demo/CorpMemberDemo.java | 8 ++++---- .../java/com/jsowell/adapay/demo/FastPayDemo.java | 2 +- .../main/java/com/jsowell/adapay/demo/MainDemo.java | 12 ++++++------ .../java/com/jsowell/adapay/demo/MemberDemo.java | 8 ++++---- .../java/com/jsowell/adapay/demo/PaymentDemo.java | 2 +- .../demo/PaymentRegionAndRequestTimeOutDemo.java | 3 +-- .../java/com/jsowell/adapay/demo/RefundDemo.java | 8 ++++---- .../com/jsowell/adapay/demo/SettleAccountDemo.java | 2 +- 11 files changed, 28 insertions(+), 29 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/AdapayToolsDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/AdapayToolsDemo.java index 74a07f63a..9a2306cc5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/AdapayToolsDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/AdapayToolsDemo.java @@ -11,7 +11,7 @@ import java.util.Map; /** * @author yingyong.wang */ -public class AdapayToolsDemo extends com.huifu.adapay.demo.BaseDemo { +public class AdapayToolsDemo extends BaseDemo { /** * 获取银联用户号 diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BaseDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BaseDemo.java index 4c2128169..9aee13ddb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BaseDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BaseDemo.java @@ -1,4 +1,4 @@ -package com.huifu.adapay.demo; +package com.jsowell.adapay.demo; /** * @author jane.zhao diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java index 38f8fd1b1..141890f97 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java @@ -1,12 +1,12 @@ -package com.huifu.adapay.demo; - -import java.util.HashMap; -import java.util.Map; +package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; import com.huifu.adapay.model.AdapayTools; import com.huifu.adapay.model.Bill; +import java.util.HashMap; +import java.util.Map; + /** * @author yingyong.wang */ diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java index db283d018..5d28e068c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java @@ -1,12 +1,12 @@ -package com.huifu.adapay.demo; +package com.jsowell.adapay.demo; + +import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.CorpMember; import java.io.File; import java.util.HashMap; import java.util.Map; -import com.alibaba.fastjson.JSON; -import com.huifu.adapay.model.CorpMember; - /** * @author yingyong.wang */ diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java index b8f590092..048e690bd 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java @@ -1,4 +1,4 @@ -package com.huifu.adapay.demo; +package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; import com.huifu.adapay.model.FastPay; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java index 58d8aa4d4..4b58791b9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java @@ -1,4 +1,4 @@ -package com.huifu.adapay.demo; +package com.jsowell.adapay.demo; import com.huifu.adapay.Adapay; import com.huifu.adapay.model.MerConfig; @@ -55,18 +55,18 @@ public class MainDemo { // 运行支付类接口 // String pamentId = PaymentDemo.executePaymentTest(appId); // 带区域和超时参数的支付请求Demo - String pamentId = com.huifu.adapay.demo.PaymentRegionAndRequestTimeOutDemo.executePaymentTest(appId); + String pamentId = PaymentRegionAndRequestTimeOutDemo.executePaymentTest(appId); // //运行退款类接口 // RefundDemo.executeRefundTest("002112020010618571810060213271697731584"); // /**用户类接口*/ - Map member = com.huifu.adapay.demo.MemberDemo.executeMemberTest(appId); + Map member = MemberDemo.executeMemberTest(appId); String memberId = (String) member.get("member_id"); // /** 结算户绑定*/ - com.huifu.adapay.demo.SettleAccountDemo.executeSettleAccountTest("app_7d87c043-aae3-4357-9b2c-269349a980d6", memberId); + SettleAccountDemo.executeSettleAccountTest("app_7d87c043-aae3-4357-9b2c-269349a980d6", memberId); /**企业开户*/ - com.huifu.adapay.demo.CorpMemberDemo.executeCorpMemberTest("app_7d87c043-aae3-4357-9b2c-269349a980d6"); + CorpMemberDemo.executeCorpMemberTest("app_7d87c043-aae3-4357-9b2c-269349a980d6"); /** * 对账单下载 @@ -141,7 +141,7 @@ public class MainDemo { */ // 运行支付类接口,其中app_id必须是商户A下的app_id - String pamentId = com.huifu.adapay.demo.PaymentDemo.executePaymentTest("商户A的唯一标识", "app_7d87c043-aae3-4357-9b2c-269349a980d6"); + String pamentId = PaymentDemo.executePaymentTest("商户A的唯一标识", "app_7d87c043-aae3-4357-9b2c-269349a980d6"); // String pamentI2 = PaymentDemo.executePaymentTest("yidian", "app_67ba475b-26e0-4cfa-847c-0f115cae5029"); // //运行退款类接口 diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java index 46f31fc3f..677098e58 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java @@ -1,11 +1,11 @@ -package com.huifu.adapay.demo; - -import java.util.HashMap; -import java.util.Map; +package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; import com.huifu.adapay.model.Member; +import java.util.HashMap; +import java.util.Map; + /** * @author yingyong.wang diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java index 299422a62..3453b7d15 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java @@ -1,4 +1,4 @@ -package com.huifu.adapay.demo; +package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; import com.huifu.adapay.core.exception.BaseAdaPayException; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java index 1ccb759d7..45c4e7702 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java @@ -1,10 +1,9 @@ -package com.huifu.adapay.demo; +package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.model.Payment; - import java.util.HashMap; import java.util.Map; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java index 05b4c5cf0..36079389d 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java @@ -1,11 +1,11 @@ -package com.huifu.adapay.demo; - -import java.util.HashMap; -import java.util.Map; +package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; import com.huifu.adapay.model.Refund; +import java.util.HashMap; +import java.util.Map; + /** * @author jane.zhao */ diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java index 373896cd9..0e240857b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java @@ -1,4 +1,4 @@ -package com.huifu.adapay.demo; +package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; import com.huifu.adapay.model.Drawcash; From a045fe931523a5f3abde7dce09855dbc2f1b30e3 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Wed, 10 May 2023 08:19:44 +0800 Subject: [PATCH 08/23] update --- .../test/java/SpringBootTestController.java | 9 +++++++++ .../jsowell/adapay/service/AdapayService.java | 19 +++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index b86990d29..448ba4a33 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -5,6 +5,7 @@ import com.google.common.collect.Maps; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.model.Payment; import com.jsowell.JsowellApplication; +import com.jsowell.adapay.service.AdapayService; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.ykc.LoginRequestData; @@ -157,6 +158,14 @@ public class SpringBootTestController { @Autowired private IPileAuthCardService pileAuthCardService; + @Autowired + private AdapayService adapayService; + + @Test + public void testCreateAdapay() { + adapayService.createTransactionObject(); + } + /** * 创建交易对象 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java index 5cdc52653..8880812e2 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java @@ -1,5 +1,6 @@ package com.jsowell.adapay.service; +import com.alibaba.fastjson2.JSON; import com.google.common.collect.Maps; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.model.Payment; @@ -12,21 +13,23 @@ public class AdapayService { /** * 创建交易对象 + * createTransactionObject */ - public void test() { + public void createTransactionObject() { // 请求参数 Map paymentParams = Maps.newHashMap(); - paymentParams.put("order_no", "123456789"); - paymentParams.put("pay_amt", "0.05"); - paymentParams.put("app_id", "app_XXXXXXXX"); - paymentParams.put("pay_channel", "alipay"); - paymentParams.put("goods_title", "Your goods_title"); - paymentParams.put("goods_desc", "Your goods_desc"); - paymentParams.put("description", "payment Discription"); + paymentParams.put("app_id", "app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa"); + paymentParams.put("order_no", "2023050911410199622174123"); + paymentParams.put("pay_channel", "wx_lite"); + paymentParams.put("pay_amt", "0.01"); + paymentParams.put("currency", "cny"); + paymentParams.put("goods_title", "测试商品"); + paymentParams.put("goods_desc", "用于支付流程测试的商品"); // paymentParams.put("div_members", [{"amount":"0.05", "fee_flag":"Y", "member_id":"member_id_test"}]); // 调用创建方法,获取 Payment对象_ try { Map response = Payment.create(paymentParams); + System.out.println("response:" + JSON.toJSONString(response)); } catch (BaseAdaPayException e) { e.printStackTrace(); } From e5fa93ed9fcdbf28fd982537d8667e9bf73ea3d4 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Wed, 10 May 2023 08:40:20 +0800 Subject: [PATCH 09/23] =?UTF-8?q?update=20=E7=AB=99=E7=82=B9=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pile/service/impl/PileStationInfoServiceImpl.java | 6 ++++++ .../main/java/com/jsowell/pile/vo/web/PileStationVO.java | 5 +++++ .../src/views/pile/station/components/SiteInfo.vue | 9 ++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java index a346cc404..9df7f6e24 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java @@ -71,6 +71,8 @@ public class PileStationInfoServiceImpl implements IPileStationInfoService { @Autowired private RedisCache redisCache; + + /** * 查询充电站信息 * @@ -134,6 +136,7 @@ public class PileStationInfoServiceImpl implements IPileStationInfoService { // vo.setOrganizationCode(pileStationInfo.getor); vo.setPublicFlag(pileStationInfo.getPublicFlag()); vo.setOpenFlag(pileStationInfo.getOpenFlag()); + vo.setDeptId(pileStationInfo.getDeptId()); if (StringUtils.isNotBlank(pileStationInfo.getPictures())) { vo.setPictures(pileStationInfo.getPictures()); vo.setPictureList(Lists.newArrayList(pileStationInfo.getPictures().split(","))); @@ -255,6 +258,9 @@ public class PileStationInfoServiceImpl implements IPileStationInfoService { redisCache.deleteObject(redisKey); pileStationInfo.setUpdateBy(SecurityUtils.getUsername()); pileStationInfo.setUpdateTime(DateUtils.getNowDate()); + // 同步组织中的名称,联系人,电话 + // sysDeptService.updateDept() + return pileStationInfoMapper.updatePileStationInfo(pileStationInfo); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/PileStationVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/PileStationVO.java index 7eb515ac7..34f28f894 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/PileStationVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/PileStationVO.java @@ -29,6 +29,11 @@ public class PileStationVO { */ private String stationName; + /** + * 组织id + */ + private String deptId; + /** * 省市辖区编码 */ diff --git a/jsowell-ui/src/views/pile/station/components/SiteInfo.vue b/jsowell-ui/src/views/pile/station/components/SiteInfo.vue index 88011f936..b1f393387 100644 --- a/jsowell-ui/src/views/pile/station/components/SiteInfo.vue +++ b/jsowell-ui/src/views/pile/station/components/SiteInfo.vue @@ -292,6 +292,7 @@ export default { ], }, fileList: [], // 用于图片回显 + dialogVisible: null, }; }, created() { @@ -324,9 +325,11 @@ export default { const res = await getStationInfo(this.stationId); console.log(res); this.station = res.data; - var pictures = res.data.pictures.split(','); - for (let i = 0; i < pictures.length; i++) { - this.fileList.push({"url": pictures[i]}); + if (res.data.pictures != null) { + var pictures = res.data.pictures.split(','); + for (let i = 0; i < pictures.length; i++) { + this.fileList.push({"url": pictures[i]}); + } } console.log("queryStationInfo表格数据", this.station); }, From 4beef45bb210e39b9b6d632df3769a4ab5bb1552 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Wed, 10 May 2023 08:41:36 +0800 Subject: [PATCH 10/23] =?UTF-8?q?update=20=E7=AB=99=E7=82=B9=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jsowell-ui/src/views/pile/station/components/SiteInfo.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/jsowell-ui/src/views/pile/station/components/SiteInfo.vue b/jsowell-ui/src/views/pile/station/components/SiteInfo.vue index b1f393387..795ebdc4c 100644 --- a/jsowell-ui/src/views/pile/station/components/SiteInfo.vue +++ b/jsowell-ui/src/views/pile/station/components/SiteInfo.vue @@ -219,6 +219,7 @@ export default { construction: "", businessHours: "", pictures: "", + deptId: "", }, stationId: this.$route.params.id, publicFlagOptions: [ From 0bb109f52368043769399395ebfb28b1d872afb0 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Wed, 10 May 2023 08:50:19 +0800 Subject: [PATCH 11/23] update --- .../impl/PileStationInfoServiceImpl.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java index 9df7f6e24..89f0795b8 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java @@ -252,16 +252,29 @@ public class PileStationInfoServiceImpl implements IPileStationInfoService { * @return 结果 */ @Override + @Transactional(readOnly = false, propagation = Propagation.REQUIRED) public int updatePileStationInfo(PileStationInfo pileStationInfo) { // 清缓存 String redisKey = CacheConstants.SELECT_PILE_STATION_INFO_BY_ID + pileStationInfo.getId(); redisCache.deleteObject(redisKey); + pileStationInfo.setUpdateBy(SecurityUtils.getUsername()); pileStationInfo.setUpdateTime(DateUtils.getNowDate()); - // 同步组织中的名称,联系人,电话 - // sysDeptService.updateDept() + int i = pileStationInfoMapper.updatePileStationInfo(pileStationInfo); - return pileStationInfoMapper.updatePileStationInfo(pileStationInfo); + // 同步组织中的名称,联系人,电话 + SysDept sysDept = sysDeptService.selectDeptById(Long.parseLong(pileStationInfo.getDeptId())); + if (sysDept != null) { + sysDept.setDeptName(pileStationInfo.getStationName()); + sysDept.setLeader(pileStationInfo.getStationAdminName()); + sysDept.setPhone(pileStationInfo.getStationTel()); + sysDept.setUpdateTime(DateUtils.getNowDate()); + sysDeptService.updateDept(sysDept); + } + + // 再次清缓存 + redisCache.deleteObject(redisKey); + return i; } /** From 61c6d1b486ff9a820e3425f27935c1b4c0e5f55a Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Thu, 11 May 2023 15:39:15 +0800 Subject: [PATCH 12/23] update huifu --- .../src/main/java/com/jsowell/adapay/demo/BillDemo.java | 2 ++ .../main/java/com/jsowell/adapay/demo/CorpMemberDemo.java | 1 + .../src/main/java/com/jsowell/adapay/demo/FastPayDemo.java | 1 + .../src/main/java/com/jsowell/adapay/demo/MainDemo.java | 3 +++ .../src/main/java/com/jsowell/adapay/demo/MemberDemo.java | 1 + .../src/main/java/com/jsowell/adapay/demo/PaymentDemo.java | 5 ++++- .../adapay/demo/PaymentRegionAndRequestTimeOutDemo.java | 1 + .../src/main/java/com/jsowell/adapay/demo/RefundDemo.java | 1 + .../main/java/com/jsowell/adapay/demo/SettleAccountDemo.java | 3 ++- 9 files changed, 16 insertions(+), 2 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java index d4d10c35a..141890f97 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/BillDemo.java @@ -1,6 +1,8 @@ package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.AdapayTools; +import com.huifu.adapay.model.Bill; import java.util.HashMap; import java.util.Map; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java index 76cf8bed3..5d28e068c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/CorpMemberDemo.java @@ -1,6 +1,7 @@ package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.CorpMember; import java.io.File; import java.util.HashMap; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java index 5d4cf195a..048e690bd 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/FastPayDemo.java @@ -1,6 +1,7 @@ package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.FastPay; import java.util.HashMap; import java.util.Map; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java index 141a01e5c..97979140f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java @@ -1,6 +1,9 @@ package com.jsowell.adapay.demo; +import com.huifu.adapay.Adapay; +import com.huifu.adapay.model.MerConfig; + import java.util.HashMap; import java.util.Map; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java index d1277decd..677098e58 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MemberDemo.java @@ -1,6 +1,7 @@ package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.Member; import java.util.HashMap; import java.util.Map; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java index d4f538e62..3453b7d15 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentDemo.java @@ -2,7 +2,10 @@ package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; import com.huifu.adapay.core.exception.BaseAdaPayException; - +import com.huifu.adapay.model.Checkout; +import com.huifu.adapay.model.Payment; +import com.huifu.adapay.model.PaymentConfirm; +import com.huifu.adapay.model.PaymentReverse; import java.util.HashMap; import java.util.Map; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java index 10ffeb858..45c4e7702 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/PaymentRegionAndRequestTimeOutDemo.java @@ -2,6 +2,7 @@ package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.huifu.adapay.model.Payment; import java.util.HashMap; import java.util.Map; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java index 87d7136c1..36079389d 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/RefundDemo.java @@ -1,6 +1,7 @@ package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; +import com.huifu.adapay.model.Refund; import java.util.HashMap; import java.util.Map; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java index 4ebac53d2..0e240857b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/SettleAccountDemo.java @@ -1,7 +1,8 @@ package com.jsowell.adapay.demo; import com.alibaba.fastjson.JSON; - +import com.huifu.adapay.model.Drawcash; +import com.huifu.adapay.model.SettleAccount; import java.util.HashMap; import java.util.Map; From 54d0f728c41b54acec502d2094299d8cf98e1498 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Thu, 11 May 2023 16:37:41 +0800 Subject: [PATCH 13/23] update huifu --- .../main/java/com/jsowell/adapay/demo/MainDemo.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java index 97979140f..f40de5c0f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java @@ -17,7 +17,7 @@ public class MainDemo { testMerchant(); //若是技术性渠道商为其它商户提供服务功能,请使用多商户模式 - testMultiMerchant(); + // testMultiMerchant(); } public static void testMerchant() throws Exception { @@ -31,26 +31,28 @@ public class MainDemo { */ Adapay.prodMode = true; + /** * 初始化商户配置,服务器启动前,必须通过该方式初始化商户配置完成 * apiKey为prod模式的API KEY * mockApiKey为mock模式的API KEY * rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥 */ - String apiKey = "api_live_9c14f264-e390-41df-984d-df15a6952031"; - String mockApiKey = "api_test_e640fa26-bbe6-458f-ac44-a71723ee2176"; + String apiKey = "api_live_b9bff039-0598-4491-88e7-06ca6dc7289e"; + String mockApiKey = "api_test_15662261-8123-4b51-95d9-ad0af60eab53"; String rsaPrivateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; + String rsaPrivateKey2 = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAOl7qJyrkrks7FKnBPr/Sngub897Ni5Bkn5pEa81zfs+4LrYsuWZQ8G1n7Q8/rjH4G/T7vPX+So41vNU74Sqn6E1b3BpW+wWBULhs9p1JSPT7Kzima4FmPigUr80NLrlVKn5bW+V4/odpN+bJWvpxdd024edHAD8mXX1M1N1lU5ZAgMBAAECgYA+mxbiM6tbFe2kV/6g4vVv9luq0cn8az7BwKCqT44U8Y5G67ZElG0zsuTI6pYOrCHFOpnXLrE0HhudEchL1YiJqW/SDKaoC4oDZf5nybhh11kOR3N5maLqvUz/WxdNy17th/2XxqVfTTu752X9yeeoXDj89N5OxyMl0jmxlhWbgQJBAPeoitR7FCxcjKtcKsEyrtV3T0H2WtQ2Pbku7CGe6VCtL4+DJNeUentn7plBj4IhbH3EwNmyCYzNlfp0X2d8fWkCQQDxWONjt1vV/dyKQYRvSVw/SWQWlR7g2OnHZokU2SNeewiCX2umCdYKh0doN0JHbSTLOGG5IA3+6Vxam+9hzPtxAkEAjr+QHf8/Vn6V+mOqpSdgjNwzS/MC0ZTeKPI52vsswnrAkjjmMHh9zMnQRnf6juhTD38sJY6wYH9TdkRDhXPFGQJATiFYe4+AS2ZDXv6WwPAezN4VaLodpOyTwdmPxxAEQzHRL2N0levZPs9MbpB1BGpw3tkBycx2u28QVsTkWeTiAQJAGRsAVr6Rhhdaq2vTjt9orhMVwt6BCoSQ0zzHSYilv4PMOtSu1Pyt4K8BDv3gjEyAi1GtE7kkJ0dcbsvOGiLzqQ=="; MerConfig merConfig = new MerConfig(); merConfig.setApiKey(apiKey); merConfig.setApiMockKey(mockApiKey); - merConfig.setRSAPrivateKey(rsaPrivateKey); + merConfig.setRSAPrivateKey(rsaPrivateKey2); Adapay.initWithMerConfig(merConfig); /** * 初始化完成,可以开始交易 */ - String appId = "app_7d87c043-aae3-4357-9b2c-269349a980d6"; + String appId = "app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa"; // 运行支付类接口 From 162e6c1d3bc940d595db94742844ddec135c2003 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Thu, 11 May 2023 16:45:44 +0800 Subject: [PATCH 14/23] update huifu --- .../jsowell/adapay/config/AdapayConfig.java | 40 +++++++++++++++++++ .../com/jsowell/adapay/demo/MainDemo.java | 25 ------------ 2 files changed, 40 insertions(+), 25 deletions(-) create mode 100644 jsowell-pile/src/main/java/com/jsowell/adapay/config/AdapayConfig.java diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/config/AdapayConfig.java b/jsowell-pile/src/main/java/com/jsowell/adapay/config/AdapayConfig.java new file mode 100644 index 000000000..86cda8919 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/config/AdapayConfig.java @@ -0,0 +1,40 @@ +package com.jsowell.adapay.config; + +import com.huifu.adapay.Adapay; +import com.huifu.adapay.model.MerConfig; +import org.springframework.boot.CommandLineRunner; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Order(value = 3) +@Component +public class AdapayConfig implements CommandLineRunner { + + @Override + public void run(String... args) throws Exception { + /** + * debug 模式,开启后有详细的日志 + */ + Adapay.debug = true; + + /** + * prodMode 模式,默认为生产模式,false可以使用mock模式 + */ + Adapay.prodMode = false; + + /** + * 初始化商户配置,服务器启动前,必须通过该方式初始化商户配置完成 + * apiKey为prod模式的API KEY + * mockApiKey为mock模式的API KEY + * rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥 + */ + String apiKey = "api_live_b9bff039-0598-4491-88e7-06ca6dc7289e"; + String mockApiKey = "api_test_15662261-8123-4b51-95d9-ad0af60eab53"; + String rsaPrivateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAOl7qJyrkrks7FKnBPr/Sngub897Ni5Bkn5pEa81zfs+4LrYsuWZQ8G1n7Q8/rjH4G/T7vPX+So41vNU74Sqn6E1b3BpW+wWBULhs9p1JSPT7Kzima4FmPigUr80NLrlVKn5bW+V4/odpN+bJWvpxdd024edHAD8mXX1M1N1lU5ZAgMBAAECgYA+mxbiM6tbFe2kV/6g4vVv9luq0cn8az7BwKCqT44U8Y5G67ZElG0zsuTI6pYOrCHFOpnXLrE0HhudEchL1YiJqW/SDKaoC4oDZf5nybhh11kOR3N5maLqvUz/WxdNy17th/2XxqVfTTu752X9yeeoXDj89N5OxyMl0jmxlhWbgQJBAPeoitR7FCxcjKtcKsEyrtV3T0H2WtQ2Pbku7CGe6VCtL4+DJNeUentn7plBj4IhbH3EwNmyCYzNlfp0X2d8fWkCQQDxWONjt1vV/dyKQYRvSVw/SWQWlR7g2OnHZokU2SNeewiCX2umCdYKh0doN0JHbSTLOGG5IA3+6Vxam+9hzPtxAkEAjr+QHf8/Vn6V+mOqpSdgjNwzS/MC0ZTeKPI52vsswnrAkjjmMHh9zMnQRnf6juhTD38sJY6wYH9TdkRDhXPFGQJATiFYe4+AS2ZDXv6WwPAezN4VaLodpOyTwdmPxxAEQzHRL2N0levZPs9MbpB1BGpw3tkBycx2u28QVsTkWeTiAQJAGRsAVr6Rhhdaq2vTjt9orhMVwt6BCoSQ0zzHSYilv4PMOtSu1Pyt4K8BDv3gjEyAi1GtE7kkJ0dcbsvOGiLzqQ=="; + MerConfig merConfig = new MerConfig(); + merConfig.setApiKey(apiKey); + merConfig.setApiMockKey(mockApiKey); + merConfig.setRSAPrivateKey(rsaPrivateKey); + Adapay.initWithMerConfig(merConfig); + } +} diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java index f40de5c0f..fb56aa38b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/demo/MainDemo.java @@ -21,32 +21,7 @@ public class MainDemo { } public static void testMerchant() throws Exception { - /** - * debug 模式,开启后有详细的日志 - */ - Adapay.debug = true; - /** - * prodMode 模式,默认为生产模式,false可以使用mock模式 - */ - Adapay.prodMode = true; - - - /** - * 初始化商户配置,服务器启动前,必须通过该方式初始化商户配置完成 - * apiKey为prod模式的API KEY - * mockApiKey为mock模式的API KEY - * rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥 - */ - String apiKey = "api_live_b9bff039-0598-4491-88e7-06ca6dc7289e"; - String mockApiKey = "api_test_15662261-8123-4b51-95d9-ad0af60eab53"; - String rsaPrivateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQhsygJ2pp4nCiDAXiqnZm6AzKSVAh+C0BgGR6QaeXzt0TdSi9VR0OQ7Qqgm92NREB3ofobXvxxT+wImrDNk6R6lnHPMTuJ/bYpm+sx397rPboRAXpV3kalQmbZ3P7oxtEWOQch0zV5B1bgQnTvxcG3REAsdaUjGs9Xvg0iDS2tAgMBAAECgYAqGFmNdF/4234Yq9V7ApOE1Qmupv1mPTdI/9ckWjaAZkilfSFY+2KqO8bEiygo6xMFCyg2t/0xDVjr/gTFgbn4KRPmYucGG+FzTRLH0nVIqnliG5Ekla6a4gwh9syHfstbOpIvJR4DfldicZ5n7MmcrdEwSmMwXrdinFbIS/P1+QJBAOr6NpFtlxVSGzr6haH5FvBWkAsF7BM0CTAUx6UNHb+RCYYQJbk8g3DLp7/vyio5uiusgCc04gehNHX4laqIdl8CQQDVrckvnYy+NLz+K/RfXEJlqayb0WblrZ1upOdoFyUhu4xqK0BswOh61xjZeS+38R8bOpnYRbLf7eoqb7vGpZ9zAkEAobhdsA99yRW+WgQrzsNxry3Ua1HDHaBVpnrWwNjbHYpDxLn+TJPCXvI7XNU7DX63i/FoLhOucNPZGExjLYBH/wJATHNZQAgGiycjV20yicvgla8XasiJIDP119h4Uu21A1Su8G15J2/9vbWn1mddg1pp3rwgvxhw312oInbHoFMxsQJBAJlyDDu6x05MeZ2nMor8gIokxq2c3+cnm4GYWZgboNgq/BknbIbOMBMoe8dJFj+ji3YNTvi1MSTDdSDqJuN/qS0="; - String rsaPrivateKey2 = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAOl7qJyrkrks7FKnBPr/Sngub897Ni5Bkn5pEa81zfs+4LrYsuWZQ8G1n7Q8/rjH4G/T7vPX+So41vNU74Sqn6E1b3BpW+wWBULhs9p1JSPT7Kzima4FmPigUr80NLrlVKn5bW+V4/odpN+bJWvpxdd024edHAD8mXX1M1N1lU5ZAgMBAAECgYA+mxbiM6tbFe2kV/6g4vVv9luq0cn8az7BwKCqT44U8Y5G67ZElG0zsuTI6pYOrCHFOpnXLrE0HhudEchL1YiJqW/SDKaoC4oDZf5nybhh11kOR3N5maLqvUz/WxdNy17th/2XxqVfTTu752X9yeeoXDj89N5OxyMl0jmxlhWbgQJBAPeoitR7FCxcjKtcKsEyrtV3T0H2WtQ2Pbku7CGe6VCtL4+DJNeUentn7plBj4IhbH3EwNmyCYzNlfp0X2d8fWkCQQDxWONjt1vV/dyKQYRvSVw/SWQWlR7g2OnHZokU2SNeewiCX2umCdYKh0doN0JHbSTLOGG5IA3+6Vxam+9hzPtxAkEAjr+QHf8/Vn6V+mOqpSdgjNwzS/MC0ZTeKPI52vsswnrAkjjmMHh9zMnQRnf6juhTD38sJY6wYH9TdkRDhXPFGQJATiFYe4+AS2ZDXv6WwPAezN4VaLodpOyTwdmPxxAEQzHRL2N0levZPs9MbpB1BGpw3tkBycx2u28QVsTkWeTiAQJAGRsAVr6Rhhdaq2vTjt9orhMVwt6BCoSQ0zzHSYilv4PMOtSu1Pyt4K8BDv3gjEyAi1GtE7kkJ0dcbsvOGiLzqQ=="; - MerConfig merConfig = new MerConfig(); - merConfig.setApiKey(apiKey); - merConfig.setApiMockKey(mockApiKey); - merConfig.setRSAPrivateKey(rsaPrivateKey2); - Adapay.initWithMerConfig(merConfig); /** From 65429a44f007a48602d53cada1e6bb0c89d527df Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Sat, 13 May 2023 17:09:11 +0800 Subject: [PATCH 15/23] =?UTF-8?q?update=20=E6=B1=87=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/service/OrderService.java | 64 +++++++++++++++++++ .../test/java/SpringBootTestController.java | 49 +++++++++++--- 2 files changed, 105 insertions(+), 8 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 055d75f75..d7d38c473 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -1,11 +1,16 @@ package com.jsowell.service; import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.TypeReference; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.huifu.adapay.model.Payment; +import com.jsowell.adapay.common.CreateAdaPaymentParam; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.vo.AuthorizedDeptVO; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; @@ -81,10 +86,12 @@ import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cglib.beans.BeanMap; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; +import java.text.DecimalFormat; import java.text.ParseException; import java.time.LocalDateTime; import java.util.ArrayList; @@ -190,6 +197,7 @@ public class OrderService { // 微信支付 dto.setOrderBasicInfo(orderInfo); Map weixinMap = wechatPayOrder(dto); + // Map weixinMap = adapayPayOrder(dto); // 返回微信支付参数 resultMap.put("weixinMap", weixinMap); } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue())) { // 支付宝支付 @@ -218,6 +226,61 @@ public class OrderService { payOrderSuccessCallback(callbackDTO); } + /** + * 使用汇付支付 + * @param dto + * @return + */ + private Map adapayPayOrder(PayOrderDTO dto) { + log.info("===============使用汇付支付"); + // 相同参数重复请求,返回同一个支付对象 + String redisKey = "ADAPAY_ORDER_PARAM:" + dto.getOrderCode(); + Map cacheObject = redisCache.getCacheObject(redisKey); + if (cacheObject != null) { + return cacheObject; + } + + OrderBasicInfo orderInfo = dto.getOrderBasicInfo(); + if (orderInfo == null) { + // 订单为空重新查询 + orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(dto.getOrderCode()); + } + // 获取openId + String openId = memberService.getOpenIdByCode(dto.getCode()); + if (StringUtils.isBlank(openId)) { + throw new BusinessException(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR); + } + + // 封装对象 + CreateAdaPaymentParam createAdaPaymentParam = new CreateAdaPaymentParam(); + createAdaPaymentParam.setOrder_no(orderInfo.getOrderCode()); + createAdaPaymentParam.setPay_amt(new DecimalFormat("#.00").format(dto.getPayAmount())); + createAdaPaymentParam.setApp_id("app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa"); // todo 后面移动到配置文件中 + createAdaPaymentParam.setPay_channel("wx_lite"); // todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求 + createAdaPaymentParam.setGoods_title("充电费用1"); + createAdaPaymentParam.setGoods_desc("充电费用2"); + createAdaPaymentParam.setDescription("充电费用3"); + createAdaPaymentParam.setExpend(JSONObject.toJSONString( ImmutableMap.of("open_id", openId))); + try { + log.info("创建汇付支付参数:{}", JSONObject.toJSONString(createAdaPaymentParam)); + Map response = Payment.create(BeanMap.create(createAdaPaymentParam)); + if (response != null && !response.isEmpty()) { + JSONObject jsonObject = JSONObject.parseObject(response.get("expend").toString()); + JSONObject pay_info = jsonObject.getJSONObject("pay_info"); + Map resultMap = JSONObject.parseObject(pay_info.toJSONString(), new TypeReference>() { + }); + if (resultMap != null) { + // 表示已经获取到支付参数了,后续再有支付请求就拒绝 + redisCache.setCacheObject(redisKey, resultMap, 15, TimeUnit.MINUTES); + } + return resultMap; + } + } catch (BaseAdaPayException e) { + log.error("汇付-获取支付对象发生异常", e); + } + return null; + } + /** * 微信支付订单逻辑 获取支付参数 * @param dto @@ -225,6 +288,7 @@ public class OrderService { * @throws Exception */ private Map wechatPayOrder(PayOrderDTO dto) throws Exception { + // 相同参数重复请求,返回同一个支付对象 String redisKey = "WECHAT_PAY_ORDER_PARAM:" + dto.getOrderCode(); Map cacheObject = redisCache.getCacheObject(redisKey); if (cacheObject != null) { diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index daf542892..9b59df99f 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -5,6 +5,7 @@ import com.google.common.collect.Maps; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.model.Payment; import com.jsowell.JsowellApplication; +import com.jsowell.adapay.common.CreateAdaPaymentParam; import com.jsowell.adapay.service.AdapayService; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; @@ -13,12 +14,15 @@ import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.ykc.OrderStatusEnum; import com.jsowell.common.exception.BusinessException; -import com.jsowell.common.util.*; -import com.jsowell.common.util.http.HttpUtils; +import com.jsowell.common.util.BytesUtil; +import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.DictUtils; +import com.jsowell.common.util.JWTUtils; +import com.jsowell.common.util.StringUtils; +import com.jsowell.common.util.YKCUtils; import com.jsowell.common.util.id.SnUtils; import com.jsowell.common.util.id.SnowflakeIdWorker; import com.jsowell.common.util.ip.AddressUtils; -import com.jsowell.common.util.lianlian.LianLianUtils; import com.jsowell.netty.command.ykc.IssueQRCodeCommand; import com.jsowell.netty.command.ykc.ProofreadTimeCommand; import com.jsowell.netty.handler.HeartbeatRequestHandler; @@ -30,7 +34,15 @@ import com.jsowell.pile.domain.PileBillingDetail; import com.jsowell.pile.domain.PileBillingTemplate; import com.jsowell.pile.domain.PileStationInfo; import com.jsowell.pile.domain.WxpayCallbackRecord; -import com.jsowell.pile.dto.*; +import com.jsowell.pile.dto.BasicPileDTO; +import com.jsowell.pile.dto.BatchCreatePileDTO; +import com.jsowell.pile.dto.ImportBillingTemplateDTO; +import com.jsowell.pile.dto.LianLianGetTokenDTO; +import com.jsowell.pile.dto.QueryOrderDTO; +import com.jsowell.pile.dto.QueryPileDTO; +import com.jsowell.pile.dto.QueryStationDTO; +import com.jsowell.pile.dto.RefundableWxPayOrderData; +import com.jsowell.pile.dto.WeixinPayDTO; import com.jsowell.pile.mapper.MemberBasicInfoMapper; import com.jsowell.pile.mapper.PileBillingTemplateMapper; import com.jsowell.pile.service.IOrderBasicInfoService; @@ -49,7 +61,6 @@ import com.jsowell.service.MemberService; import com.jsowell.service.OrderService; import com.jsowell.service.PileRemoteService; import com.jsowell.service.PileService; -import com.jsowell.thirdparty.domain.StationInfo; import com.jsowell.thirdparty.service.LianLianService; import com.jsowell.wxpay.common.WeChatPayParameter; import com.jsowell.wxpay.dto.AppletTemplateMessageSendDTO; @@ -62,6 +73,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cglib.beans.BeanMap; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.StopWatch; @@ -69,7 +81,13 @@ import org.springframework.util.StopWatch; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @ActiveProfiles("dev") @SpringBootTest(classes = JsowellApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -168,15 +186,30 @@ public class SpringBootTestController { Map paymentParams = Maps.newHashMap(); paymentParams.put("order_no", "fasdftawefawefawsdcaseg"); paymentParams.put("pay_amt", "0.05"); - paymentParams.put("app_id", "api_test_a6ac1931-11d6-4d76-8e73-086f8219c9e7"); + paymentParams.put("app_id", "app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa"); paymentParams.put("pay_channel", "wx_lite"); paymentParams.put("goods_title", "Your goods_title"); paymentParams.put("goods_desc", "Your goods_desc"); paymentParams.put("description", "payment Discription"); + Map expendMap = Maps.newHashMap(); + expendMap.put("open_id", "o4REX5PYTXvwl_YXs_aGrVAqCh_c"); + paymentParams.put("expend", expendMap); // paymentParams.put("div_members", [{"amount":"0.05", "fee_flag":"Y", "member_id":"member_id_test"}]); // 调用创建方法,获取 Payment对象_ + + // 封装对象 + CreateAdaPaymentParam createAdaPaymentParam = new CreateAdaPaymentParam(); + createAdaPaymentParam.setOrder_no("fasdftawefawefawsdcaseg123"); + createAdaPaymentParam.setPay_amt("0.05"); + createAdaPaymentParam.setApp_id("app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa"); // todo 后面移动到配置文件中 + createAdaPaymentParam.setPay_channel("wx_lite"); // todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求 + createAdaPaymentParam.setGoods_title("充电费用1"); + createAdaPaymentParam.setGoods_desc("充电费用2"); + createAdaPaymentParam.setDescription("充电费用3"); + createAdaPaymentParam.setExpend(JSONObject.toJSONString( ImmutableMap.of("open_id", "o4REX5PYTXvwl_YXs_aGrVAqCh_c"))); try { - Map response = Payment.create(paymentParams); + // Map response = Payment.create(paymentParams); + Map response = Payment.create(BeanMap.create(createAdaPaymentParam)); System.out.println(response); } catch (BaseAdaPayException e) { e.printStackTrace(); From 41cb7dda4c53f8f0efa960894fde6336ae64f143 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Mon, 15 May 2023 14:55:33 +0800 Subject: [PATCH 16/23] update huifu --- .../com/jsowell/api/uniapp/PayController.java | 48 +++++++++++++++++++ .../com/jsowell/service/OrderService.java | 31 ++++++++++++ 2 files changed, 79 insertions(+) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java index 962e33ea6..1161ff92d 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java @@ -134,6 +134,54 @@ public class PayController extends BaseController { return response; } + /** + * adapay支付订单 + * http://localhost:8080/uniapp/pay/payOrderWithAdapay + * @param request + * @param dto + * @return + */ + @PostMapping("/payOrderWithAdapay") + public RestApiResponse payOrderWithAdapay(HttpServletRequest request, @RequestBody PayOrderDTO dto) { + logger.info("adapay支付订单 param:{}", dto.toString()); + RestApiResponse response; + + // 支付订单加锁 + String lockKey = "pay_order_" + dto.getOrderCode(); + String lockValue = IdUtils.fastUUID(); + try { + String memberId = getMemberIdByAuthorization(request); + if (StringUtils.isBlank(memberId)) { + throw new BusinessException(ReturnCodeEnum.CODE_TOKEN_ERROR); + } + if (dto.getPayAmount() == null) { + throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR); + } + dto.setMemberId(memberId); + dto.setLockValue(lockValue); + // redis锁 + Boolean isLock = redisCache.lock(lockKey, lockValue, 60); + Map map = null; + if (isLock) { + map = orderService.payOrderWithAdapay(dto); + } + response = new RestApiResponse<>(map); + } catch (BusinessException e) { + logger.warn("adapay支付订单 warn param:{}", dto.toString(), e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + } catch (Exception e) { + logger.error("adapay支付订单 error param:{}", dto.toString(), e); + response = new RestApiResponse<>(ReturnCodeEnum.CODE_ORDER_PAY_ERROR); + } finally { + // 支付订单解锁 + if (lockValue.equals(redisCache.getCacheObject(lockKey).toString())) { + redisCache.unLock(lockKey); + } + } + logger.info("adapay支付订单 result:{}", JSONObject.toJSONString(response)); + return response; + } + /** * 7003 获取支付方式 * http://localhost:8080/uniapp/pay/getPayMode diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 7788b0c7d..4c91c08ef 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -211,6 +211,36 @@ public class OrderService { return resultMap; } + + public Map payOrderWithAdapay(PayOrderDTO dto) { + OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(dto.getOrderCode()); + if (orderInfo == null) { + throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_NULL_ERROR); + } + if (!StringUtils.equals(orderInfo.getPayStatus(), "0")) { + // 订单已支付 + throw new BusinessException(ReturnCodeEnum.CODE_ORDER_IS_NOT_TO_BE_PAID_ERROR); + } + Map resultMap = Maps.newHashMap(); + if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) { + // 余额支付 + balancePayOrder(dto); + } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) { + // 微信支付 使用adapay + dto.setOrderBasicInfo(orderInfo); + Map weixinMap = adapayPayOrder(dto); + // 返回微信支付参数 + resultMap.put("weixinMap", weixinMap); + } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue())) { // 支付宝支付 + // TODO 返回支付宝支付参数 + } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付 + // 白名单支付可以直接调支付回调方法 + dto.setPayAmount(new BigDecimal("500")); + whiteListPayOrder(dto); + } + return resultMap; + } + /** * 白名单支付订单逻辑 * @param dto @@ -1210,4 +1240,5 @@ public class OrderService { .list(volist) .build(); } + } From d80b84af58c4ee584d52f20ca905db9fbb937951 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 16 May 2023 14:01:34 +0800 Subject: [PATCH 17/23] update huifu --- .../java/com/jsowell/api/uniapp/PayController.java | 1 - .../main/java/com/jsowell/service/OrderService.java | 10 ++++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java index 1161ff92d..b410b20c3 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java @@ -116,7 +116,6 @@ public class PayController extends BaseController { if (isLock) { map = orderService.payOrder(dto); } - // Map map = orderService.payOrder(dto); response = new RestApiResponse<>(map); } catch (BusinessException e) { logger.warn("支付订单 warn param:{}", dto.toString(), e); diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 4c91c08ef..4541f86d2 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -157,6 +157,8 @@ public class OrderService { @Autowired private RedisCache redisCache; + private List stationIdList = Lists.newArrayList("1", "2"); + /** * 生成订单 * @@ -197,8 +199,12 @@ public class OrderService { } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) { // 微信支付 dto.setOrderBasicInfo(orderInfo); - Map weixinMap = wechatPayOrder(dto); - // Map weixinMap = adapayPayOrder(dto); + Map weixinMap = null; + if (stationIdList.contains("all") || stationIdList.contains(orderInfo.getStationId())) { + weixinMap = adapayPayOrder(dto); + } else { + weixinMap = wechatPayOrder(dto); + } // 返回微信支付参数 resultMap.put("weixinMap", weixinMap); } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue())) { // 支付宝支付 From eef6af1c6c5c3337f3bca71d628c277f8ef27e60 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 16 May 2023 16:24:26 +0800 Subject: [PATCH 18/23] update huifu --- .../com/jsowell/api/uniapp/PayController.java | 48 ++++++++++++++---- .../com/jsowell/service/MemberService.java | 50 +++++++++++++++++++ .../com/jsowell/service/OrderService.java | 5 +- .../test/java/SpringBootTestController.java | 47 +++++++++-------- .../common/enums/ykc/ReturnCodeEnum.java | 6 +++ .../com/jsowell/common/util/AdapayUtil.java | 29 +++++++++++ 6 files changed, 150 insertions(+), 35 deletions(-) create mode 100644 jsowell-common/src/main/java/com/jsowell/common/util/AdapayUtil.java diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java index b410b20c3..251f5af39 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java @@ -6,14 +6,12 @@ import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.ykc.ReturnCodeEnum; -import com.jsowell.common.enums.ykc.ScenarioEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.response.RestApiResponse; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.id.IdUtils; import com.jsowell.pile.dto.GetPayModeDTO; import com.jsowell.pile.dto.PayOrderDTO; -import com.jsowell.pile.dto.PaymentScenarioDTO; import com.jsowell.pile.dto.WeixinPayDTO; import com.jsowell.pile.vo.uniapp.PayModeVO; import com.jsowell.service.MemberService; @@ -71,15 +69,47 @@ public class PayController extends BaseController { } dto.setOpenId(openId); // 充值余额 附加参数 - PaymentScenarioDTO paymentScenarioDTO = new PaymentScenarioDTO(); - paymentScenarioDTO.setType(ScenarioEnum.BALANCE.getValue()); - paymentScenarioDTO.setMemberId(memberId); - dto.setAttach(JSONObject.toJSONString(paymentScenarioDTO)); - dto.setDescription("会员充值余额"); - Map weixinMap = orderService.weixinPayV3(dto); + Map weixinMap = memberService.rechargeBalance(dto); response = new RestApiResponse<>(ImmutableMap.of("weixinMap", weixinMap)); } catch (Exception e) { - response = new RestApiResponse<>(); + logger.error("会员充值余额 error", e); + response = new RestApiResponse<>(ReturnCodeEnum.CODE_MEMBER_RECHARGE_BALANCE_ERROR); + } + return response; + } + + /** + * 会员充值余额 + * http://localhost:8080/uniapp/pay/rechargeBalance + * @param request + * @param dto + * @return + */ + @PostMapping("/rechargeBalance") + public RestApiResponse rechargeBalance(HttpServletRequest request, @RequestBody WeixinPayDTO dto) { + logger.info("会员充值余额 param:{}", dto.toString()); + RestApiResponse response; + try { + if (StringUtils.isBlank(dto.getCode()) || StringUtils.isBlank(dto.getAmount())) { + return new RestApiResponse<>(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR); + } + // 鉴权 + String memberId = getMemberIdByAuthorization(request); + if (StringUtils.isBlank(memberId)) { + throw new BusinessException(ReturnCodeEnum.CODE_TOKEN_ERROR); + } + dto.setMemberId(memberId); + String openId = memberService.getOpenIdByCode(dto.getCode()); + if (StringUtils.isBlank(openId)) { + throw new BusinessException(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR); + } + dto.setOpenId(openId); + // 充值余额 附加参数 + Map weixinMap = memberService.rechargeBalanceWithAdapay(dto); + response = new RestApiResponse<>(ImmutableMap.of("weixinMap", weixinMap)); + } catch (Exception e) { + logger.error("会员充值余额 error", e); + response = new RestApiResponse<>(ReturnCodeEnum.CODE_MEMBER_RECHARGE_BALANCE_ERROR); } return response; } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java index 825caae22..914f2574c 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java @@ -1,7 +1,13 @@ package com.jsowell.service; +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.TypeReference; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.google.common.collect.ImmutableMap; +import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.huifu.adapay.model.Payment; +import com.jsowell.adapay.common.CreateAdaPaymentParam; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.page.PageResponse; @@ -9,7 +15,9 @@ import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.TitleTypeEnum; import com.jsowell.common.enums.uniapp.BalanceChangesEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; +import com.jsowell.common.enums.ykc.ScenarioEnum; import com.jsowell.common.exception.BusinessException; +import com.jsowell.common.util.AdapayUtil; import com.jsowell.common.util.JWTUtils; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.id.IdUtils; @@ -23,8 +31,10 @@ import com.jsowell.pile.dto.BindingCardDTO; import com.jsowell.pile.dto.CreateInvoiceTitleDTO; import com.jsowell.pile.dto.MemberRegisterAndLoginDTO; import com.jsowell.pile.dto.MemberRegisterDTO; +import com.jsowell.pile.dto.PaymentScenarioDTO; import com.jsowell.pile.dto.UniAppQueryMemberBalanceDTO; import com.jsowell.pile.dto.WechatLoginDTO; +import com.jsowell.pile.dto.WeixinPayDTO; import com.jsowell.pile.service.IMemberBasicInfoService; import com.jsowell.pile.service.IMemberInvoiceTitleService; import com.jsowell.pile.service.IMemberPlateNumberRelationService; @@ -42,10 +52,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cglib.beans.BeanMap; import org.springframework.stereotype.Service; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Objects; @Service @@ -76,6 +88,9 @@ public class MemberService { @Autowired private IMemberInvoiceTitleService memberInvoiceTitleService; + @Autowired + private OrderService orderService; + /** * 校验短信验证码 * @param dto @@ -381,4 +396,39 @@ public class MemberService { int i = memberInvoiceTitleService.insertMemberInvoiceTitle(title); log.info("新增{}条发票抬头", i); } + + public Map rechargeBalance(WeixinPayDTO dto) throws Exception { + PaymentScenarioDTO paymentScenarioDTO = new PaymentScenarioDTO(); + paymentScenarioDTO.setType(ScenarioEnum.BALANCE.getValue()); + paymentScenarioDTO.setMemberId(dto.getMemberId()); + dto.setAttach(JSONObject.toJSONString(paymentScenarioDTO)); + dto.setDescription("会员充值余额"); + return orderService.weixinPayV3(dto); + } + + public Map rechargeBalanceWithAdapay(WeixinPayDTO dto) throws Exception { + // 封装对象 + CreateAdaPaymentParam createAdaPaymentParam = new CreateAdaPaymentParam(); + createAdaPaymentParam.setOrder_no(IdUtils.fastSimpleUUID()); + createAdaPaymentParam.setPay_amt(AdapayUtil.formatAmount(dto.getAmount())); + createAdaPaymentParam.setApp_id("app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa"); // todo 后面移动到配置文件中 + createAdaPaymentParam.setPay_channel("wx_lite"); // todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求 + createAdaPaymentParam.setGoods_title("充电费用1"); + createAdaPaymentParam.setGoods_desc("充电费用2"); + createAdaPaymentParam.setDescription("充电费用3"); + createAdaPaymentParam.setExpend(JSONObject.toJSONString( ImmutableMap.of("open_id", dto.getOpenId()))); + try { + log.info("创建汇付支付参数:{}", JSONObject.toJSONString(createAdaPaymentParam)); + Map response = Payment.create(BeanMap.create(createAdaPaymentParam)); + if (response != null && !response.isEmpty()) { + JSONObject jsonObject = JSONObject.parseObject(response.get("expend").toString()); + JSONObject pay_info = jsonObject.getJSONObject("pay_info"); + Map resultMap = JSONObject.parseObject(pay_info.toJSONString(), new TypeReference>() {}); + return resultMap; + } + } catch (BaseAdaPayException e) { + log.error("汇付-获取支付对象发生异常", e); + } + return null; + } } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 4541f86d2..13a9ad059 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -29,6 +29,7 @@ import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.enums.ykc.ScenarioEnum; import com.jsowell.common.enums.ykc.StartTypeEnum; import com.jsowell.common.exception.BusinessException; +import com.jsowell.common.util.AdapayUtil; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.SecurityUtils; import com.jsowell.common.util.StringUtils; @@ -92,7 +93,6 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; -import java.text.DecimalFormat; import java.text.ParseException; import java.time.LocalDateTime; import java.util.ArrayList; @@ -291,7 +291,8 @@ public class OrderService { // 封装对象 CreateAdaPaymentParam createAdaPaymentParam = new CreateAdaPaymentParam(); createAdaPaymentParam.setOrder_no(orderInfo.getOrderCode()); - createAdaPaymentParam.setPay_amt(new DecimalFormat("#.00").format(dto.getPayAmount())); + // createAdaPaymentParam.setPay_amt(new DecimalFormat("#.00").format(dto.getPayAmount())); + createAdaPaymentParam.setPay_amt(AdapayUtil.formatAmount(dto.getPayAmount())); createAdaPaymentParam.setApp_id("app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa"); // todo 后面移动到配置文件中 createAdaPaymentParam.setPay_channel("wx_lite"); // todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求 createAdaPaymentParam.setGoods_title("充电费用1"); diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index 8a4d8e07f..9989d5a49 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -37,7 +37,6 @@ import com.jsowell.pile.domain.WxpayCallbackRecord; import com.jsowell.pile.dto.BasicPileDTO; import com.jsowell.pile.dto.BatchCreatePileDTO; import com.jsowell.pile.dto.ImportBillingTemplateDTO; -import com.jsowell.pile.dto.LianLianGetTokenDTO; import com.jsowell.pile.dto.QueryOrderDTO; import com.jsowell.pile.dto.QueryPileDTO; import com.jsowell.pile.dto.QueryStationDTO; @@ -228,29 +227,29 @@ public class SpringBootTestController { System.out.println(pileAuthCard); } - @Test - public void testLianLian(){ - // 获取令牌 - LianLianGetTokenDTO dto = new LianLianGetTokenDTO(); - dto.setOperatorId("987654321"); - dto.setOperatorSecret("1234567890abcdef"); - String token = lianLianService.getToken(dto); - System.out.println("token:" + token); - - - LianLianPushStationInfoDTO dto1 = LianLianPushStationInfoDTO.builder() - .OperatorID("987654321") - .DataSecret("1234567890abcdef") - .DataSecretIV("1234567890abcdef") - .SigSecret("1234567890abcdef") - .token(token) - .stationId(2L) - - .build(); - lianLianService.pushStationInfo(dto1); - - - } + // @Test + // public void testLianLian(){ + // // 获取令牌 + // LianLianGetTokenDTO dto = new LianLianGetTokenDTO(); + // dto.setOperatorId("987654321"); + // dto.setOperatorSecret("1234567890abcdef"); + // String token = lianLianService.getToken(dto); + // System.out.println("token:" + token); + // + // + // LianLianPushStationInfoDTO dto1 = LianLianPushStationInfoDTO.builder() + // .OperatorID("987654321") + // .DataSecret("1234567890abcdef") + // .DataSecretIV("1234567890abcdef") + // .SigSecret("1234567890abcdef") + // .token(token) + // .stationId(2L) + // + // .build(); + // lianLianService.pushStationInfo(dto1); + // + // + // } @Test diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java index 30a5d823d..3e85e594d 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java @@ -94,6 +94,10 @@ public enum ReturnCodeEnum { CODE_STATION_IS_NOT_OPEN("00100045", "该站点暂未营业"), + CODE_MEMBER_RECHARGE_BALANCE_ERROR("00100046", "会员充值余额失败"), + + /* 个人桩 start */ + CODE_PILE_HAS_BEEN_BINDING_ERROR("00400001", "此桩已被绑定,请联系管理员!"), CODE_AUTHENTICATION_ERROR("00400002", "您的身份信息验证有误,请重试!"), @@ -114,6 +118,8 @@ public enum ReturnCodeEnum { CODE_GET_PERSONAL_PILE_CONNECTOR_INFO_ERROR("00400010", "获取个人桩枪口实时数据异常"), + /* 个人桩 end */ + CODE_THIS_CARNO_HAS_BEEN_BINDING("00500001", "当前车牌号已经绑定,请检查!"), CODE_USER_BINDING_CARNO_ERROR("00500002", "用户绑定车牌号异常"), diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/AdapayUtil.java b/jsowell-common/src/main/java/com/jsowell/common/util/AdapayUtil.java new file mode 100644 index 000000000..fcc1c7b4b --- /dev/null +++ b/jsowell-common/src/main/java/com/jsowell/common/util/AdapayUtil.java @@ -0,0 +1,29 @@ +package com.jsowell.common.util; + +import java.math.BigDecimal; +import java.text.DecimalFormat; + +public class AdapayUtil { + public static void main(String[] args) { + String amount = "1110.5309"; + String s = formatAmount(amount); + System.out.println(s); + + BigDecimal bigDecimal = new BigDecimal(amount); + String s2 = formatAmount(bigDecimal); + System.out.println(s2); + } + + // 格式化数字 保留两位小数,不足补0 + public static String formatAmount(String amount) { + //保留2位小数 + double score = new BigDecimal(amount).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + //不足两位则补0 + DecimalFormat decimalFormat = new DecimalFormat("0.00#"); + return decimalFormat.format(score); + } + + public static String formatAmount(BigDecimal amount) { + return formatAmount(amount.toString()); + } +} From 6ae3530907010b8fef0bd09f84434336234cc67e Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 16 May 2023 16:31:23 +0800 Subject: [PATCH 19/23] update huifu --- .../com/jsowell/service/OrderService.java | 2 +- .../com/jsowell/common/util/AdapayUtil.java | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 13a9ad059..97255dd4a 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -296,7 +296,7 @@ public class OrderService { createAdaPaymentParam.setApp_id("app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa"); // todo 后面移动到配置文件中 createAdaPaymentParam.setPay_channel("wx_lite"); // todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求 createAdaPaymentParam.setGoods_title("充电费用1"); - createAdaPaymentParam.setGoods_desc("充电费用2"); + createAdaPaymentParam.setGoods_desc("充电费用2"); // 这个字段是微信支付凭证的商品名 createAdaPaymentParam.setDescription("充电费用3"); createAdaPaymentParam.setExpend(JSONObject.toJSONString( ImmutableMap.of("open_id", openId))); try { diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/AdapayUtil.java b/jsowell-common/src/main/java/com/jsowell/common/util/AdapayUtil.java index fcc1c7b4b..6d488b4ec 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/AdapayUtil.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/AdapayUtil.java @@ -3,7 +3,11 @@ package com.jsowell.common.util; import java.math.BigDecimal; import java.text.DecimalFormat; +/** + * 汇付支付的工具类 + */ public class AdapayUtil { + public static void main(String[] args) { String amount = "1110.5309"; String s = formatAmount(amount); @@ -14,15 +18,24 @@ public class AdapayUtil { System.out.println(s2); } - // 格式化数字 保留两位小数,不足补0 + /** + * 格式化数字 保留两位小数,不足补0 + * @param amount + * @return + */ public static String formatAmount(String amount) { //保留2位小数 - double score = new BigDecimal(amount).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + double d = new BigDecimal(amount).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //不足两位则补0 DecimalFormat decimalFormat = new DecimalFormat("0.00#"); - return decimalFormat.format(score); + return decimalFormat.format(d); } + /** + * 格式化数字 保留两位小数,不足补0 + * @param amount + * @return + */ public static String formatAmount(BigDecimal amount) { return formatAmount(amount.toString()); } From cf8b303478a2e178225eaecaed2b1d7ec6758b99 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 16 May 2023 17:14:21 +0800 Subject: [PATCH 20/23] update huifu --- .../com/jsowell/api/uniapp/PayController.java | 35 +++++++++++++++++++ .../com/jsowell/service/MemberService.java | 1 + .../com/jsowell/service/OrderService.java | 3 ++ 3 files changed, 39 insertions(+) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java index 251f5af39..4c06987bf 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java @@ -1,7 +1,10 @@ package com.jsowell.api.uniapp; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.google.common.collect.ImmutableMap; +import com.huifu.adapay.core.AdapayCore; +import com.huifu.adapay.core.util.AdapaySign; import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.redis.RedisCache; @@ -81,6 +84,7 @@ public class PayController extends BaseController { /** * 会员充值余额 * http://localhost:8080/uniapp/pay/rechargeBalance + * * @param request * @param dto * @return @@ -166,6 +170,7 @@ public class PayController extends BaseController { /** * adapay支付订单 * http://localhost:8080/uniapp/pay/payOrderWithAdapay + * * @param request * @param dto * @return @@ -256,6 +261,7 @@ public class PayController extends BaseController { /** * 微信退款回调接口 + * * @param request * @param body * @return @@ -305,4 +311,33 @@ public class PayController extends BaseController { } return response; } + + /** + * 汇付支付回调 + */ + @PostMapping("/adapayCallback") + public void callback(HttpServletRequest request) { + try { + //验签请参data + String data = request.getParameter("data"); + //验签请参sign + String sign = request.getParameter("sign"); + //验签标记 + boolean checkSign; + //验签请参publicKey + String publicKey = AdapayCore.PUBLIC_KEY; + logger.info("汇付支付回调验签请参:data={}sign={}", data, sign); + //验签 + checkSign = AdapaySign.verifySign(data, sign, publicKey); + if (checkSign) { + //验签成功逻辑 + System.out.println("汇付支付回调成功返回数据data:" + data); + } else { + //验签失败逻辑 + } + } catch (Exception e) { + logger.error("汇付支付回调失败 request:{}", JSON.toJSONString(request)); + } + } + } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java index 914f2574c..2916b21eb 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java @@ -420,6 +420,7 @@ public class MemberService { try { log.info("创建汇付支付参数:{}", JSONObject.toJSONString(createAdaPaymentParam)); Map response = Payment.create(BeanMap.create(createAdaPaymentParam)); + log.info("创建汇付支付参数反参:{}", JSONObject.toJSONString(response)); if (response != null && !response.isEmpty()) { JSONObject jsonObject = JSONObject.parseObject(response.get("expend").toString()); JSONObject pay_info = jsonObject.getJSONObject("pay_info"); diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 97255dd4a..34fb25707 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -1248,4 +1248,7 @@ public class OrderService { .build(); } + public void adapayCallback(HttpServletRequest request, WechatPayNotifyParameter body) { + log.info(""); + } } From a4e271eabb74a2415b0a2a320ffe953ad15cf9fa Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Wed, 17 May 2023 09:37:51 +0800 Subject: [PATCH 21/23] =?UTF-8?q?=E6=B1=87=E4=BB=98=20=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/jsowell/api/uniapp/PayController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java index 4c06987bf..37d5621b5 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java @@ -314,6 +314,7 @@ public class PayController extends BaseController { /** * 汇付支付回调 + * https://api.jsowellcloud.com/uniapp/pay/refund */ @PostMapping("/adapayCallback") public void callback(HttpServletRequest request) { From cf64370cef3c80a38d895f3daf0ceb4b277c701f Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Wed, 17 May 2023 15:59:16 +0800 Subject: [PATCH 22/23] =?UTF-8?q?update=20=E6=96=B0=E5=A2=9E=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/jsowell/service/MemberService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java index 2916b21eb..d3a1effce 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java @@ -417,6 +417,8 @@ public class MemberService { createAdaPaymentParam.setGoods_desc("充电费用2"); createAdaPaymentParam.setDescription("充电费用3"); createAdaPaymentParam.setExpend(JSONObject.toJSONString( ImmutableMap.of("open_id", dto.getOpenId()))); + //异步通知地址,url为http/https路径,服务器POST回调,URL 上请勿附带参数 + createAdaPaymentParam.setNotify_url("https://api.jsowellcloud.com/uniapp/pay/adapayCallback"); try { log.info("创建汇付支付参数:{}", JSONObject.toJSONString(createAdaPaymentParam)); Map response = Payment.create(BeanMap.create(createAdaPaymentParam)); From f04d92af37496592d976a957f21cf744d03b1812 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Thu, 18 May 2023 16:31:47 +0800 Subject: [PATCH 23/23] =?UTF-8?q?update=20=E6=B1=87=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/api/uniapp/PayController.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java index 3944ed2c4..c0a6cb970 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java @@ -86,6 +86,37 @@ public class PayController extends BaseController { return response; } + /** + * 会员充值余额 + */ + @PostMapping("/rechargeBalance") + public RestApiResponse rechargeBalance(HttpServletRequest request, @RequestBody WeixinPayDTO dto) { + logger.info("微信支付 param:{}", dto.toString()); + RestApiResponse response; + try { + if (StringUtils.isBlank(dto.getCode()) || StringUtils.isBlank(dto.getAmount())) { + return new RestApiResponse<>(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR); + } + // 鉴权 + String memberId = getMemberIdByAuthorization(request); + if (StringUtils.isBlank(memberId)) { + throw new BusinessException(ReturnCodeEnum.CODE_TOKEN_ERROR); + } + dto.setMemberId(memberId); + String openId = memberService.getOpenIdByCode(dto.getCode()); + if (StringUtils.isBlank(openId)) { + throw new BusinessException(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR); + } + dto.setOpenId(openId); + // 充值余额 附加参数 + Map weixinMap = memberService.rechargeBalanceWithAdapay(dto); + response = new RestApiResponse<>(ImmutableMap.of("weixinMap", weixinMap)); + } catch (Exception e) { + response = new RestApiResponse<>(); + } + return response; + } + /** * 7002 支付订单 * http://localhost:8080/uniapp/pay/payOrder