PayController.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package com.zanxiang.sdk.controller;
  2. import com.zanxiang.common.domain.ResultMap;
  3. import com.zanxiang.common.enums.HttpStatusEnum;
  4. import com.zanxiang.common.enums.PayWayEnum;
  5. import com.zanxiang.common.utils.IpUtils;
  6. import com.zanxiang.common.utils.StringUtils;
  7. import com.zanxiang.sdk.common.annotation.ValidLogin;
  8. import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
  9. import com.zanxiang.sdk.domain.bo.ProductPayParamBO;
  10. import com.zanxiang.sdk.domain.params.ProductPayParam;
  11. import com.zanxiang.sdk.domain.params.UserData;
  12. import com.zanxiang.sdk.service.Impl.pay.PayService;
  13. import com.zanxiang.sdk.service.PlatformOrderService;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.jdom.JDOMException;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.validation.annotation.Validated;
  20. import org.springframework.web.bind.annotation.*;
  21. import javax.annotation.Resource;
  22. import javax.servlet.http.HttpServletRequest;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.io.IOException;
  25. import java.math.BigDecimal;
  26. import java.util.Objects;
  27. /**
  28. * 支付公共入口
  29. *
  30. * @author xufeng
  31. * @date 2022/6/8 14:49
  32. */
  33. @Api(tags = "支付公共入口")
  34. @CrossOrigin
  35. @RestController
  36. @RequestMapping(value = "/pay")
  37. @Slf4j
  38. public class PayController {
  39. @Resource
  40. private PayService payService;
  41. @Autowired
  42. private PlatformOrderService platformOrderService;
  43. @ApiOperation(value = "支付参数生成")
  44. @PostMapping(value = "/create")
  45. public ResultMap create(@Validated @RequestBody ProductPayParam product, @ValidLogin UserData userData, HttpServletRequest request) {
  46. String userId = String.valueOf(userData.getUserId());
  47. // String userId = "1";
  48. String cpId = "1";
  49. if (StringUtils.isEmpty(product.getOrderId())) {
  50. //虚拟充值情况,直接传金额实时生成订单
  51. if (product.getAmount() == null || Objects.equals(product.getAmount(), BigDecimal.ZERO)) {
  52. return ResultMap.error(HttpStatusEnum.ORDER_AMOUNT_IS_NULL.getMsg());
  53. }
  54. if (StringUtils.isEmpty(product.getGameId())) {
  55. return ResultMap.error(HttpStatusEnum.ORDER_GAME_ID_IS_NULL.getMsg());
  56. }
  57. PlatformOrderBO orderBO = new PlatformOrderBO();
  58. orderBO.setAmount(product.getAmount());
  59. orderBO.setProductName(product.getAmount().toString());//"充值" +
  60. orderBO.setProductId("ptb_charge");
  61. orderBO.setMgUserId(product.getMgUserId());
  62. orderBO.setUserId(userId);
  63. orderBO.setGameId(Long.valueOf(product.getGameId()));
  64. orderBO.setCpId(cpId);
  65. String orderId = platformOrderService.create(orderBO);
  66. product.setOrderId(orderId);
  67. }
  68. ProductPayParamBO bo = new ProductPayParamBO();
  69. bo.setGameId(product.getGameId());
  70. bo.setUserId(userId);
  71. bo.setPayDevice(userData.getDeviceType());
  72. bo.setDeviceSystem(userData.getDeviceSystem());
  73. //todo : 工具类做了修改
  74. bo.setSpbillCreateIp(IpUtils.getRealIp(request));
  75. bo.setOutTradeNo(product.getOrderId());
  76. bo.setPayWay(product.getPayWay());
  77. return payService.payCreate(bo);
  78. }
  79. @ApiOperation(value = "支付宝支付异步回调(二维码、H5、网站)")
  80. @RequestMapping(value = "notify", method = RequestMethod.POST)
  81. public String alipayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException, JDOMException {
  82. log.info("支付宝支付异步回调 request:{},response:{}", request, response);
  83. return payService.notify(request, response, PayWayEnum.ALIPAY.getNum());
  84. }
  85. @ApiOperation(value = "微信支付")
  86. @RequestMapping(value = "wxPayNotify", method = RequestMethod.POST)
  87. public String wxPayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException, JDOMException {
  88. log.info("微信支付回调 request:{},response:{}", request, response);
  89. return payService.notify(request, response, PayWayEnum.WXPAY.getNum());
  90. }
  91. @ApiOperation(value = "支付宝支付同步回调(二维码、H5、网站)")
  92. @RequestMapping(value = "alipaySynNotify", method = RequestMethod.GET)
  93. public ResultMap synNotify(HttpServletRequest request) {
  94. log.info("支付宝回调 request:{}", request);
  95. return payService.synNotify(request, PayWayEnum.ALIPAY.getNum());
  96. }
  97. }