PayController.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.zanxiang.sdk.controller;
  2. import com.zanxiang.common.domain.ResultMap;
  3. import com.zanxiang.common.domain.ResultVO;
  4. import com.zanxiang.common.enums.PayWayEnum;
  5. import com.zanxiang.common.utils.StringUtils;
  6. import com.zanxiang.sdk.annotation.UnSignCheck;
  7. import com.zanxiang.sdk.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.OrderPayService;
  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.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.validation.annotation.Validated;
  19. import org.springframework.web.bind.annotation.*;
  20. import javax.annotation.Resource;
  21. import javax.servlet.http.HttpServletRequest;
  22. import javax.servlet.http.HttpServletResponse;
  23. import java.io.IOException;
  24. /**
  25. * 支付公共入口
  26. *
  27. * @author xufeng
  28. * @date 2022/6/8 14:49
  29. */
  30. @Api(tags = "支付公共入口")
  31. @RestController
  32. @RequestMapping(value = "/api/pay")
  33. @Slf4j
  34. public class PayController {
  35. @Resource
  36. private OrderPayService orderPayService;
  37. @Autowired
  38. private PlatformOrderService platformOrderService;
  39. @ApiOperation(value = "支付参数生成")
  40. @PostMapping(value = "/create")
  41. public ResultMap create(@Validated @RequestBody ProductPayParam product, @ValidLogin UserData userData) {
  42. String userId = String.valueOf(userData.getUserId());
  43. String cpId = "1";
  44. if (StringUtils.isEmpty(product.getOrderId())) {
  45. PlatformOrderBO orderBO = new PlatformOrderBO();
  46. orderBO.setAmount(product.getAmount());
  47. orderBO.setProductName(product.getProductName());
  48. orderBO.setProductId(product.getProductId());
  49. orderBO.setMgUserId(userData.getUserId());
  50. orderBO.setUserId(userId);
  51. orderBO.setGameId(userData.getGameId());
  52. orderBO.setCpId(cpId);
  53. orderBO.setFromDevice(userData.getDeviceSystem());
  54. orderBO.setPayDevice(userData.getDeviceType().toString());
  55. String orderId = platformOrderService.create(orderBO);
  56. product.setOrderId(orderId);
  57. }
  58. ProductPayParamBO bo = new ProductPayParamBO();
  59. bo.setGameId(userData.getGameId().toString());
  60. bo.setUserId(userId);
  61. bo.setPayDevice(product.getPayDevice() == null ? userData.getDeviceType() : product.getPayDevice());
  62. bo.setDeviceSystem(userData.getDeviceSystem());
  63. bo.setSpbillCreateIp(userData.getIp());
  64. bo.setOutTradeNo(product.getOrderId());
  65. bo.setPayWay(product.getPayWay());
  66. bo.setCode(product.getCode());
  67. return orderPayService.payCreate(bo);
  68. }
  69. @UnSignCheck
  70. @ApiOperation(value = "支付宝支付异步回调(二维码、H5、网站)")
  71. @RequestMapping(value = "/notify", method = RequestMethod.POST)
  72. public String aliPayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
  73. return orderPayService.notify(request, response, PayWayEnum.ALIPAY.getNum());
  74. }
  75. @UnSignCheck
  76. @ApiOperation(value = "微信支付")
  77. @RequestMapping(value = "/wxPayNotify", method = RequestMethod.POST)
  78. public String wxPayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
  79. return orderPayService.notify(request, response, PayWayEnum.WXPAY.getNum());
  80. }
  81. @UnSignCheck
  82. @ApiOperation(value = "支付宝支付同步回调(二维码、H5、网站)")
  83. @RequestMapping(value = "/alipaySynNotify", method = RequestMethod.GET)
  84. public ResultMap synNotify(HttpServletRequest request) {
  85. return orderPayService.synNotify(request, PayWayEnum.ALIPAY.getNum());
  86. }
  87. @ApiOperation(value = "获取订单支付结果")
  88. @RequestMapping(value = "/get/result", method = RequestMethod.GET)
  89. public ResultVO<Boolean> getResult(String orderId) {
  90. return ResultVO.ok(orderPayService.payResult(orderId));
  91. }
  92. }