package com.nova.sankuai.controller.v2; import com.nova.sankuai.domain.api.shantai.*; import com.nova.sankuai.domain.vo.huifubao.HuiFuBaoPayVo; import com.nova.sankuai.infra.utils.ResultJson; import com.nova.sankuai.security.UserDetail; import com.nova.sankuai.service.IHuiFuBaoPayService; import com.nova.sankuai.service.IHuiFuBaoSignService; import com.nova.sankuai.service.IShanTaiService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.Map; @Api(tags = "闪态支付") @Slf4j @RestController @RequestMapping(value = "/api/v2/shanTai") @AllArgsConstructor public class ShanTaiPayController { private final IShanTaiService shanTaiService; private final IHuiFuBaoSignService huiFuBaoSignService; private final IHuiFuBaoPayService huiFuBaoPayService; private final HttpServletRequest request; @PostMapping(value = "/startAuth") @ApiOperation(value = "发起绑卡鉴权") public ResultJson startAuth(@RequestBody BindCardDto bindCardDto, @AuthenticationPrincipal UserDetail userDetail) { String result = shanTaiService.startAuth(bindCardDto, userDetail); return ResultJson.ok(result); } @GetMapping(value = "/auth") @ApiOperation(value = "确认短信鉴权") public ResultJson auth(String validateCode, String bankCardNo, @AuthenticationPrincipal UserDetail userDetail) { String result = shanTaiService.auth(validateCode, bankCardNo, userDetail); return ResultJson.ok(result); } @PostMapping(value = "/buyCardStartDirect") @ApiOperation(value = "直接通知扣费") public ResultJson buyCardStartDirect(@RequestBody ShanTaiPayDto shanTaiPayDto, @AuthenticationPrincipal UserDetail userDetail) { //此接口应该只能点一次,点一次后不能再次点击 ShanTaiPayInfo shanTaiPayInfo = shanTaiService.buyCardStartDirect(shanTaiPayDto, userDetail); return ResultJson.ok(shanTaiPayInfo); } @PostMapping(value = "/confirmBuy") @ApiOperation(value = "确认支付") public ResultJson confirmBuy(@RequestBody ShanTaiPaySureDto shanTaiPaySureDto, @AuthenticationPrincipal UserDetail userDetail) { // 闪态 // ConfirmVo confirmVo = shanTaiService.directConfirm(shanTaiPaySureDto, userDetail); HuiFuBaoPayVo vo = new HuiFuBaoPayVo(); vo.setHyAuthUid(shanTaiPaySureDto.getUniqueCode()); vo.setVerifyCode(shanTaiPaySureDto.getSmsCode()); vo.setAgentBillId(shanTaiPaySureDto.getPayOrderId()); return ResultJson.ok(huiFuBaoPayService.confirmPay(vo, userDetail)); } @PostMapping(value = "/callBack") @ApiOperation(value = "后端购买会员卡通知") public ResultJson callBack(@AuthenticationPrincipal UserDetail userDetail) { Map parameterMap = request.getParameterMap(); shanTaiService.callBack(parameterMap, userDetail); return ResultJson.success(); } @PostMapping(value = "/useEquityNotify") @ApiOperation(value = "使用会员通知") public ResultJson useEquityNotify(UseEquityNotifyParams params) { return ResultJson.ok(shanTaiService.useEquityNotify(params)); } @PostMapping(value = "/useEquityForward") @ApiOperation(value = "会员通知转发服务器") public ResultJson useEquityForward(String partnerThirdOrderId) { return ResultJson.ok(shanTaiService.useEquityForward(partnerThirdOrderId)); } @GetMapping(value = "/getOrderStatus") @ApiOperation(value = "闪态查询订单") public ResultJson getOrderStatus(String payOrderId) { // 原闪态查询 // GetOrderStatusVo orderStatus = shanTaiService.getOrderStatus(payOrderId); GetOrderStatusVo orderStatus = huiFuBaoPayService.getOrderStatus(payOrderId); return ResultJson.ok(orderStatus); } @PostMapping(value = "/checkProtocolSignBySt") @ApiOperation(value = "用户闪态快捷支付签约校验") public ResultJson checkProtocolSignBySt(HttpServletRequest request) { // 闪态 // ShanTaiCheckVo shanTaiCheckVo = shanTaiService.checkProtocolSignBySt(request); ShanTaiCheckVo shanTaiCheckVo = huiFuBaoSignService.checkProtocolSignBySt(request); return ResultJson.ok(shanTaiCheckVo); } }