From bdf9983a1e03986e5304d1b87f1c6f80a5d908ed Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 17 Dec 2021 11:46:18 +0800 Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/xc-video --- src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java | 121 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 121 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java new file mode 100644 index 0000000..b87a934 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java @@ -0,0 +1,121 @@ +package cc.mrbird.febs.pay.service.impl; + +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.AppContants; +import cc.mrbird.febs.common.utils.LoginUserUtil; +import cc.mrbird.febs.common.utils.MallUtils; +import cc.mrbird.febs.pay.model.AliPayPassbackModel; +import cc.mrbird.febs.pay.properties.AliPayProperties; +import cc.mrbird.febs.pay.service.IPayService; +import cc.mrbird.febs.video.dto.VipBuyDto; +import cc.mrbird.febs.video.entity.DataDictionaryCustom; +import cc.mrbird.febs.video.entity.VideoMemberEntity; +import cc.mrbird.febs.video.entity.VideoVipOrderInfoEntity; +import cc.mrbird.febs.video.mapper.DataDictionaryCustomMapper; +import cc.mrbird.febs.video.mapper.VideoMemberMapper; +import cc.mrbird.febs.video.mapper.VideoVipOrderInfoMapper; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.domain.AlipayTradeAppPayModel; +import com.alipay.api.response.AlipayTradeAppPayResponse; +import com.ijpay.alipay.AliPayApi; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Date; +import java.util.Map; + +/** + * @author wzy + * @date 2021-09-27 + **/ +@Slf4j +@Service +public class PayServiceImpl implements IPayService { + + @Resource + private AliPayProperties aliPayProperties; + @Resource + private DataDictionaryCustomMapper dataDictionaryCustomMapper; + + @Resource + private VideoVipOrderInfoMapper videoVipOrderInfoMapper; + + @Resource + private VideoMemberMapper videoMemberMapper; + + @Value("${spring.profiles.active}") + private String active; + + @Override + @Transactional(rollbackFor = Exception.class) + public String aliPay(VipBuyDto vipBuyDto) { + VideoMemberEntity loginUser = LoginUserUtil.getLoginUser(); + + DataDictionaryCustom data = dataDictionaryCustomMapper.selectDataByTypeAndCode(AppContants.DIC_VIP_COST, vipBuyDto.getType()); + if (data == null) { + throw new FebsException("参数错误"); + } + + VideoVipOrderInfoEntity vipOrderInfo = new VideoVipOrderInfoEntity(); + vipOrderInfo.setOrderNo(MallUtils.getOrderNum()); + vipOrderInfo.setPayType(VideoVipOrderInfoEntity.PAY_TYPE_ALIPAY); + vipOrderInfo.setStatus(VideoVipOrderInfoEntity.PAY_STATUS_WAIT); + vipOrderInfo.setMemberId(loginUser.getId()); + vipOrderInfo.setGoodsType(vipBuyDto.getType()); + vipOrderInfo.setAmount(new BigDecimal(data.getValue())); + videoVipOrderInfoMapper.insert(vipOrderInfo); + + AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); + model.setSubject("会员支付"); + model.setBody(data.getDescription()); + model.setOutTradeNo(vipOrderInfo.getOrderNo()); + model.setTimeoutExpress("15m"); + + if ("dev".equals(active) || "test".equals(active)) { + model.setTotalAmount("0.01"); + } else { + model.setTotalAmount(vipOrderInfo.getAmount().toString()); + } + + AliPayPassbackModel passbackModel = new AliPayPassbackModel(); + passbackModel.setOrderId(vipOrderInfo.getId()); + passbackModel.setMemberId(vipOrderInfo.getMemberId()); + model.setPassbackParams(JSONObject.toJSONString(passbackModel)); + + model.setProductCode("QUICK_MSECURITY_PAY"); + AlipayTradeAppPayResponse resp = null; + try { + resp = AliPayApi.appPayToResponse(model, aliPayProperties.getNoticeUrl()); + } catch (AlipayApiException e) { + log.error("支付宝支付异常", e); + throw new FebsException("支付宝支付异常"); + } + return resp.getBody(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void aliCallback(Map<String, String> params) { + String modelStr = params.get("passback_params"); + + AliPayPassbackModel passback = JSONObject.parseObject(modelStr, AliPayPassbackModel.class); + + VideoVipOrderInfoEntity orderInfo = videoVipOrderInfoMapper.selectById(passback.getOrderId()); + if (orderInfo.getPayType() != 1) { + return; + } + + VideoMemberEntity member = videoMemberMapper.selectById(orderInfo.getMemberId()); + + orderInfo.setStatus(VideoVipOrderInfoEntity.PAY_STATUS_PAY); + orderInfo.setPayTime(new Date()); + orderInfo.setPayTraderNo(params.get("trade_no")); + videoVipOrderInfoMapper.updateById(orderInfo); + } +} -- Gitblit v1.9.1