PayController.java 6.6 KB

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