AdapayTest.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. package com.izouma.nineth.service;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.excel.annotation.ExcelProperty;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONArray;
  6. import com.alibaba.fastjson.serializer.SerializerFeature;
  7. import com.huifu.adapay.Adapay;
  8. import com.huifu.adapay.core.exception.BaseAdaPayException;
  9. import com.huifu.adapay.model.*;
  10. import com.izouma.nineth.dto.adapay.MemberInfo;
  11. import com.izouma.nineth.utils.SnowflakeIdWorker;
  12. import com.izouma.nineth.utils.excel.BigIntegerConverter;
  13. import com.izouma.nineth.utils.excel.LocalDateConverter;
  14. import com.izouma.nineth.utils.excel.LocalDateTimeConverter;
  15. import lombok.Data;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.junit.Test;
  18. import java.math.BigDecimal;
  19. import java.time.LocalDateTime;
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24. public class AdapayTest {
  25. private final String appId = "app_843a743d-744e-4d73-bd60-3ebbee15d383";
  26. public AdapayTest() {
  27. Adapay.debug = false;
  28. Adapay.prodMode = true;
  29. MerConfig merConfig = new MerConfig();
  30. merConfig.setApiKey("api_live_c9db942a-b6d6-4cf7-b1b1-ec1e2873a7e7");
  31. merConfig.setApiMockKey("api_test_0b1b0eb9-30e1-4acd-8e03-10b529de1856");
  32. 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");
  33. merConfig.setRSAPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApyGiKxT+ffKnH/7Nxal8TE461QHr539cOQgDHSanERb9Fr3SxJjUccagGEi5f4kPAMlOMqlcJMGKr5/2hDQYNIkOYeam6MW/E+sZq2S3LZPe04iLglMG3e0OTQRyV8x5WinNadSgb0wiQzMPPrdCYd7AZAb7u5dCj5YhEB7TywQ5Cr8tzQUA+gTMuO5D3q7I0lB+dxwbzaXI3D2RqVF/05i90jZEvfEZKHmxcbqKyuVHWs2Decb2q433GM4koSI1N1iGSW+dgxlMWFk5OrySmayYcOwIViBEKR+6icb5pfwfETEOILh3bad6I8cJBw7WXT1Pa2PIuhB8G2uKjmIKGwIDAQAB");
  34. Adapay.publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwN6xgd6Ad8v2hIIsQVnbt8a3JituR8o4Tc3B5WlcFR55bz4OMqrG/356Ur3cPbc2Fe8ArNd/0gZbC9q56Eb16JTkVNA/fye4SXznWxdyBPR7+guuJZHc/VW2fKH2lfZ2P3Tt0QkKZZoawYOGSMdIvO+WqK44updyax0ikK6JlNQIDAQAB";
  35. try {
  36. Adapay.initWithMerConfig(merConfig);
  37. } catch (Exception e) {
  38. }
  39. }
  40. @Test
  41. public void testPay() throws BaseAdaPayException {
  42. Map<String, Object> paymentParams = new HashMap<String, Object>(10);
  43. List<Map<String, Object>> divMembers = new ArrayList<>();
  44. divMembers.add(new HashMap<>() {{
  45. put("member_id", "0");
  46. put("amount", BigDecimal.valueOf(0.05));
  47. put("fee_flag", "Y");
  48. }});
  49. divMembers.add(new HashMap<>() {{
  50. put("member_id", "1110");
  51. put("amount", BigDecimal.valueOf(0.05));
  52. }});
  53. paymentParams.put("app_id", appId);
  54. paymentParams.put("order_no", "jsdk_payment" + System.currentTimeMillis());
  55. paymentParams.put("pay_channel", "wx_pub");
  56. paymentParams.put("pay_amt", "0.10");
  57. paymentParams.put("goods_title", "your goods title");
  58. paymentParams.put("goods_desc", "your goods desc");
  59. paymentParams.put("notify_url", "http://9th.frp.izouma.com/notify/adapay/order/1");
  60. paymentParams.put("description", "orderId=1");
  61. Map<String, Object> expend = new HashMap<>();
  62. expend.put("open_id", "oWJG55wLnwdVzXoKka1-DzQKOd_Y");
  63. paymentParams.put("expend", expend);
  64. Map<String, Object> payment = Payment.create(paymentParams);
  65. System.out.println("payment result=" + JSON.toJSONString(payment, SerializerFeature.PrettyFormat));
  66. }
  67. @Test
  68. public void testWxPay() throws BaseAdaPayException {
  69. Map<String, Object> params = new HashMap<String, Object>();
  70. params.put("order_no", "host_wx_lite_params_sdk_" + System.currentTimeMillis());
  71. params.put("adapay_func_code", "wxpay.createOrder");
  72. params.put("pay_amt", "0.02");
  73. params.put("app_id", appId);
  74. params.put("currency", "cny");
  75. params.put("goods_title", "Your goods_title");
  76. params.put("goods_desc", "Your goods_desc");
  77. params.put("description", "payment Discription");
  78. params.put("callback_url", "/9th/orders");
  79. Map<String, Object> response = AdapayCommon.requestAdapayUits(params);
  80. System.out.println("payment result=" + JSON.toJSONString(response, SerializerFeature.PrettyFormat));
  81. }
  82. @Data
  83. public static class RefundOrder {
  84. @ExcelProperty("交易时间")
  85. private LocalDateTime time;
  86. @ExcelProperty("订单号")
  87. private String id;
  88. @ExcelProperty("支付流水号")
  89. private String serial;
  90. @ExcelProperty("第三方订单号")
  91. private String thirdId;
  92. @ExcelProperty("支付宝/微信订单号")
  93. private String txId;
  94. @ExcelProperty("交易金额")
  95. private String amount;
  96. private String refundId;
  97. }
  98. @Test
  99. public void refund() throws BaseAdaPayException {
  100. List<RefundOrder> orders = EasyExcel.read("/Users/drew/Downloads/merTransDetail_0284905900625472_20211201_20211215_1639557451.xlsx")
  101. .head(RefundOrder.class)
  102. .registerConverter(new LocalDateConverter())
  103. .registerConverter(new LocalDateTimeConverter())
  104. .registerConverter(new BigIntegerConverter())
  105. .sheet().doReadSync();
  106. System.out.println(orders.size());
  107. for (RefundOrder order : orders) {
  108. String refundId = new SnowflakeIdWorker(0, 0).nextId() + "";
  109. Map<String, Object> refundParams = new HashMap<>();
  110. refundParams.put("refund_amt", order.getAmount());
  111. refundParams.put("refund_order_no", new SnowflakeIdWorker(0, 0).nextId() + "");
  112. Map<String, Object> response = Refund.create(order.getId(), refundParams);
  113. order.setRefundId(refundId);
  114. }
  115. EasyExcel.write("/Users/drew/Desktop/refund.xlsx", RefundOrder.class).sheet("sheet")
  116. .registerConverter(new LocalDateConverter())
  117. .registerConverter(new LocalDateTimeConverter())
  118. .registerConverter(new BigIntegerConverter())
  119. .doWrite(orders);
  120. }
  121. @Test
  122. public void queryrefund() throws BaseAdaPayException {
  123. List<RefundOrder> orders = EasyExcel.read("/Users/drew/Desktop/refund.xlsx")
  124. .head(RefundOrder.class)
  125. .registerConverter(new LocalDateConverter())
  126. .registerConverter(new LocalDateTimeConverter())
  127. .registerConverter(new BigIntegerConverter())
  128. .sheet().doReadSync();
  129. System.out.println(orders.size());
  130. List<String> success = new ArrayList<>();
  131. List<String> fail = new ArrayList<>();
  132. for (RefundOrder order : orders) {
  133. Map<String, Object> refundParams = new HashMap<>();
  134. refundParams.put("refund_order_no", order.getRefundId());
  135. Map<String, Object> refund = Refund.query(refundParams);
  136. System.out.println(refund.get("refunds"));
  137. try {
  138. if (((JSONArray) refund.get("refunds")).getJSONObject(0).getString("trans_status").equals("S")) {
  139. success.add(order.getId());
  140. } else {
  141. fail.add(order.getId());
  142. }
  143. } catch (Exception e) {
  144. fail.add(order.getId());
  145. }
  146. }
  147. System.out.println("success:" + success.size());
  148. System.out.println("fail:" + fail.size());
  149. System.out.println(StringUtils.join(fail, ","));
  150. }
  151. @Test
  152. public void queryList() throws BaseAdaPayException {
  153. LocalDateTime start = LocalDateTime.of(2022, 1, 7, 0, 0, 0);
  154. LocalDateTime end = LocalDateTime.of(2022, 1, 8, 0, 0, 0);
  155. Map<String, Object> paymentParams = new HashMap<>();
  156. int page = 0;
  157. paymentParams.put("app_id", appId);
  158. paymentParams.put("page_size", "20");
  159. paymentParams.put("out_trans_id", "2022022522001490791443239943");
  160. JSONArray list = new JSONArray();
  161. paymentParams.put("page_index", ++page);
  162. Map<String, Object> paymentList = Payment.queryList(paymentParams);
  163. System.out.println(JSON.toJSONString(paymentList,SerializerFeature.PrettyFormat));
  164. }
  165. @Test
  166. public void singleRefund() throws BaseAdaPayException {
  167. Map<String, Object> refundParams = new HashMap<>();
  168. refundParams.put("refund_amt", "0.01");
  169. refundParams.put("refund_order_no", new SnowflakeIdWorker(0, 0).nextId() + "");
  170. Map<String, Object> response = Refund.create("002112022030111085110344569856421703680", refundParams);
  171. System.out.println(JSON.toJSONString(response, SerializerFeature.PrettyFormat));
  172. }
  173. @Test
  174. public void singleRefundVerify() throws BaseAdaPayException {
  175. Map<String, Object> queryParams = new HashMap<>();
  176. queryParams.put("payment_id", "002112022022011030310341306906502942720");
  177. Map<String, Object> refund = Refund.query(queryParams);
  178. System.out.println(JSON.toJSONString(refund, SerializerFeature.PrettyFormat));
  179. }
  180. @Test
  181. public void singleQuery() throws BaseAdaPayException {
  182. Map<String, Object> map = Payment.query("002112022030111361010344576731466739712");
  183. System.out.println(JSON.toJSONString(map, SerializerFeature.PrettyFormat));
  184. }
  185. @Test
  186. public void createmember() throws BaseAdaPayException {
  187. Map<String, Object> memberParams = new HashMap<String, Object>(7);
  188. memberParams.put("member_id", "member_id_test");
  189. memberParams.put("app_id", appId);
  190. memberParams.put("location", "上海市徐汇区宜山路700号");
  191. memberParams.put("email", "123@163.com");
  192. memberParams.put("gender", "MALE");
  193. memberParams.put("tel_no", "13153333333");
  194. memberParams.put("nickname", "nick_name");
  195. Map<String, Object> member = Member.create(memberParams);
  196. System.out.println(JSON.toJSONString(member, SerializerFeature.PrettyFormat));
  197. Map<String, Object> settleCountParams = new HashMap<>();
  198. Map<String, Object> accountInfo = new HashMap<>();
  199. accountInfo.put("card_id", "6222024301070380165");
  200. accountInfo.put("card_name", "熊竹");
  201. accountInfo.put("cert_id", "321002199408304614");
  202. accountInfo.put("cert_type", "00");
  203. accountInfo.put("tel_no", "15077886171");
  204. accountInfo.put("bank_acct_type", "2");
  205. settleCountParams.put("member_id", "member_id_test");
  206. settleCountParams.put("app_id", appId);
  207. settleCountParams.put("channel", "bank_account");
  208. settleCountParams.put("account_info", accountInfo);
  209. Map<String, Object> settleCount = SettleAccount.create(settleCountParams);
  210. System.out.println(JSON.toJSONString(member, SerializerFeature.PrettyFormat));
  211. }
  212. @Test
  213. public void queryMember() throws BaseAdaPayException {
  214. Map<String, Object> memberParams = new HashMap<String, Object>(2);
  215. memberParams.put("member_id", "test0301");
  216. memberParams.put("app_id", appId);
  217. Map<String, Object> member = Member.query(memberParams);
  218. System.out.println(JSON.toJSONString(member, SerializerFeature.PrettyFormat));
  219. MemberInfo m = JSON.parseObject(JSON.toJSONString(member), MemberInfo.class);
  220. System.out.println(m);
  221. }
  222. }