package com.izouma.nineth.service; 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.serializer.SerializerFeature; import com.huifu.adapay.Adapay; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.model.*; import com.izouma.nineth.dto.adapay.MemberInfo; 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.lang3.StringUtils; import org.junit.Test; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class AdapayTest { private final String appId = "app_843a743d-744e-4d73-bd60-3ebbee15d383"; public AdapayTest() { Adapay.debug = false; Adapay.prodMode = true; MerConfig merConfig = new MerConfig(); merConfig.setApiKey("api_live_c9db942a-b6d6-4cf7-b1b1-ec1e2873a7e7"); merConfig.setApiMockKey("api_test_0b1b0eb9-30e1-4acd-8e03-10b529de1856"); merConfig.setRSAPrivateKey("MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQCnIaIrFP598qcf/s3FqXxMTjrVAevnf1w5CAMdJqcRFv0WvdLEmNRxxqAYSLl/iQ8AyU4yqVwkwYqvn/aENBg0iQ5h5qboxb8T6xmrZLctk97TiIuCUwbd7Q5NBHJXzHlaKc1p1KBvTCJDMw8+t0Jh3sBkBvu7l0KPliEQHtPLBDkKvy3NBQD6BMy47kPersjSUH53HBvNpcjcPZGpUX/TmL3SNkS98RkoebFxuorK5UdazYN5xvarjfcYziShIjU3WIZJb52DGUxYWTk6vJKZrJhw7AhWIEQpH7qJxvml/B8RMQ4guHdtp3ojxwkHDtZdPU9rY8i6EHwba4qOYgobAgMBAAECggEAT36L5/oAYl+8ZleIAHBxEspS6WYUkvPdJbNN59uus04/60U2rxQSWFulYmeU87h5TmJxs18i2MjF8msfkhpFORfHo4FV+nm0PQEiIIezKRagcfUMhlx/c6eBmdh3mpNDVUN01NWxyb5ovZXXtnjsNikBUZKQwdVcb3d1GnnPO0xtt6/0xwiduCkA2ihS1tgnsYYDhMHgukIdZ3eczn3stRPQ+QyCt1JWS6DDd1nS3S2RyPZw8P9Z1zzJFVKH8z3bGqk3/98Lw7Hw+rKFnKhIA6/H9ZVORKw5OuGC3Ozy6cVbmUn8tuw3sC0NdR7w56dedB+fjJB8od0nahX1Cc6eQQKBgQDckcenslWqjs2PbncwW1wqlw7FdJX9rzJAg7kp9ItpHCoNi/kSgXeLphHXWJmyj7a1BkWynmTGxO48X3dPXUrDPFKJc42fSbxMgAQdtc/A2z+v7Ga/oUpH8jajKfKmcgeRX026R7gd9W0yi0EW+C0WdFhrzNKKY4shvnYy9lc+QwKBgQDB+mHSllqLqYru0bLrtKOKJXaR3N3INxDBZKnRqba4tUKN35IVIexiEMkHmC51jtjoRyA5Y+fc/8P11i9FbuShtRVGHWeyDibKlwff5zrETveSLTpSULBKZ6MsFSm0Fo1krSUC1QTUGG5VX/wwWm9AB2UKJqG5cMDd3i3RiPeDSQKBgBs1ED+rS83iF5Eduy4H1vKZ94R7wRSty7ERjoGSXK/2fWl2Xp7dwXVEYucBUtQnzg2+XFKQHzY1jH19+SWdCF/UzQmPa2S+n6+ACwHvL1VGtjBpJLN2nccKJZsyzW+imTRhYSEdP6TSZUnay4idzFH8v/tsJHxVkw/ygnn+0PwpAn8uOHsWsrzgioWQYmc/wss1H7ghCX/PNU/IxTOxwb7IRGiXZa5pWqv4sgc0yA5J9L+6mTgUdLnK7ybCbUbWRJY18fAfxOHwi26y10oJEA/wtuBG9H/xHUjkcc1vs5s8TiNi2d73zcpYv3mK3lQ5MVNQ7nIk+Q+QIE3UkBxa0UgpAoGBAMDwg0ebzBEZsV2cr/Er2b25LsXteDJ+V67plBNrv+A1/omA9a52sWek4bY0D+Uu6zPTDaLj9BhHC2wJmThYl0eLRKyDKYQslBR3h253Gsn3If6RH9/tSyDsQ88iAEI1f6QH27bGHL9VDrsLGEFg5E7ZEzFQuJPqoUvBOoURNwa6"); merConfig.setRSAPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApyGiKxT+ffKnH/7Nxal8TE461QHr539cOQgDHSanERb9Fr3SxJjUccagGEi5f4kPAMlOMqlcJMGKr5/2hDQYNIkOYeam6MW/E+sZq2S3LZPe04iLglMG3e0OTQRyV8x5WinNadSgb0wiQzMPPrdCYd7AZAb7u5dCj5YhEB7TywQ5Cr8tzQUA+gTMuO5D3q7I0lB+dxwbzaXI3D2RqVF/05i90jZEvfEZKHmxcbqKyuVHWs2Decb2q433GM4koSI1N1iGSW+dgxlMWFk5OrySmayYcOwIViBEKR+6icb5pfwfETEOILh3bad6I8cJBw7WXT1Pa2PIuhB8G2uKjmIKGwIDAQAB"); Adapay.publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwN6xgd6Ad8v2hIIsQVnbt8a3JituR8o4Tc3B5WlcFR55bz4OMqrG/356Ur3cPbc2Fe8ArNd/0gZbC9q56Eb16JTkVNA/fye4SXznWxdyBPR7+guuJZHc/VW2fKH2lfZ2P3Tt0QkKZZoawYOGSMdIvO+WqK44updyax0ikK6JlNQIDAQAB"; try { Adapay.initWithMerConfig(merConfig); } catch (Exception e) { } } @Test public void testPay() throws BaseAdaPayException { Map paymentParams = new HashMap(10); List> 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 expend = new HashMap<>(); expend.put("open_id", "oWJG55wLnwdVzXoKka1-DzQKOd_Y"); paymentParams.put("expend", expend); Map payment = Payment.create(paymentParams); System.out.println("payment result=" + JSON.toJSONString(payment, SerializerFeature.PrettyFormat)); } @Test public void testWxPay() throws BaseAdaPayException { Map params = new HashMap(); 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 response = AdapayCommon.requestAdapayUits(params); System.out.println("payment result=" + JSON.toJSONString(response, SerializerFeature.PrettyFormat)); } @Data public static class RefundOrder { @ExcelProperty("交易时间") private LocalDateTime time; @ExcelProperty("订单号") private String id; @ExcelProperty("支付流水号") private String serial; @ExcelProperty("第三方订单号") private String thirdId; @ExcelProperty("支付宝/微信订单号") private String txId; @ExcelProperty("交易金额") private String amount; private String refundId; } @Test public void refund() throws BaseAdaPayException { List 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() + ""; Map refundParams = new HashMap<>(); refundParams.put("refund_amt", order.getAmount()); refundParams.put("refund_order_no", new SnowflakeIdWorker(0, 0).nextId() + ""); Map response = Refund.create(order.getId(), refundParams); order.setRefundId(refundId); } 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 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 success = new ArrayList<>(); List fail = new ArrayList<>(); for (RefundOrder order : orders) { Map refundParams = new HashMap<>(); refundParams.put("refund_order_no", order.getRefundId()); Map refund = Refund.query(refundParams); System.out.println(refund.get("refunds")); try { if (((JSONArray) refund.get("refunds")).getJSONObject(0).getString("trans_status").equals("S")) { success.add(order.getId()); } else { fail.add(order.getId()); } } 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, ",")); } @Test public void queryList() throws BaseAdaPayException { LocalDateTime start = LocalDateTime.of(2022, 1, 7, 0, 0, 0); LocalDateTime end = LocalDateTime.of(2022, 1, 8, 0, 0, 0); Map paymentParams = new HashMap<>(); int page = 0; paymentParams.put("app_id", appId); paymentParams.put("page_size", "20"); paymentParams.put("out_trans_id", "2022022522001490791443239943"); JSONArray list = new JSONArray(); paymentParams.put("page_index", ++page); Map paymentList = Payment.queryList(paymentParams); System.out.println(JSON.toJSONString(paymentList,SerializerFeature.PrettyFormat)); } @Test public void singleRefund() throws BaseAdaPayException { Map refundParams = new HashMap<>(); refundParams.put("refund_amt", "0.01"); refundParams.put("refund_order_no", new SnowflakeIdWorker(0, 0).nextId() + ""); Map response = Refund.create("002112022030111085110344569856421703680", refundParams); System.out.println(JSON.toJSONString(response, SerializerFeature.PrettyFormat)); } @Test public void singleRefundVerify() throws BaseAdaPayException { Map queryParams = new HashMap<>(); queryParams.put("payment_id", "002112022022011030310341306906502942720"); Map refund = Refund.query(queryParams); System.out.println(JSON.toJSONString(refund, SerializerFeature.PrettyFormat)); } @Test public void singleQuery() throws BaseAdaPayException { Map map = Payment.query("002112022030111361010344576731466739712"); System.out.println(JSON.toJSONString(map, SerializerFeature.PrettyFormat)); } @Test public void createmember() throws BaseAdaPayException { Map memberParams = new HashMap(7); memberParams.put("member_id", "member_id_test"); memberParams.put("app_id", appId); memberParams.put("location", "上海市徐汇区宜山路700号"); memberParams.put("email", "123@163.com"); memberParams.put("gender", "MALE"); memberParams.put("tel_no", "13153333333"); memberParams.put("nickname", "nick_name"); Map member = Member.create(memberParams); System.out.println(JSON.toJSONString(member, SerializerFeature.PrettyFormat)); Map settleCountParams = new HashMap<>(); Map accountInfo = new HashMap<>(); accountInfo.put("card_id", "6222024301070380165"); accountInfo.put("card_name", "熊竹"); accountInfo.put("cert_id", "321002199408304614"); accountInfo.put("cert_type", "00"); accountInfo.put("tel_no", "15077886171"); accountInfo.put("bank_acct_type", "2"); settleCountParams.put("member_id", "member_id_test"); settleCountParams.put("app_id", appId); settleCountParams.put("channel", "bank_account"); settleCountParams.put("account_info", accountInfo); Map settleCount = SettleAccount.create(settleCountParams); System.out.println(JSON.toJSONString(member, SerializerFeature.PrettyFormat)); } @Test public void queryMember() throws BaseAdaPayException { Map memberParams = new HashMap(2); memberParams.put("member_id", "test0301"); memberParams.put("app_id", appId); Map member = Member.query(memberParams); System.out.println(JSON.toJSONString(member, SerializerFeature.PrettyFormat)); MemberInfo m = JSON.parseObject(JSON.toJSONString(member), MemberInfo.class); System.out.println(m); } }