BipiPayController.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.crm.pay.controller.pay;
  2. import com.crm.pay.controller.base.BasePayCloseFunctionController;
  3. import com.crm.pay.entity.callback.BipiCallbackEntity;
  4. import com.crm.pay.service.BipiPayService;
  5. import com.crm.rely.backend.model.constant.PayConstants;
  6. import com.crm.rely.backend.core.dto.base.BaseResultDto;
  7. import com.crm.pay.dto.PayDto;
  8. import com.crm.rely.backend.model.entity.custom.info.CustomInfoEntity;
  9. import com.crm.rely.backend.model.entity.finance.deposit.FinanceDepositAddEntity;
  10. import com.crm.pay.entity.FinanceDepositParameterEntity;
  11. import com.crm.rely.backend.core.exception.PayValidatedException;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.web.bind.annotation.*;
  14. import javax.servlet.http.HttpServletRequest;
  15. import javax.servlet.http.HttpServletResponse;
  16. import java.io.IOException;
  17. import java.math.BigDecimal;
  18. /**
  19. * @description:
  20. * @author: houn
  21. * @create: 2021-12-26 14:58
  22. */
  23. @RestController
  24. @RequestMapping("/bipi")
  25. public class BipiPayController extends BasePayCloseFunctionController {
  26. @Autowired
  27. private BipiPayService service;
  28. /**
  29. * 支付
  30. *
  31. * @param login 入金账号
  32. * @param amount 入金金额
  33. * @return 错误信息
  34. * @throws Exception
  35. */
  36. @RequestMapping("/pay/{login}/{amount}")
  37. public BaseResultDto pay(@PathVariable("login") Long login,
  38. @PathVariable("amount") BigDecimal amount,
  39. @RequestBody FinanceDepositParameterEntity entity,
  40. CustomInfoEntity infoEntity, HttpServletRequest request) throws Exception {
  41. return payCall(login, amount, 0, entity, infoEntity, request);
  42. }
  43. @RequestMapping("/pay/{login}/{amount}/{activity}")
  44. public BaseResultDto pay(@PathVariable("login") Long login,
  45. @PathVariable("amount") BigDecimal amount,
  46. @PathVariable("activity") int activity,
  47. @RequestBody FinanceDepositParameterEntity entity,
  48. CustomInfoEntity infoEntity, HttpServletRequest request) throws Exception {
  49. return payCall(login, amount, activity, entity, infoEntity, request);
  50. }
  51. private BaseResultDto payCall(Long login,
  52. BigDecimal amount,
  53. int activity,
  54. FinanceDepositParameterEntity entity,
  55. CustomInfoEntity infoEntity, HttpServletRequest request) throws Exception {
  56. validated(login, amount);
  57. FinanceDepositAddEntity financeDepositSaveEntity = getFinanceDepositSaveEntity(login, amount,
  58. PayConstants.BIPI_PAY_TYPE_KEY,
  59. PayConstants.BIPI_PAY_TYPE_KEY, activity, entity, request);
  60. String url = service.pay(financeDepositSaveEntity);
  61. PayDto payDto = new PayDto(1, url);
  62. return BaseResultDto.success(payDto);
  63. }
  64. /**
  65. * 异步回调
  66. *
  67. * @param callbackEntity 用于获取回调数据
  68. * @return 返回成功给第三方系统
  69. * @throws Exception
  70. */
  71. @RequestMapping("/callback")
  72. public void callback(BipiCallbackEntity callbackEntity,
  73. HttpServletResponse response) throws Exception {
  74. service.callback(callbackEntity);
  75. sendRedirect(response);
  76. }
  77. /**
  78. * 同步页面 成功
  79. *
  80. * @param response 用于重定向页面
  81. * @throws IOException
  82. */
  83. @GetMapping(value = "/pickup")
  84. public void pickup(HttpServletResponse response) throws Exception, PayValidatedException {
  85. sendRedirect(response);
  86. }
  87. @GetMapping(value = "/error")
  88. public void error(HttpServletResponse response) throws Exception {
  89. sendRedirect(response);
  90. }
  91. }