Payment.java 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. package com.keao.edu.thirdparty.adapay;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.huifu.adapay.core.exception.BaseAdaPayException;
  5. import org.springframework.util.DigestUtils;
  6. import java.math.BigDecimal;
  7. import java.util.HashMap;
  8. import java.util.LinkedHashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11. public class Payment extends ConfigInit {
  12. /**
  13. * 运行支付类接口
  14. *
  15. * @return paymentId
  16. * @throws Exception 异常
  17. */
  18. public static String executePaymentTest(String merchantKey) throws Exception {
  19. //支付接口
  20. Map<String, Object> paymentParams = new HashMap<>(10);
  21. paymentParams.put("order_no", "jsdk_payment_" + System.currentTimeMillis());
  22. paymentParams.put("pay_channel", "alipay_wap");
  23. paymentParams.put("pay_amt", "0.01");
  24. paymentParams.put("goods_title", "your goods title");
  25. paymentParams.put("goods_desc", "your goods desc");
  26. paymentParams.put("notify_url", "https://wxwechat.utools.club/studentOrder/adaNotify");
  27. paymentParams.put("div_members", "");
  28. Map<String, Object> deviceInfo = new HashMap<>(2);
  29. deviceInfo.put("device_ip", "127.0.0.1");
  30. deviceInfo.put("device_mac", "交易设备 MAC");
  31. deviceInfo.put("device_type", "1");
  32. deviceInfo.put("device_imei", "交易设备 IMEI");
  33. deviceInfo.put("device_imsi", "交易设备 IMSI");
  34. deviceInfo.put("device_iccId", "ICCID");
  35. deviceInfo.put("device_wifi_mac", "WIFIMAC");
  36. paymentParams.put("device_info", deviceInfo);
  37. // Map<String, Object> goodsDetail = new HashMap<>();
  38. //
  39. // goodsDetail.put("goods_id", "gooods_id_100002");
  40. // goodsDetail.put("goods_name", "商品名称");
  41. // goodsDetail.put("quantity", "1");
  42. // goodsDetail.put("price", "100");
  43. // goodsDetail.put("goods_category", "商品类目");
  44. // goodsDetail.put("goods_body", "商品描述信息");
  45. // goodsDetail.put("show_url", "商品的展示地址");
  46. //
  47. // Map<String, Object> promotionDetail = new HashMap<>();
  48. //
  49. // promotionDetail.put("cost_price", "100");
  50. // promotionDetail.put("receipt_id", "商家小票 id");
  51. // promotionDetail.put("goods_detail", goodsDetail);
  52. Map<String, Object> expendParams = new HashMap<>(2);
  53. String openId = "";//微信授权获取
  54. expendParams.put("open_id", openId);
  55. expendParams.put("is_raw", "1");
  56. expendParams.put("callback_url", "绝对路径");
  57. expendParams.put("limit_pay", "1");
  58. // expendParams.put("promotion_detail", promotionDetail);
  59. paymentParams.put("expend", expendParams);
  60. Map<String, Object> payment = executePayment(paymentParams);
  61. System.out.println("钱包支付地址:" + payment.get("pay_url"));
  62. //支付查询接口
  63. // queryPayment((String) payment.get("id"));
  64. // //关单接口
  65. // closePayment((String) payment.get("id"));
  66. return (String) payment.get("id");
  67. }
  68. /**
  69. * 执行一个支付交易
  70. *
  71. * @return 创建的支付对象
  72. * @throws Exception 异常
  73. */
  74. public static Map<String, Object> executePayment(Map<String, Object> paymentParams) throws Exception {
  75. paymentParams.put("app_id", appId);
  76. //调用sdk方法,创建支付,得到支付对象
  77. Map<String, Object> payment = new HashMap<>();
  78. try {
  79. payment = com.huifu.adapay.model.Payment.create(paymentParams);
  80. } catch (BaseAdaPayException e) {
  81. e.printStackTrace();
  82. }
  83. String error_code = (String) payment.get("error_code");
  84. if (null != error_code) {
  85. System.out.println("创建支付返回参数:" + JSON.toJSONString(payment));
  86. String error_msg = (String) payment.get("error_msg");
  87. System.out.println("error_code:" + error_code + "............." + error_msg);
  88. }
  89. return payment;
  90. }
  91. /**
  92. * 关闭一个支付交易
  93. *
  94. * @param paymentId 要关闭的支付id
  95. * @return 关闭的支付对象
  96. * @throws Exception 异常
  97. */
  98. public static Map<String, Object> closePayment(String paymentId) throws Exception {
  99. System.out.println("=======close payment begin=======");
  100. //关闭支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/04-trade.html#id11
  101. //调用sdk方法,关闭支付,得到支付对象
  102. Map<String, Object> payment = new HashMap<>();
  103. Map<String, Object> paymentParams = new HashMap<>(10);
  104. paymentParams.put("payment_id", paymentId);
  105. try {
  106. paymentParams.put("payment_id", paymentId);
  107. paymentParams.put("reason", "reason");
  108. paymentParams.put("expend", "expend");
  109. paymentParams.put("notify_url", "notify_url");
  110. System.out.println("关单请求参数:" + JSON.toJSONString(paymentId));
  111. payment = com.huifu.adapay.model.Payment.close(paymentParams);
  112. } catch (BaseAdaPayException e) {
  113. e.printStackTrace();
  114. }
  115. String error_code = (String) payment.get("error_code");
  116. if (null != error_code) {
  117. System.out.println("关单返回参数:" + JSON.toJSONString(payment));
  118. String error_msg = (String) payment.get("error_msg");
  119. System.out.println("error_code:" + error_code + "............." + error_msg);
  120. }
  121. return payment;
  122. }
  123. /**
  124. * 查询一个支付交易
  125. *
  126. * @param paymentId 要查询的支付id
  127. * @return 查询的支付对象
  128. * @throws Exception 异常
  129. */
  130. public static Map<String, Object> queryPayment(String paymentId) throws Exception {
  131. System.out.println("=======query payment begin=======");
  132. //查询支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/04-trade.html#id7
  133. //调用sdk方法,查询支付交易,得到支付对象
  134. Map<String, Object> payment = new HashMap<>();
  135. try {
  136. System.out.println("支付查询请求参数:" + JSON.toJSONString(paymentId));
  137. payment = com.huifu.adapay.model.Payment.query(paymentId);
  138. } catch (BaseAdaPayException e) {
  139. e.printStackTrace();
  140. }
  141. System.out.println("支付查询返回参数:" + JSON.toJSONString(payment));
  142. String error_code = (String) payment.get("error_code");
  143. if (null == error_code) {
  144. String error_msg = (String) payment.get("error_msg");
  145. System.out.println("error_code:" + error_code + "............." + error_msg);
  146. }
  147. System.out.println("=======query payment end=======");
  148. return payment;
  149. }
  150. public static Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody) throws Exception {
  151. Map<String, Object> paymentParams = new LinkedHashMap<>();
  152. paymentParams.put("appId", appId);
  153. paymentParams.put("amount", amount.setScale(2,BigDecimal.ROUND_HALF_UP));
  154. paymentParams.put("orderNo", orderNo);
  155. // paymentParams.put("notifyUrl", notifyUrl);
  156. // paymentParams.put("returnUrl", returnUrl);
  157. paymentParams.put("orderSubject", orderSubject);
  158. paymentParams.put("orderBody", orderBody);
  159. paymentParams.put("wxAppId", wxAppId);
  160. String originalStr = JSONObject.toJSONString(paymentParams);
  161. String sign = DigestUtils.md5DigestAsHex(originalStr.getBytes());
  162. paymentParams.put("sign", sign);
  163. paymentParams.remove(appId);
  164. return paymentParams;
  165. }
  166. }