|
|
@@ -4,6 +4,7 @@ import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.excel.annotation.ExcelProperty;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.huifu.adapay.Adapay;
|
|
|
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
|
|
@@ -11,174 +12,97 @@ import com.huifu.adapay.model.AdapayCommon;
|
|
|
import com.huifu.adapay.model.MerConfig;
|
|
|
import com.huifu.adapay.model.Payment;
|
|
|
import com.huifu.adapay.model.Refund;
|
|
|
+import com.izouma.nineth.ApplicationTests;
|
|
|
+import com.izouma.nineth.domain.AdaTrade;
|
|
|
+import com.izouma.nineth.repo.GiftOrderRepo;
|
|
|
+import com.izouma.nineth.repo.OrderRepo;
|
|
|
import com.izouma.nineth.utils.SnowflakeIdWorker;
|
|
|
import com.izouma.nineth.utils.excel.BigIntegerConverter;
|
|
|
import com.izouma.nineth.utils.excel.LocalDateConverter;
|
|
|
import com.izouma.nineth.utils.excel.LocalDateTimeConverter;
|
|
|
import lombok.Data;
|
|
|
+import org.apache.commons.collections.MapUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.junit.Test;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.ZoneOffset;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.concurrent.ExecutionException;
|
|
|
+import java.util.concurrent.ForkJoinPool;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
-public class AdapayServiceTest {
|
|
|
- private final String appId = "app_0e8d3acb-3d95-4ebb-8445-e470c378a787";
|
|
|
-
|
|
|
- public AdapayServiceTest() {
|
|
|
- Adapay.debug = true;
|
|
|
- Adapay.prodMode = true;
|
|
|
-
|
|
|
- MerConfig merConfig = new MerConfig();
|
|
|
- merConfig.setApiKey("api_live_dc298e47-c0be-4acf-a962-a2c2988e4cae");
|
|
|
- merConfig.setApiMockKey("api_test_26e9eee7-6695-4169-90a1-203c6d2cf196");
|
|
|
- merConfig.setRSAPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCLeSEu8CXg4iwpRtAapIGpbuoJdyAh3E2FgIqOJSME/0+DscuIUVzfQzMWgXT98Zd8aKQLmjTWHx6Tg60DCFJzJBkISZYaqF9Oc+YdPe15TINpp5syKDk72WeUEW/jlXiLwKyeFxzCvedbpbdAUi0cP64US/LslGohHGWUrgj/WBR33vgwA2NAHR+ziGp8IhFUXHoWtXdBjwGsWuZ6Wt9mWOVeGIHP6OyUYzhkVuDyFMZ6wlA60PqxPAQrvZG3VP2mSlpWTs7xQHM9nk8Rn2pQDUmexHmKS/wn4XZvl3S9KRs6/l8wDqlBW5QhmEZNRwiOG8n/FpqxUMIhFFj4SSq1AgMBAAECggEAVwmWXbZbzQUXzgJ058t1ZwjiYFnI4ZibgA6BaMdgHUQ+mM6hV0Z/EIzdGtRa8AaOJIMgrGTlSCJPcHshwty0p0oFnRhe5e/g2hKVrfXxdlr7PznrLdfQL7syWkKvcnTar0vj7Rw7RIRCFv1JaIhfwlszBVOIG39a46LW+XvJ/Z5Lk5wB8tkt0xWDUghAU1xP10P8OHcr/x3aFhiyAvmWWr7syYKD1rDAtC+n+6Imb8MvTxwk4Gz1wpM+a7gHeYk2n91yR94G6A2wMSeM80T4hCbYKutD5rkdi5i3hoeIiPiq5qbR0rmI/dudVbGkVT+xkh1z1IsKeYiD2ef4Ddy2QQKBgQDIqOuaml9bnJpKie9Z0ysiPWxc771byxhgx7bwsoJey4x5bcLx+G9IAvkGwWFUl+25jgpeVn/LZ6147e9ozeip7WSKvStniND+CB7SvA5ZDRm7CfqFQub//9Q1DWNfl+ThGAXHMlKgS7DanLqvpUsRdhUOceZwwrdkV93v7by8nQKBgQCx8EdYbxNIEnVI3Y98YCAWtvgBCCa8yurL+9IXe9VKCFGdGRZ4b61GWDNyjUAfiboXY4ByzvX4cdlZ1euVmqMYsEv28xXEFdGxSDpa+oeETbv1U2GEGL4Ups3z28Sx4TGGSyvReyQOhZftIF6vCZtZ8dZMEf8IdxyudJkcJp+u+QKBgBFtemkHF1khlNT8felTSd/DbfH0cIHUdd2R+vWUy3XoP98cBV52sVOTzoUjroxmVaNUDtp6sMa9znc+UxjLKXX4xE64d1iarWwi0GqFIsnhNWblSvjgAqghVBD3hLX8v0g9ieLvH/YEHOwfyKcQuCBgHRwQEG+iucLhTslT4JyRAoGAHa25CKwGKEhD3bJuw0z5LTC5btqgM28Y+Ir5AMe7zIxUqIJNuCrQWOJPOnUK0/fR3SLQgtW4OwcqPIysrZhMScrl8Luczsbg4dPtP813mv6oMgQFSNYjpigoQ9tNFGo+K2sQVPFYEz//FiMHB+TvT3JBzxBVXGEZnJOAEizzB2kCgYEAxUFRiJMcmp5IyGcFlmGP219OcEfzt8BV8s3yoPHPpgYX/zPsH9764UMSZb+FRXFLd8HC+UqqppQ4cq2RmMu5X7H/DWoj9FqXgusjOmZUyWiJgTPC4ktFesuhJhCHuk/50/nXmc6O8rWLwXqXf1XNaoNfzDmZNQ20jRZGr8eVc4g=");
|
|
|
- merConfig.setRSAPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi3khLvAl4OIsKUbQGqSBqW7qCXcgIdxNhYCKjiUjBP9Pg7HLiFFc30MzFoF0/fGXfGikC5o01h8ek4OtAwhScyQZCEmWGqhfTnPmHT3teUyDaaebMig5O9lnlBFv45V4i8Csnhccwr3nW6W3QFItHD+uFEvy7JRqIRxllK4I/1gUd974MANjQB0fs4hqfCIRVFx6FrV3QY8BrFrmelrfZljlXhiBz+jslGM4ZFbg8hTGesJQOtD6sTwEK72Rt1T9pkpaVk7O8UBzPZ5PEZ9qUA1JnsR5ikv8J+F2b5d0vSkbOv5fMA6pQVuUIZhGTUcIjhvJ/xaasVDCIRRY+EkqtQIDAQAB");
|
|
|
- Adapay.publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwN6xgd6Ad8v2hIIsQVnbt8a3JituR8o4Tc3B5WlcFR55bz4OMqrG/356Ur3cPbc2Fe8ArNd/0gZbC9q56Eb16JTkVNA/fye4SXznWxdyBPR7+guuJZHc/VW2fKH2lfZ2P3Tt0QkKZZoawYOGSMdIvO+WqK44updyax0ikK6JlNQIDAQAB";
|
|
|
- try {
|
|
|
- Adapay.initWithMerConfig(merConfig);
|
|
|
- } catch (Exception e) {
|
|
|
- }
|
|
|
- }
|
|
|
+public class AdapayServiceTest extends ApplicationTests {
|
|
|
+ @Autowired
|
|
|
+ private OrderRepo orderRepo;
|
|
|
+ @Autowired
|
|
|
+ private GiftOrderRepo giftOrderRepo;
|
|
|
|
|
|
- @Test
|
|
|
- public void testPay() throws BaseAdaPayException {
|
|
|
- Map<String, Object> paymentParams = new HashMap<String, Object>(10);
|
|
|
- List<Map<String, Object>> divMembers = new ArrayList<>();
|
|
|
- divMembers.add(new HashMap<>() {{
|
|
|
- put("member_id", "0");
|
|
|
- put("amount", BigDecimal.valueOf(0.05));
|
|
|
- put("fee_flag", "Y");
|
|
|
- }});
|
|
|
- divMembers.add(new HashMap<>() {{
|
|
|
- put("member_id", "1110");
|
|
|
- put("amount", BigDecimal.valueOf(0.05));
|
|
|
- }});
|
|
|
-
|
|
|
- paymentParams.put("app_id", appId);
|
|
|
- paymentParams.put("order_no", "jsdk_payment" + System.currentTimeMillis());
|
|
|
- paymentParams.put("pay_channel", "wx_pub");
|
|
|
- paymentParams.put("pay_amt", "0.10");
|
|
|
- paymentParams.put("goods_title", "your goods title");
|
|
|
- paymentParams.put("goods_desc", "your goods desc");
|
|
|
- paymentParams.put("notify_url", "http://9th.frp.izouma.com/notify/adapay/order/1");
|
|
|
- paymentParams.put("description", "orderId=1");
|
|
|
-
|
|
|
- Map<String, Object> expend = new HashMap<>();
|
|
|
- expend.put("open_id", "oWJG55wLnwdVzXoKka1-DzQKOd_Y");
|
|
|
- paymentParams.put("expend", expend);
|
|
|
-
|
|
|
- Map<String, Object> payment = Payment.create(paymentParams);
|
|
|
- System.out.println("payment result=" + JSON.toJSONString(payment, SerializerFeature.PrettyFormat));
|
|
|
- }
|
|
|
+ private final String appId = "app_0e8d3acb-3d95-4ebb-8445-e470c378a787";
|
|
|
|
|
|
@Test
|
|
|
- public void testWxPay() throws BaseAdaPayException {
|
|
|
- Map<String, Object> params = new HashMap<String, Object>();
|
|
|
- params.put("order_no", "host_wx_lite_params_sdk_" + System.currentTimeMillis());
|
|
|
- params.put("adapay_func_code", "wxpay.createOrder");
|
|
|
- params.put("pay_amt", "0.02");
|
|
|
- params.put("app_id", appId);
|
|
|
- params.put("currency", "cny");
|
|
|
- params.put("goods_title", "Your goods_title");
|
|
|
- params.put("goods_desc", "Your goods_desc");
|
|
|
- params.put("description", "payment Discription");
|
|
|
- params.put("callback_url", "/9th/orders");
|
|
|
- Map<String, Object> response = AdapayCommon.requestAdapayUits(params);
|
|
|
- System.out.println("payment result=" + JSON.toJSONString(response, SerializerFeature.PrettyFormat));
|
|
|
- }
|
|
|
-
|
|
|
- @Data
|
|
|
- public static class RefundOrder {
|
|
|
- @ExcelProperty("交易时间")
|
|
|
- private LocalDateTime time;
|
|
|
+ public void queryRefund() throws ExecutionException, InterruptedException {
|
|
|
|
|
|
- @ExcelProperty("订单号")
|
|
|
- private String id;
|
|
|
+ ForkJoinPool customThreadPool = new ForkJoinPool(100);
|
|
|
+ customThreadPool.submit(() -> {
|
|
|
|
|
|
- @ExcelProperty("支付流水号")
|
|
|
- private String serial;
|
|
|
+ List<AdaTrade> list = EasyExcel.read("/Users/drew/Downloads/merTransDetail_0284905900625472_20220107_20220108_1641637419.xlsx")
|
|
|
+ .head(AdaTrade.class).sheet().doReadSync();
|
|
|
+ list = list.parallelStream().filter(adaTrade -> {
|
|
|
+ return adaTrade.get交易金额().equals("1.00")
|
|
|
+ && orderRepo.findByTransactionId(adaTrade.get订单号()) == null
|
|
|
+ && giftOrderRepo.findByTransactionId(adaTrade.get订单号()) == null;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
|
- @ExcelProperty("第三方订单号")
|
|
|
- private String thirdId;
|
|
|
+ EasyExcel.write("/Users/drew/Downloads/1.xlsx", AdaTrade.class).sheet("模板").doWrite(list);
|
|
|
+ System.out.println(list.size());
|
|
|
|
|
|
- @ExcelProperty("支付宝/微信订单号")
|
|
|
- private String txId;
|
|
|
|
|
|
- @ExcelProperty("交易金额")
|
|
|
- private String amount;
|
|
|
+ }).get();
|
|
|
|
|
|
- private String refundId;
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
- public void refund() throws BaseAdaPayException {
|
|
|
- List<RefundOrder> orders = EasyExcel.read("/Users/drew/Downloads/merTransDetail_0284905900625472_20211201_20211215_1639557451.xlsx")
|
|
|
- .head(RefundOrder.class)
|
|
|
- .registerConverter(new LocalDateConverter())
|
|
|
- .registerConverter(new LocalDateTimeConverter())
|
|
|
- .registerConverter(new BigIntegerConverter())
|
|
|
- .sheet().doReadSync();
|
|
|
- System.out.println(orders.size());
|
|
|
- for (RefundOrder order : orders) {
|
|
|
- String refundId = new SnowflakeIdWorker(0, 0).nextId() + "";
|
|
|
+ public void refund() {
|
|
|
+ List<AdaTrade> list = EasyExcel.read("/Users/drew/Downloads/1.xlsx")
|
|
|
+ .head(AdaTrade.class).sheet().doReadSync();
|
|
|
+ for (AdaTrade adaTrade : list) {
|
|
|
Map<String, Object> refundParams = new HashMap<>();
|
|
|
- refundParams.put("refund_amt", order.getAmount());
|
|
|
+ refundParams.put("refund_amt", adaTrade.get交易金额());
|
|
|
refundParams.put("refund_order_no", new SnowflakeIdWorker(0, 0).nextId() + "");
|
|
|
- Map<String, Object> response = Refund.create(order.getId(), refundParams);
|
|
|
- order.setRefundId(refundId);
|
|
|
+ try {
|
|
|
+ Map<String, Object> response = Refund.create(adaTrade.get订单号(), refundParams);
|
|
|
+ } catch (BaseAdaPayException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
}
|
|
|
- EasyExcel.write("/Users/drew/Desktop/refund.xlsx", RefundOrder.class).sheet("sheet")
|
|
|
- .registerConverter(new LocalDateConverter())
|
|
|
- .registerConverter(new LocalDateTimeConverter())
|
|
|
- .registerConverter(new BigIntegerConverter())
|
|
|
- .doWrite(orders);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Test
|
|
|
- public void queryrefund() throws BaseAdaPayException {
|
|
|
- List<RefundOrder> orders = EasyExcel.read("/Users/drew/Desktop/refund.xlsx")
|
|
|
- .head(RefundOrder.class)
|
|
|
- .registerConverter(new LocalDateConverter())
|
|
|
- .registerConverter(new LocalDateTimeConverter())
|
|
|
- .registerConverter(new BigIntegerConverter())
|
|
|
- .sheet().doReadSync();
|
|
|
- System.out.println(orders.size());
|
|
|
- List<String> success = new ArrayList<>();
|
|
|
- List<String> fail = new ArrayList<>();
|
|
|
- for (RefundOrder order : orders) {
|
|
|
- Map<String, Object> refundParams = new HashMap<>();
|
|
|
- refundParams.put("refund_order_no", order.getRefundId());
|
|
|
- Map<String, Object> refund = Refund.query(refundParams);
|
|
|
- System.out.println(refund.get("refunds"));
|
|
|
+ public void verifyRefund() throws BaseAdaPayException {
|
|
|
+ List<AdaTrade> list = EasyExcel.read("/Users/drew/Downloads/1.xlsx")
|
|
|
+ .head(AdaTrade.class).sheet().doReadSync();
|
|
|
+ list = list.parallelStream().filter(adaTrade -> {
|
|
|
+ boolean success = false;
|
|
|
try {
|
|
|
- if (((JSONArray) refund.get("refunds")).getJSONObject(0).getString("trans_status").equals("S")) {
|
|
|
- success.add(order.getId());
|
|
|
- } else {
|
|
|
- fail.add(order.getId());
|
|
|
+ Map<String, Object> refundParams = new HashMap<>(2);
|
|
|
+ refundParams.put("payment_id", adaTrade.get订单号());
|
|
|
+ Map<String, Object> refund = Refund.query(refundParams);
|
|
|
+ JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(refund));
|
|
|
+ if ("S".equals(jsonObject.getJSONArray("refunds").getJSONObject(0).getString("trans_status"))) {
|
|
|
+ success = true;
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- fail.add(order.getId());
|
|
|
}
|
|
|
- }
|
|
|
- System.out.println("success:" + success.size());
|
|
|
- System.out.println("fail:" + fail.size());
|
|
|
- System.out.println(StringUtils.join(fail, ","));
|
|
|
+ return !success;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ EasyExcel.write("/Users/drew/Downloads/2.xlsx", AdaTrade.class).sheet("模板").doWrite(list);
|
|
|
}
|
|
|
|
|
|
- @Test
|
|
|
- public void queryList() throws BaseAdaPayException {
|
|
|
- Map<String, Object> paymentParams = new HashMap<>();
|
|
|
- paymentParams.put("app_id", appId);
|
|
|
- paymentParams.put("page_index", "1");
|
|
|
- paymentParams.put("page_size", "10");
|
|
|
- paymentParams.put("order_no", "928303191131422720");
|
|
|
- Map<String, Object> paymentList = Payment.queryList(paymentParams);
|
|
|
- System.out.println(paymentList);
|
|
|
- }
|
|
|
}
|