package com.nova.sankuai.controller.v2; import com.nova.sankuai.domain.api.baofu.BaofuCheckVo; import com.nova.sankuai.domain.api.baofu.BaofuRecordPayInfo; import com.nova.sankuai.domain.api.baofu.RecordDto; import com.nova.sankuai.domain.api.shantai.ConfirmVo; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.utils.ResultJson; import com.nova.sankuai.security.UserDetail; import com.nova.sankuai.service.IBaofuService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @Api(tags = "宝付支付") @RestController @RequestMapping(value = "/api/v2/pay/bf") @AllArgsConstructor public class BaofuPayV2Controller { private final IBaofuService baofuService; @PostMapping(value = "/startAuth") @ApiOperation(value = "发起预绑卡") public ResultJson startAuth(@RequestBody RecordDto recordDto, @AuthenticationPrincipal UserDetail userDetail) { BaofuRecordPayInfo recordPayInfo = baofuService.startAuth(recordDto, userDetail); if (recordPayInfo.getError() != null) { throw new CommonException(recordPayInfo.getError()); } return ResultJson.ok(recordPayInfo); } @PostMapping(value = "/checkProtocolSignByBf") @ApiOperation(value = "用户宝付快捷支付签约校验") public ResultJson checkProtocolSignByBf(HttpServletRequest request) { BaofuCheckVo baofuCheckVo = baofuService.checkProtocolSignByBf(request); return ResultJson.ok(baofuCheckVo); } /** * 注:确认绑卡只需传唯一码uniqueCode和收到的短信码validateCode */ @PostMapping(value = "/auth") @ApiOperation(value = "确认绑卡") public ResultJson auth(@RequestBody RecordDto recordDto, @AuthenticationPrincipal UserDetail userDetail) { BaofuRecordPayInfo recordPayInfo = baofuService.auth(recordDto, userDetail); if (recordPayInfo.getError() != null) { throw new CommonException(recordPayInfo.getError()); } return ResultJson.ok(recordPayInfo); } @PostMapping(value = "/confirmPay") @ApiOperation(value = "确认支付") public ResultJson confirmPay(@RequestBody RecordDto recordDto, @AuthenticationPrincipal UserDetail userDetail) { BaofuRecordPayInfo recordPayInfo = baofuService.confirmPay(recordDto, userDetail); if (recordPayInfo.getError() != null) { throw new CommonException(recordPayInfo.getError()); } ConfirmVo vo = new ConfirmVo(); vo.setResult(true); return ResultJson.ok(vo); } }