WXPay.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package com.tencent;
  2. import com.tencent.business.DownloadBillBusiness;
  3. import com.tencent.business.RefundBusiness;
  4. import com.tencent.business.RefundQueryBusiness;
  5. import com.tencent.business.ScanPayBusiness;
  6. import com.tencent.common.Configure;
  7. import com.tencent.protocol.downloadbill_protocol.DownloadBillReqData;
  8. import com.tencent.protocol.pay_protocol.ScanPayReqData;
  9. import com.tencent.protocol.pay_protocol.UnifiedOrderReqData;
  10. import com.tencent.protocol.pay_query_protocol.ScanPayQueryReqData;
  11. import com.tencent.protocol.refund_protocol.RefundReqData;
  12. import com.tencent.protocol.refund_query_protocol.RefundQueryReqData;
  13. import com.tencent.protocol.reverse_protocol.ReverseReqData;
  14. import com.tencent.service.*;
  15. /**
  16. * SDK总入口
  17. */
  18. public class WXPay {
  19. /**
  20. * 初始化SDK依赖的几个关键配置
  21. * @param key 签名算法需要用到的秘钥
  22. * @param appID 公众账号ID
  23. * @param mchID 商户ID
  24. * @param sdbMchID 子商户ID,受理模式必填
  25. * @param certLocalPath HTTP证书在服务器中的路径,用来加载证书用
  26. * @param certPassword HTTP证书的密码,默认等于MCHID
  27. */
  28. public static void initSDKConfiguration(String key,String appID,String mchID,String sdbMchID,String certLocalPath,String certPassword){
  29. Configure.setKey(key);
  30. Configure.setAppID(appID);
  31. Configure.setMchID(mchID);
  32. // Configure.setSubMchID(sdbMchID);
  33. // Configure.setCertLocalPath(certLocalPath);
  34. // Configure.setCertPassword(certPassword);
  35. }
  36. /**
  37. * 请求统一下单
  38. * @param unifiedOrderReqData 这个数据对象里面包含了API要求提交的各种数据字段
  39. * @return API返回的数据
  40. * @throws Exception
  41. */
  42. public static String requestUnifiedOrderService(UnifiedOrderReqData unifiedOrderReqData) throws Exception{
  43. return new UnifiedOrderService().request(unifiedOrderReqData);
  44. }
  45. /**
  46. * 请求支付服务
  47. * @param scanPayReqData 这个数据对象里面包含了API要求提交的各种数据字段
  48. * @return API返回的数据
  49. * @throws Exception
  50. */
  51. public static String requestScanPayService(ScanPayReqData scanPayReqData) throws Exception{
  52. return new ScanPayService().request(scanPayReqData);
  53. }
  54. /**
  55. * 请求支付查询服务
  56. * @param scanPayQueryReqData 这个数据对象里面包含了API要求提交的各种数据字段
  57. * @return API返回的XML数据
  58. * @throws Exception
  59. */
  60. public static String requestScanPayQueryService(ScanPayQueryReqData scanPayQueryReqData) throws Exception{
  61. return new ScanPayQueryService().request(scanPayQueryReqData);
  62. }
  63. /**
  64. * 请求退款服务
  65. * @param refundReqData 这个数据对象里面包含了API要求提交的各种数据字段
  66. * @return API返回的XML数据
  67. * @throws Exception
  68. */
  69. public static String requestRefundService(RefundReqData refundReqData) throws Exception{
  70. return new RefundService().request(refundReqData);
  71. }
  72. /**
  73. * 请求退款查询服务
  74. * @param refundQueryReqData 这个数据对象里面包含了API要求提交的各种数据字段
  75. * @return API返回的XML数据
  76. * @throws Exception
  77. */
  78. public static String requestRefundQueryService(RefundQueryReqData refundQueryReqData) throws Exception{
  79. return new RefundQueryService().request(refundQueryReqData);
  80. }
  81. /**
  82. * 请求撤销服务
  83. * @param reverseReqData 这个数据对象里面包含了API要求提交的各种数据字段
  84. * @return API返回的XML数据
  85. * @throws Exception
  86. */
  87. public static String requestReverseService(ReverseReqData reverseReqData) throws Exception{
  88. return new ReverseService().request(reverseReqData);
  89. }
  90. /**
  91. * 请求对账单下载服务
  92. * @param downloadBillReqData 这个数据对象里面包含了API要求提交的各种数据字段
  93. * @return API返回的XML数据
  94. * @throws Exception
  95. */
  96. public static String requestDownloadBillService(DownloadBillReqData downloadBillReqData) throws Exception{
  97. return new DownloadBillService().request(downloadBillReqData);
  98. }
  99. /**
  100. * 直接执行被扫支付业务逻辑(包含最佳实践流程)
  101. * @param scanPayReqData 这个数据对象里面包含了API要求提交的各种数据字段
  102. * @param resultListener 商户需要自己监听被扫支付业务逻辑可能触发的各种分支事件,并做好合理的响应处理
  103. * @throws Exception
  104. */
  105. public static void doScanPayBusiness(ScanPayReqData scanPayReqData, ScanPayBusiness.ResultListener resultListener) throws Exception {
  106. new ScanPayBusiness().run(scanPayReqData, resultListener);
  107. }
  108. /**
  109. * 调用退款业务逻辑
  110. * @param refundReqData 这个数据对象里面包含了API要求提交的各种数据字段
  111. * @param resultListener 业务逻辑可能走到的结果分支,需要商户处理
  112. * @throws Exception
  113. */
  114. public static void doRefundBusiness(RefundReqData refundReqData, RefundBusiness.ResultListener resultListener) throws Exception {
  115. new RefundBusiness().run(refundReqData,resultListener);
  116. }
  117. /**
  118. * 运行退款查询的业务逻辑
  119. * @param refundQueryReqData 这个数据对象里面包含了API要求提交的各种数据字段
  120. * @param resultListener 商户需要自己监听被扫支付业务逻辑可能触发的各种分支事件,并做好合理的响应处理
  121. * @throws Exception
  122. */
  123. public static void doRefundQueryBusiness(RefundQueryReqData refundQueryReqData,RefundQueryBusiness.ResultListener resultListener) throws Exception {
  124. new RefundQueryBusiness().run(refundQueryReqData,resultListener);
  125. }
  126. /**
  127. * 请求对账单下载服务
  128. * @param downloadBillReqData 这个数据对象里面包含了API要求提交的各种数据字段
  129. * @param resultListener 商户需要自己监听被扫支付业务逻辑可能触发的各种分支事件,并做好合理的响应处理
  130. * @return API返回的XML数据
  131. * @throws Exception
  132. */
  133. public static void doDownloadBillBusiness(DownloadBillReqData downloadBillReqData,DownloadBillBusiness.ResultListener resultListener) throws Exception {
  134. new DownloadBillBusiness().run(downloadBillReqData,resultListener);
  135. }
  136. }