PayEaseTest.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. package com.izouma.nineth;
  2. import com.alibaba.fastjson15.JSON;
  3. import com.alibaba.fastjson15.JSONObject;
  4. import com.alibaba.fastjson15.parser.Feature;
  5. import com.izouma.nineth.utils.SnowflakeIdWorker;
  6. import com.upay.sdk.CipherWrapper;
  7. import com.upay.sdk.ConfigurationUtils;
  8. import com.upay.sdk.HttpClientUtils;
  9. import com.upay.sdk.cashier.bindcard.builder.*;
  10. import com.upay.sdk.cashier.order.builder.ReceiptPaymentBuilder;
  11. import com.upay.sdk.entity.Payer;
  12. import com.upay.sdk.entity.ProductDetail;
  13. import com.upay.sdk.entity.TransferDomesticPayee;
  14. import com.upay.sdk.onlinepay.builder.OrderBuilder;
  15. import com.upay.sdk.onlinepay.builder.QueryBuilder;
  16. import com.upay.sdk.onlinepay.builder.RefundBuilder;
  17. import com.upay.sdk.transferDomestic.builder.AccountBuilder;
  18. import com.upay.sdk.transferDomestic.builder.SingleOrderBuilder;
  19. import com.upay.sdk.transferDomestic.executer.TransferDomesticAccountExecuter;
  20. import com.upay.sdk.transferDomestic.executer.TransferDomesticOrderExecuter;
  21. import com.upay.sdk.transferDomestic.executer.TransferDomesticSingleOrderExecuter;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.junit.Test;
  24. import java.math.BigDecimal;
  25. import java.math.RoundingMode;
  26. import java.util.concurrent.atomic.AtomicInteger;
  27. @Slf4j
  28. public class PayEaseTest {
  29. String merchantId = "896593123";
  30. public JSONObject request(String url, JSONObject requestData) {
  31. log.info("requestData: {}", JSON.toJSONString(requestData, true));
  32. String responseStr = HttpClientUtils.post3(url, requestData);
  33. log.info("responseStr: \n{}", responseStr);
  34. JSONObject responseData = JSONObject.parseObject(responseStr, Feature.SortFeidFastMatch);
  35. responseData = CipherWrapper.bothDecryptWrap(responseData);
  36. log.info("responseStr: {}", JSON.toJSONString(responseData, true));
  37. return responseData;
  38. }
  39. @Test
  40. public void bindCard() {
  41. //商户会员id
  42. String merchantUserId = "1";
  43. // 银⾏卡号
  44. String bankCardNumber = "6222024301070380165";
  45. //预留⼿机号
  46. String phoneNumber = "15077886171";
  47. // 持卡⼈姓名
  48. String name = "熊竹";
  49. // 身份证号
  50. String idCardNum = "321002199408304614";
  51. BindCardBuilder builder = new BindCardBuilder(merchantId);
  52. builder.setMerchantUserId(merchantUserId)
  53. .setBankCardNumber(bankCardNumber)
  54. .setPhoneNumber(phoneNumber)
  55. .setName(name)
  56. .setIdCardNum(idCardNum);
  57. JSONObject requestData = builder.bothEncryptBuild();
  58. log.info("bindCard requestData: {}", JSON.toJSONString(requestData, true));
  59. String responseStr = HttpClientUtils.post3(ConfigurationUtils.getCashierBindCardUrl(), requestData);
  60. log.info("bindCard responseStr: \n{}", responseStr);
  61. JSONObject responseData = JSONObject.parseObject(responseStr, Feature.SortFeidFastMatch);
  62. responseData = CipherWrapper.bothDecryptWrap(responseData);
  63. log.info("bindCard responseStr: {}", JSON.toJSONString(responseData, true));
  64. }
  65. @Test
  66. public void bindCardConfirm() {
  67. String bindCardId = "20220602315804717062699846352896";
  68. String kaptchaCode = "321838";
  69. String merchantUserId = "1";
  70. BindCardConfirmBuilder builder = new BindCardConfirmBuilder(merchantId);
  71. builder.setBindCardId(bindCardId)
  72. .setMerchantUserId(merchantUserId)
  73. .setKaptchaCode(kaptchaCode);
  74. JSONObject requestData = builder.bothEncryptBuild();
  75. log.info("bindCard requestData: {}", JSON.toJSONString(requestData, true));
  76. String responseStr = HttpClientUtils.post3(ConfigurationUtils.getCashierBindCardConfirmUrl(), requestData);
  77. log.info("bindCard responseStr: \n{}", responseStr);
  78. JSONObject responseData = JSONObject.parseObject(responseStr, Feature.SortFeidFastMatch);
  79. responseData = CipherWrapper.bothDecryptWrap(responseData);
  80. log.info("bindCard responseStr: {}", JSON.toJSONString(responseData, true));
  81. }
  82. @Test
  83. public void bindCardCaptcha() {
  84. String bindCardId = "20220519435026712047423086018560";
  85. BindCardKaptchaBuilder builder = new BindCardKaptchaBuilder(merchantId);
  86. builder.setBindCardId(bindCardId);
  87. JSONObject response = request(ConfigurationUtils.getCashierBindCardKaptchaUrl(), builder.bothEncryptBuild());
  88. }
  89. @Test
  90. public void unbind() {
  91. String bindCardId = "20220524516958713695754308698112";
  92. String merchantUserId = "1";
  93. UnBindCardBuilder builder = new UnBindCardBuilder(merchantId);
  94. builder.setBindCardId(bindCardId)
  95. .setMerchantUserId(merchantUserId);
  96. JSONObject response = request(ConfigurationUtils.getCashierUnBindCardUrl(), builder.bothEncryptBuild());
  97. }
  98. @Test
  99. public void queryBind() {
  100. String bindCardId = "20220520544899712342676254900224";
  101. BindCardQueryBuilder builder = new BindCardQueryBuilder(merchantId);
  102. builder.setBindCardId(bindCardId)
  103. .setMerchantUserId("1787318");
  104. JSONObject response = request(ConfigurationUtils.getCashierBindCardQueryUrl(), builder.bothEncryptBuild());
  105. }
  106. @Test
  107. public void pay() {
  108. String subject = "充值";
  109. //订单号
  110. String requestId = new SnowflakeIdWorker(0, 0).nextId() + "";
  111. //订单金额
  112. String orderAmount = "1";
  113. //通知地址
  114. String notifyUrl = "http://xiongzhu.frp.izouma.com/payease/notify/test/" + requestId;
  115. //回调地址
  116. String callbackUrl = "https://www.raex.vip/9th/home";
  117. //备注
  118. String remark = "111";
  119. //商户会员Id
  120. String merchantUserId = "1";
  121. //绑卡Id
  122. String bindCardId = "20220524516958713695754308698112";
  123. //超时时间
  124. String timeout = "3";
  125. OrderBuilder builder = new OrderBuilder(merchantId);
  126. builder.setRequestId(requestId)
  127. .setOrderAmount(orderAmount)
  128. .setOrderCurrency("CNY")
  129. .setNotifyUrl(notifyUrl)
  130. .setCallbackUrl(callbackUrl)
  131. .setRemark(remark)
  132. .setPaymentModeCode("BANK_CARD-AGREEMENT-P2P")
  133. .setNotifyUrl(notifyUrl)
  134. .setMerchantUserId(merchantUserId)
  135. .setBindCardId(bindCardId)
  136. .setClientIp("192.168.22.55");
  137. builder.setTimeout(timeout);
  138. ProductDetail productDetail = new ProductDetail();
  139. productDetail.setName(subject);
  140. productDetail.setQuantity(1L);
  141. productDetail.setAmount(Long.parseLong(orderAmount));
  142. builder.addProductDetail(productDetail);
  143. Payer payer = new Payer();
  144. builder.setPayer(payer);
  145. JSONObject response = request(ConfigurationUtils.getOnlinePayOrderUrl(), builder.bothEncryptBuild());
  146. }
  147. @Test
  148. public void payConfirm() {
  149. String requestId = "978683558270861312";
  150. String paymentOrderId = "f03fc9a74ac3450292cdfc18f6723b9c";
  151. String kaptchaCode = "478513";
  152. ReceiptPaymentBuilder builder = new ReceiptPaymentBuilder(merchantId);
  153. builder.setRequestId(requestId)
  154. .setPaymentOrderId(paymentOrderId)
  155. .setKaptchaCode(kaptchaCode);
  156. JSONObject response = request(ConfigurationUtils.getCashierReceiptPaymentUrl(), builder.bothEncryptBuild());
  157. }
  158. @Test
  159. public void refund() {
  160. String orderId = "7f159751086347cbb728e7fd0de8ad1c";
  161. String amount = "1";
  162. String notifyUrl = "https://www.raex.vip/payease/notify/order";
  163. RefundBuilder builder = new RefundBuilder(merchantId);
  164. builder.setRequestId("978601560772706304")
  165. .setAmount(amount)
  166. .setOrderId(orderId)
  167. .setNotifyUrl(notifyUrl);
  168. JSONObject response = request(ConfigurationUtils.getOnlinePayRefundUrl(), builder.bothEncryptBuild());
  169. }
  170. @Test
  171. public void query() {
  172. String requestId = "978601560772706304";
  173. QueryBuilder builder = new QueryBuilder(merchantId);
  174. builder.setRequestId(requestId);
  175. JSONObject response = request(ConfigurationUtils.getOnlinePayQueryUrl(), builder.bothEncryptBuild());
  176. }
  177. @Test
  178. public void queryRefund() {
  179. String requestId = "978601560772706304";
  180. RefundBuilder builder = new RefundBuilder(merchantId);
  181. builder.setRequestId(requestId);
  182. JSONObject response = request(ConfigurationUtils.getOnlinePayRefundQueryUrl(), builder.bothEncryptBuild());
  183. }
  184. @Test
  185. public void merchantBalance() {
  186. AccountBuilder builder = new AccountBuilder(merchantId);
  187. builder.setRequestId(new SnowflakeIdWorker(1, 1).nextId() + "");
  188. JSONObject response = request(ConfigurationUtils.getTransferDomesticAccountAvailableBalanceUrl(), builder.bothEncryptBuild());
  189. System.out.println(response.getBigDecimal("availableTransferBalance").divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
  190. }
  191. @Test
  192. public void transfer() {
  193. SingleOrderBuilder builder = new SingleOrderBuilder(merchantId);
  194. builder.setRequestId(new SnowflakeIdWorker(1, 1).nextId() + "");
  195. builder.setAmount("100");
  196. builder.setCurrency("CNY");
  197. builder.setNotifyUrl("http://xiongzhu.frp.izouma.com/sandpay/notify");
  198. TransferDomesticPayee payee = new TransferDomesticPayee();
  199. payee.setName("熊竹");
  200. payee.setBankCardNum("6222024301070380165");
  201. builder.setPayee(payee);
  202. JSONObject response = request(ConfigurationUtils.getTransferDomesticSingleOrderUrl(), builder.bothEncryptBuild());
  203. }
  204. @Test
  205. public void queryTransfer() {
  206. com.upay.sdk.transferDomestic.builder.OrderBuilder builder = new com.upay.sdk.transferDomestic.builder.OrderBuilder(merchantId);
  207. builder.setRequestId("1006237416958332928");
  208. JSONObject response = request(ConfigurationUtils.getTransferDomesticSingleQueryUrl(), builder.bothEncryptBuild());
  209. }
  210. @Test
  211. public void transferAndQuery() {
  212. String requestId = new SnowflakeIdWorker(1, 1).nextId() + "";
  213. SingleOrderBuilder builder = new SingleOrderBuilder(merchantId);
  214. builder.setRequestId(requestId);
  215. builder.setAmount("100");
  216. builder.setCurrency("CNY");
  217. builder.setNotifyUrl("http://xiongzhu.frp.izouma.com/sandpay/notify");
  218. TransferDomesticPayee payee = new TransferDomesticPayee();
  219. payee.setName("熊竹");
  220. payee.setBankCardNum("6222024301070380165");
  221. builder.setPayee(payee);
  222. JSONObject response = request(ConfigurationUtils.getTransferDomesticSingleOrderUrl(), builder.bothEncryptBuild());
  223. com.upay.sdk.transferDomestic.builder.OrderBuilder builder1 = new com.upay.sdk.transferDomestic.builder.OrderBuilder(merchantId);
  224. builder1.setRequestId(requestId);
  225. JSONObject response1 = request(ConfigurationUtils.getTransferDomesticSingleQueryUrl(), builder1.bothEncryptBuild());
  226. System.out.println(JSON.toJSONString(response, true));
  227. System.out.println(JSON.toJSONString(response1, true));
  228. }
  229. }