AlipayClientFactory.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package com.izouma.awesomeadmin.util;
  2. import com.alipay.api.AlipayApiException;
  3. import com.alipay.api.AlipayClient;
  4. import com.alipay.api.DefaultAlipayClient;
  5. import com.alipay.api.internal.util.StringUtils;
  6. import com.alipay.api.request.*;
  7. import com.alipay.api.response.AlipayTradeCancelResponse;
  8. import com.alipay.api.response.AlipayTradePayResponse;
  9. import com.alipay.api.response.AlipayTradePrecreateResponse;
  10. import com.alipay.api.response.AlipayTradeRefundResponse;
  11. import net.sf.json.JSONObject;
  12. import java.util.Map;
  13. public class AlipayClientFactory {
  14. // 手机网页支付 网站支付
  15. public static String ydAndPc_Pay(Map<String, String> maps) throws AlipayApiException {
  16. AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();
  17. String NotifyUrl = maps.get("NotifyUrl");
  18. String ReturnUrl = maps.get("ReturnUrl");
  19. // 后台回调
  20. if (!StringUtils.isEmpty(NotifyUrl)) {
  21. alipayRequest.setNotifyUrl(NotifyUrl);
  22. // bizContent 中不需要 公共参数
  23. maps.remove("NotifyUrl");
  24. }
  25. // 页面回调
  26. if (!StringUtils.isEmpty(ReturnUrl)) {
  27. alipayRequest.setReturnUrl(ReturnUrl);
  28. // bizContent 中不需要 公共参数
  29. maps.remove("ReturnUrl");
  30. }
  31. String bizCon = JSONObject.fromObject(maps).toString();
  32. alipayRequest.setBizContent(bizCon);
  33. String form = "";
  34. try {
  35. form = AlipayClientFactory.getAlipayClientInstance().pageExecute(alipayRequest).getBody();
  36. } catch (AlipayApiException e) {
  37. form = "err";
  38. e.printStackTrace();
  39. } // 调用SDK生成表单
  40. return form;
  41. }
  42. // 手机网页支付 网站支付
  43. public static String app_Pay(Map<String, String> maps) throws AlipayApiException {
  44. AlipayTradeAppPayRequest alipayRequest = new AlipayTradeAppPayRequest ();
  45. String NotifyUrl = maps.get("NotifyUrl");
  46. String ReturnUrl = maps.get("ReturnUrl");
  47. // 后台回调
  48. if (!StringUtils.isEmpty(NotifyUrl)) {
  49. alipayRequest.setNotifyUrl(NotifyUrl);
  50. // bizContent 中不需要 公共参数
  51. maps.remove("NotifyUrl");
  52. }
  53. // 页面回调
  54. if (!StringUtils.isEmpty(ReturnUrl)) {
  55. alipayRequest.setReturnUrl(ReturnUrl);
  56. // bizContent 中不需要 公共参数
  57. maps.remove("ReturnUrl");
  58. }
  59. String bizCon = JSONObject.fromObject(maps).toString();
  60. alipayRequest.setBizContent(bizCon);
  61. String form = "";
  62. try {
  63. //这里和普通的接口调用不同,使用的是sdkExecute
  64. //getBody 就是orderString 可以直接给客户端请求,无需再做处理。
  65. form = AlipayClientFactory.getAlipayClientInstance().sdkExecute(alipayRequest).getBody();
  66. } catch (AlipayApiException e) {
  67. form = "err";
  68. e.printStackTrace();
  69. } // 调用SDK生成表单
  70. return form;
  71. }
  72. // PC网页支付
  73. public static String PC_Pay(Map<String, String> maps) throws AlipayApiException {
  74. AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
  75. maps.put("product_code", "FAST_INSTANT_TRADE_PAY");//销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY
  76. String NotifyUrl = maps.get("NotifyUrl");
  77. String ReturnUrl = maps.get("ReturnUrl");
  78. // 后台回调
  79. if (!StringUtils.isEmpty(NotifyUrl)) {
  80. alipayRequest.setNotifyUrl(NotifyUrl);
  81. // bizContent 中不需要 公共参数
  82. maps.remove("NotifyUrl");
  83. }
  84. // 页面回调
  85. if (!StringUtils.isEmpty(ReturnUrl)) {
  86. alipayRequest.setReturnUrl(ReturnUrl);
  87. // bizContent 中不需要 公共参数
  88. maps.remove("ReturnUrl");
  89. }
  90. String bizCon = JSONObject.fromObject(maps).toString();
  91. alipayRequest.setBizContent(bizCon);
  92. String form = "";
  93. try {
  94. form = AlipayClientFactory.getAlipayClientInstance().pageExecute(alipayRequest).getBody();
  95. } catch (AlipayApiException e) {
  96. form = "err";
  97. e.printStackTrace();
  98. } // 调用SDK生成表单
  99. return form;
  100. }
  101. public static AlipayClient getAlipayClientInstance() {
  102. AlipayClient alipayClient = new DefaultAlipayClient(PropertiesFileLoader.getProperties("ALIPAY_GATEWAY"),
  103. PropertiesFileLoader.getProperties("ALIPAY_APP_ID"), PropertiesFileLoader.getProperties("ALIPAY_APP_PRIVATE_KEY"), "json", "utf-8",
  104. PropertiesFileLoader.getProperties("ALIPAY_ALIPAY_PUBLIC_KEY"),PropertiesFileLoader.getProperties("ALIPAY_SIGN_TYPE"));
  105. return alipayClient;
  106. }
  107. // 条码支付
  108. public static AlipayTradePayResponse pay(String appAuthToken, String bizContent) throws AlipayApiException {
  109. AlipayTradePayRequest request = new AlipayTradePayRequest();
  110. request.putOtherTextParam("app_auth_token", appAuthToken);
  111. request.setBizContent(bizContent);
  112. return AlipayClientFactory.getAlipayClientInstance().execute(request);
  113. }
  114. // 扫码支付
  115. public static AlipayTradePrecreateResponse precreate(String appAuthToken, String bizContent) throws AlipayApiException {
  116. AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
  117. request.putOtherTextParam("app_auth_token", appAuthToken);
  118. request.setBizContent(bizContent);
  119. return AlipayClientFactory.getAlipayClientInstance().execute(request);
  120. }
  121. // 订单撤销
  122. public static AlipayTradeCancelResponse cancel(String appAuthToken, String bizContent) throws AlipayApiException {
  123. AlipayTradeCancelRequest request = new AlipayTradeCancelRequest();
  124. request.putOtherTextParam("app_auth_token", appAuthToken);
  125. request.setBizContent(bizContent);
  126. return AlipayClientFactory.getAlipayClientInstance().execute(request);
  127. }
  128. // 申请退款
  129. public static AlipayTradeRefundResponse refund(String appAuthToken, String bizContent) throws AlipayApiException {
  130. AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
  131. request.putOtherTextParam("app_auth_token", appAuthToken);
  132. request.setBizContent(bizContent);
  133. return AlipayClientFactory.getAlipayClientInstance().execute(request);
  134. }
  135. // 申请退款
  136. public static boolean refund(String outTradeNo, double refundAmount) {
  137. String bizContent = "{" + " \"out_trade_no\":\"" + outTradeNo + "\"," + " \"refund_amount\":" + refundAmount + ","
  138. + " \"refund_reason\":\"正常退款\"" + " }";
  139. AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
  140. request.setBizContent(bizContent);
  141. AlipayTradeRefundResponse response;
  142. try {
  143. response = AlipayClientFactory.getAlipayClientInstance().execute(request);
  144. if (response.isSuccess()) {
  145. System.out.println("调用成功");
  146. return true;
  147. } else {
  148. System.out.println("调用失败");
  149. }
  150. } catch (AlipayApiException e) {
  151. // TODO Auto-generated catch block
  152. e.printStackTrace();
  153. }
  154. return false;
  155. }
  156. }