PayController.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package com.fs.app.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.fs.common.config.FSSysConfig;
  4. import com.fs.common.core.controller.BaseController;
  5. import com.fs.common.core.redis.RedisCache;
  6. import com.fs.common.exception.CustomException;
  7. import com.fs.company.service.ICompanyService;
  8. import com.fs.company.service.ICompanyUserService;
  9. import com.fs.erp.service.IErpOrderService;
  10. import com.fs.huifuPay.domain.HuiFuResult;
  11. import com.fs.pay.pay.domain.OrderCallback;
  12. import com.fs.pay.pay.domain.OrderResult;
  13. import com.fs.pay.pay.dto.OrderQueryDTO;
  14. import com.fs.pay.pay.service.PayService;
  15. import com.fs.pay.pay.service.impl.PayApiServiceImpl;
  16. import com.fs.pay.pay.util.PayUtil;
  17. import com.fs.store.domain.*;
  18. import com.fs.store.enums.*;
  19. import com.fs.store.service.*;
  20. import com.fs.pay.service.dto.PayNotifyDTO;
  21. import com.fs.pay.service.dto.RefundNotifyDTO;
  22. import com.fs.pay.service.dto.TradeOrder;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import org.slf4j.Logger;
  26. import org.slf4j.LoggerFactory;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.context.ApplicationEventPublisher;
  29. import org.springframework.transaction.annotation.Transactional;
  30. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  31. import org.springframework.web.bind.annotation.*;
  32. import javax.servlet.http.HttpServletRequest;
  33. import java.math.BigDecimal;
  34. import java.util.Date;
  35. import java.util.List;
  36. import java.util.Map;
  37. @Api("第三方支付接口")
  38. @RestController
  39. @RequestMapping("/app/pay")
  40. public class PayController {
  41. protected final Logger logger = LoggerFactory.getLogger(BaseController.class);
  42. @Autowired
  43. private IFsStoreOrderService orderService;
  44. @Autowired
  45. IErpOrderService erpOrderService;
  46. @Autowired
  47. private IFsStorePaymentService storePaymentService;
  48. @Autowired
  49. PayService ybPayService;
  50. @ApiOperation("易宝第三方支付回调")
  51. @PostMapping(value="/ybPayNotify")
  52. public String ybPayNotify(@RequestBody Map<String, String> params, @RequestBody OrderCallback o) throws Exception {
  53. //验证
  54. String sign = PayUtil.sign(params);
  55. String sg = params.get("sign");
  56. if (!sg.equals(sign)){
  57. return "fail";
  58. }
  59. OrderQueryDTO orderQueryDTO = new OrderQueryDTO();
  60. orderQueryDTO.setLowOrderId(o.getLowOrderId());
  61. OrderResult orderResult = ybPayService.getOrder(orderQueryDTO);
  62. String[] order=o.getLowOrderId().split("-");
  63. switch (order[0]) {
  64. case "store":
  65. return orderService.payConfirm(1,null,order[1], o.getUpOrderId(),orderResult.getBankTrxId(),orderResult.getBankOrderId());
  66. case "store_remain":
  67. return orderService.payRemainConfirm( order[1], o.getUpOrderId(),orderResult.getBankTrxId(),orderResult.getBankOrderId());
  68. case "payment":
  69. return storePaymentService.payConfirm(order[1],o.getUpOrderId(),orderResult.getBankTrxId(),orderResult.getBankOrderId());
  70. }
  71. return "SUCCESS";
  72. }
  73. @ApiOperation("汇付第三方支付回调")
  74. @PostMapping(value="/hfPayNotify")
  75. public String hfPayNotify(@RequestParam String resp_desc, @RequestParam String resp_code, @RequestParam String sign, @RequestParam String resp_data) throws Exception {
  76. //验证
  77. HuiFuResult o = JSON.parseObject(resp_data, HuiFuResult.class);
  78. logger.info("汇付支付回调:"+o);
  79. if(o.getResp_code().equals("00000000")){
  80. String[] order=o.getReq_seq_id().split("-");
  81. switch (order[0]) {
  82. case "store":
  83. return orderService.payConfirm(1,null,order[1], o.getHf_seq_id(),o.getOut_trans_id(),o.getParty_order_id());
  84. case "store_remain":
  85. return orderService.payRemainConfirm( order[1], o.getHf_seq_id(),o.getOut_trans_id(),o.getParty_order_id());
  86. case "payment":
  87. return storePaymentService.payConfirm(order[1],o.getHf_seq_id(),o.getOut_trans_id(),o.getParty_order_id());
  88. }
  89. }
  90. return "ok";
  91. }
  92. @ApiOperation("小雨点第三方支付回调")
  93. @PostMapping(value="/payNotify")
  94. public String payNotify(HttpServletRequest request,PayNotifyDTO dto) throws Exception {
  95. if("SUCCESS".equals(dto.getOrderStatus())) {
  96. //订单号
  97. String tradeNo = dto.getMerchOrderNo();
  98. List<TradeOrder> tradeOrders= JSON.parseArray(dto.getTradeOrders(),TradeOrder.class);
  99. if(tradeOrders!=null&&tradeOrders.size()>0){
  100. for(TradeOrder tradeOrder:tradeOrders){
  101. String[] order=tradeOrder.getSubMerchOrderNo().split("-");
  102. switch (order[0]) {
  103. case "store":
  104. orderService.payConfirm(1,null,order[1], tradeNo,dto.getBankTransactionId(),dto.getBankSerialNo());
  105. return "success";
  106. case "store_remain":
  107. orderService.payRemainConfirm( order[1], tradeNo,dto.getBankTransactionId(),dto.getBankSerialNo());
  108. return "success";
  109. case "payment":
  110. return storePaymentService.payConfirm(order[1], tradeNo,dto.getBankTransactionId(),dto.getBankSerialNo());
  111. }
  112. }
  113. }
  114. }
  115. return "success";
  116. }
  117. @ApiOperation("小雨点第三方退款回调")
  118. @PostMapping(value="/refundNotify")
  119. public String refundNotify(HttpServletRequest request, RefundNotifyDTO dto) throws Exception {
  120. if("SUCCESS".equals(dto.getOrderStatus())) {
  121. String[] orderIds=dto.getOrigMerchOrderNo().split("-");
  122. FsStorePayment storePayment=null;
  123. switch (orderIds[0]) {
  124. case "store":
  125. storePayment=storePaymentService.selectFsStorePaymentByCode(orderIds[1]);
  126. if(storePayment!=null){
  127. storePayment.setRefundMoney(BigDecimal.valueOf(Double.parseDouble(dto.getAmount())));
  128. storePayment.setStatus(-1);
  129. storePayment.setRefundTime(new Date());
  130. storePaymentService.updateFsStorePayment(storePayment);
  131. }
  132. return "success";
  133. case "store_remain":
  134. storePayment=storePaymentService.selectFsStorePaymentByCode(orderIds[1]);
  135. if(storePayment!=null){
  136. storePayment.setRefundMoney(BigDecimal.valueOf(Double.parseDouble(dto.getAmount())));
  137. storePayment.setStatus(-1);
  138. storePayment.setRefundTime(new Date());
  139. storePaymentService.updateFsStorePayment(storePayment);
  140. }
  141. return "success";
  142. case "doctor":
  143. return "success";
  144. case "payment":
  145. storePaymentService.refund(orderIds[1]);
  146. return "success";
  147. }
  148. return "success";
  149. }
  150. return "success";
  151. }
  152. }