NotifyCallback.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. package com.ym.mec.biz.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.huifu.adapay.Adapay;
  5. import com.huifu.adapay.notify.MQTTCallbackHandler;
  6. import com.ym.mec.biz.dal.dao.HfMemberDao;
  7. import com.ym.mec.biz.dal.dao.SysConfigDao;
  8. import com.ym.mec.biz.dal.entity.HfMember;
  9. import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
  10. import com.ym.mec.biz.dal.entity.TenantPaymentOrder;
  11. import com.ym.mec.biz.dal.enums.DealStatusEnum;
  12. import com.ym.mec.thirdparty.adapay.ConfigInit;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.beans.factory.annotation.Value;
  15. import org.springframework.stereotype.Service;
  16. import javax.annotation.PostConstruct;
  17. import java.math.BigDecimal;
  18. import java.util.HashMap;
  19. import java.util.Map;
  20. @Service
  21. public class NotifyCallback implements MQTTCallbackHandler {
  22. @Autowired
  23. private StudentPaymentOrderService studentPaymentOrderService;
  24. @Autowired
  25. private TenantPaymentOrderService tenantPaymentOrderService;
  26. @Autowired
  27. private HfMemberDao hfMemberDao;
  28. private static NotifyCallback notifyCallback;
  29. @Value("${spring.profiles.active:dev}")
  30. private String profiles;
  31. @Value("${spring.application.name}")
  32. private String appName;
  33. @PostConstruct
  34. public void init() {
  35. notifyCallback = this;
  36. if (!profiles.equals("prod") && !appName.equals("student-server")) {
  37. Adapay.debug = true;
  38. // prodMode 模式,默认为生产模式,false可以使用mock模式
  39. Adapay.prodMode = false;
  40. }
  41. Adapay.setDeviceID(appName);
  42. }
  43. /**
  44. * 用户接收并处理支付成功的异步消息
  45. *
  46. * @param payment 成功的支付对象
  47. * @throws Exception 异常
  48. */
  49. @Override
  50. public void paymentSuccessMessageArrived(String payment) throws Exception {
  51. System.out.println(String.format("receive paymentSuccess msg=%s", payment));
  52. JSONObject dataObj = JSON.parseObject(payment);
  53. if (!dataObj.getString("app_id").equals(ConfigInit.appId)) {
  54. return;
  55. }
  56. String orderNo = dataObj.getString("order_no");
  57. StudentPaymentOrder studentPaymentOrder = notifyCallback.studentPaymentOrderService.findOrderByOrderNo(orderNo);
  58. if (studentPaymentOrder != null) {
  59. Map<String, String> notifyMap = new HashMap<>();
  60. notifyMap.put("channelType", dataObj.getString("pay_channel"));
  61. notifyMap.put("tradeState", "1");
  62. notifyMap.put("totalMoney", dataObj.getString("pay_amt"));
  63. notifyMap.put("merOrderNo", dataObj.getString("order_no"));
  64. notifyCallback.studentPaymentOrderService.updateOrder(notifyMap);
  65. return;
  66. }
  67. TenantPaymentOrder tenantPaymentOrder = notifyCallback.tenantPaymentOrderService.queryByOrderNo(orderNo);
  68. if (tenantPaymentOrder != null) {
  69. tenantPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
  70. tenantPaymentOrder.setPaymentBusinessChannel(dataObj.getString("pay_channel"));
  71. tenantPaymentOrder.setActualAmount(new BigDecimal(dataObj.getString("pay_amt")));
  72. notifyCallback.tenantPaymentOrderService.paymentForCallback(tenantPaymentOrder);
  73. }
  74. }
  75. /**
  76. * 用户接收并处理支付失败的异步消息
  77. *
  78. * @param payment 失败的支付对象
  79. * @throws Exception 异常
  80. */
  81. @Override
  82. public void paymentFailedMessageArrived(String payment) throws Exception {
  83. System.out.println(String.format("receive paymentFailed msg=%s", payment));
  84. JSONObject dataObj = JSON.parseObject(payment);
  85. if (!dataObj.getString("app_id").equals(ConfigInit.appId)) {
  86. return;
  87. }
  88. String orderNo = dataObj.getString("order_no");
  89. StudentPaymentOrder studentPaymentOrder = notifyCallback.studentPaymentOrderService.findOrderByOrderNo(orderNo);
  90. if (studentPaymentOrder != null) {
  91. Map<String, String> notifyMap = new HashMap<>();
  92. notifyMap.put("channelType", dataObj.getString("pay_channel"));
  93. notifyMap.put("tradeState", "0");
  94. notifyMap.put("totalMoney", dataObj.getString("pay_amt"));
  95. notifyMap.put("merOrderNo", dataObj.getString("order_no"));
  96. notifyMap.put("remarks", dataObj.getString("error_msg"));
  97. notifyCallback.studentPaymentOrderService.updateOrder(notifyMap);
  98. return;
  99. }
  100. TenantPaymentOrder tenantPaymentOrder = notifyCallback.tenantPaymentOrderService.queryByOrderNo(orderNo);
  101. if (tenantPaymentOrder != null) {
  102. tenantPaymentOrder.setStatus(DealStatusEnum.FAILED);
  103. tenantPaymentOrder.setPaymentBusinessChannel(dataObj.getString("pay_channel"));
  104. notifyCallback.tenantPaymentOrderService.paymentForCallback(tenantPaymentOrder);
  105. }
  106. }
  107. /**
  108. * 用户接收并处理关闭支付交易成功的异步消息
  109. *
  110. * @param payment 关闭成功的支付对象
  111. * @throws Exception 异常
  112. */
  113. @Override
  114. public void paymentCloseSuccessMessageArrived(String payment) throws Exception {
  115. System.out.println(String.format("receive paymentCloseSuccess msg=%s", payment));
  116. JSONObject dataObj = JSON.parseObject(payment);
  117. if (!dataObj.getString("app_id").equals(ConfigInit.appId)) {
  118. return;
  119. }
  120. String orderNo = dataObj.getString("order_no");
  121. StudentPaymentOrder studentPaymentOrder = notifyCallback.studentPaymentOrderService.findOrderByOrderNo(orderNo);
  122. if (studentPaymentOrder != null) {
  123. Map<String, String> notifyMap = new HashMap<>();
  124. notifyMap.put("channelType", dataObj.getString("pay_channel"));
  125. notifyMap.put("tradeState", "0");
  126. notifyMap.put("totalMoney", dataObj.getString("pay_amt"));
  127. notifyMap.put("merOrderNo", dataObj.getString("order_no"));
  128. notifyMap.put("remarks", dataObj.getString("error_msg"));
  129. notifyCallback.studentPaymentOrderService.updateOrder(notifyMap);
  130. return;
  131. }
  132. TenantPaymentOrder tenantPaymentOrder = notifyCallback.tenantPaymentOrderService.queryByOrderNo(orderNo);
  133. if (tenantPaymentOrder != null) {
  134. tenantPaymentOrder.setStatus(DealStatusEnum.FAILED);
  135. tenantPaymentOrder.setPaymentBusinessChannel(dataObj.getString("pay_channel"));
  136. tenantPaymentOrderService.paymentForCallback(tenantPaymentOrder);
  137. }
  138. }
  139. /**
  140. * 用户接收并处理关闭支付交易失败的异步消息
  141. *
  142. * @param payment 关闭失败的支付对象
  143. * @throws Exception 异常
  144. */
  145. @Override
  146. public void paymentCloseFailedMessageArrived(String payment) throws Exception {
  147. System.out.println(String.format("receive paymentCloseFailed msg=%s", payment));
  148. }
  149. @Override
  150. public void paymentReverseFailedMessageArrived(String payment) throws Exception {
  151. System.out.println(String.format("receive payment ReverseFailed msg=%s", payment));
  152. }
  153. @Override
  154. public void paymentReverseSuccessMessageArrived(String payment) throws Exception {
  155. System.out.println(String.format("receive payment ReverseSuccess msg=%s", payment));
  156. }
  157. /**
  158. * 用户接收并处理退款成功的异步消息
  159. *
  160. * @param refund 成功的退款对象
  161. * @throws Exception 异常
  162. */
  163. @Override
  164. public void refundSuccessMessageArrived(String refund) throws Exception {
  165. System.out.println(String.format("receive refundSuccess msg=%s", refund));
  166. }
  167. /**
  168. * 用户接收并处理退款失败的异步消息
  169. *
  170. * @param refund 失败的退款对象
  171. * @throws Exception 异常
  172. */
  173. @Override
  174. public void refundFailedMessageArrived(String refund) throws Exception {
  175. System.out.println(String.format("receive refundFailed msg=%s", refund));
  176. }
  177. @Override
  178. public void corpMemberSuccessMessageArrived(String corpMember) throws Exception {
  179. System.out.println(String.format("receive corpMember msg=%s", corpMember));
  180. JSONObject corpMemberObj = JSON.parseObject(corpMember);
  181. if (!corpMemberObj.getString("app_id").equals(ConfigInit.appId)) {
  182. return;
  183. }
  184. String memberId = corpMemberObj.getString("member_id");
  185. HfMember hfMember = notifyCallback.hfMemberDao.getByMemberId(memberId);
  186. if (hfMember == null || !hfMember.getStatus().equals("pending")) {
  187. return;
  188. }
  189. hfMember.setStatus("succeeded");
  190. hfMember.setMemo(corpMemberObj.getString("audit_desc"));
  191. if (corpMemberObj.containsKey("audit_state") && corpMemberObj.getString("audit_state").equals("E")) {
  192. JSONObject accounts = JSON.parseObject(corpMemberObj.get("settle_accounts").toString());
  193. hfMember.setSettleAccountId(accounts.getString("id"));
  194. }
  195. notifyCallback.hfMemberDao.update(hfMember);
  196. }
  197. @Override
  198. public void corpMemberFailedMessageArrived(String corpMember) throws Exception {
  199. System.out.println(String.format("receive corpMember msg=%s", corpMember));
  200. JSONObject corpMemberObj = JSON.parseObject(corpMember);
  201. if (!corpMemberObj.getString("app_id").equals(ConfigInit.appId)) {
  202. return;
  203. }
  204. String memberId = corpMemberObj.getString("member_id");
  205. HfMember hfMember = notifyCallback.hfMemberDao.getByMemberId(memberId);
  206. if (hfMember == null || !hfMember.getStatus().equals("pending")) {
  207. return;
  208. }
  209. hfMember.setStatus("failed");
  210. hfMember.setMemo(corpMemberObj.getString("audit_desc"));
  211. notifyCallback.hfMemberDao.update(hfMember);
  212. }
  213. @Override
  214. public void unknowMessageArrived(String message) throws Exception {
  215. System.out.println(String.format("receive unknow msg=%s", message));
  216. }
  217. @Override
  218. public void drawCashFailedMessageArrived(String drawCash) throws Exception {
  219. System.out.println(String.format("receive unknow msg=%s", drawCash));
  220. }
  221. @Override
  222. public void drawCashSuccessedMessageArrived(String drawCash) throws Exception {
  223. System.out.println(String.format("receive unknow msg=%s", drawCash));
  224. }
  225. @Override
  226. public void pagePaymentFailedMessageArrived(String arg0) throws Exception {
  227. // TODO Auto-generated method stub
  228. }
  229. @Override
  230. public void pagePaymentSuccessedMessageArrived(String arg0) throws Exception {
  231. // TODO Auto-generated method stub
  232. }
  233. @Override
  234. public void connectionLost(String message) throws Exception {
  235. // TODO Auto-generated method stub
  236. System.out.println("mqtt...........lost.............");
  237. }
  238. @Override
  239. public void connectSuccess() throws Exception {
  240. System.out.println("mqtt...........connect.............");
  241. }
  242. }