YJ
2021-05-17 52d926ef0abf4f4f857d74c156191e84303cb746
订单
2个文件已添加
3个文件已修改
192 ■■■■■ 已修改文件
facade-vip/src/main/java/com/ks/vip/service/VipOrederPayService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java 163 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-vip/src/main/java/com/ks/vip/util/PayUtil.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-vip/src/main/resources/alipay.properties 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-vip/src/main/resources/wxpay.properties 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-vip/src/main/java/com/ks/vip/service/VipOrederPayService.java
@@ -1,9 +1,25 @@
package com.ks.vip.service;
import com.ks.vip.pojo.DO.VipOrder;
import com.ks.vip.pojo.DTO.PayWayInfoDTO;
public interface VipOrederPayService {
    /**
     * 订单支付
     * @param order
     * @return
     */
    public PayWayInfoDTO payOrder(VipOrder order);
    /**
     * 检查订单支付状态
     * @param id
     * @return
     */
    public VipOrder checkOrderPayState(String id);
}
service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java
@@ -40,88 +40,97 @@
    private VipCenterService vipCenterService;
    @Transactional(rollbackFor = Exception.class)
    @Override
    public PayWayInfoDTO payOrder(OrderRecord record) throws OrderException, GoldCornException, PayException, VIPException, PPTVException, VideoBuyRecordException {
        String orderNo = VIPOrderUtil.getOutOrderNo(record.getOrderType(), record.getId());
        switch (record.getPayWay()) {
            case OrderRecord.PAY_WAY_ALIPAY_GOLDCORN:
                try {
                    goldCornManager.consumeGoldCorn(record, record.getGoldCorn());
                } catch (Exception e) {
                    throw new GoldCornException(1, "影视豆扣除出错");
                }
                paySuccess(record.getId(), OrderRecord.PAY_WAY_GOLDCORN, null, new Date());
    public PayWayInfoDTO payOrder(VipOrder order) {
        return null;
    }
                orderLogger.info("订单影视豆支付成功:id-{}", record.getId());
            case OrderRecord.PAY_WAY_ALIPAY: {
                if (record.getMoney() != null && record.getMoney().compareTo(new BigDecimal(0)) == 0) {
                    return new PayWayInfoDTO(0, VipUtil.getPaySuccessUrl(record.getId()));
                }
                //生成支付宝支付订单
                String form = VipUtil.getVipChargeAlipayForm(record.getId(), record.getOrderType(), orderNo, record.getMoney());
                //暂存2分钟
                String id = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis());
                redisManager.cacheCommonString(id, form, 120);
                String payUrl = Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + id;
                orderLogger.info("订单创建支付宝支付链接成功:id-{} 链接-{}", record.getId(), payUrl);
                return new PayWayInfoDTO(OrderRecord
                        .PAY_WAY_ALIPAY, payUrl);
            }
            case OrderRecord.PAY_WAY_WX_GOLDCORN:
                try {
                    goldCornManager.consumeGoldCorn(record, record.getGoldCorn());
                } catch (){
                }
        }
    @Override
    public VipOrder checkOrderPayState(String id) {
        return null;
    }
        @Transactional(rollbackFor = Exception.class)
        @Override
        public OrderRecord checkOrderPayState(String id) {
            OrderRecord record = vipOrderRecordDao.find(OrderRecord.class, id);
            if (record.getState() == OrderRecord.STATE_PAY)
                return record;
//    @Transactional(rollbackFor = Exception.class)
//    @Override
//    public PayWayInfoDTO payOrder(OrderRecord record) throws OrderException, GoldCornException, PayException, VIPException, PPTVException, VideoBuyRecordException {
//        String orderNo = VIPOrderUtil.getOutOrderNo(record.getOrderType(), record.getId());
//        switch (record.getPayWay()) {
//            case OrderRecord.PAY_WAY_ALIPAY_GOLDCORN:
//                try {
//                    goldCornManager.consumeGoldCorn(record, record.getGoldCorn());
//                } catch (Exception e) {
//                    throw new GoldCornException(1, "影视豆扣除出错");
//                }
//                paySuccess(record.getId(), OrderRecord.PAY_WAY_GOLDCORN, null, new Date());
//
//            case OrderRecord.PAY_WAY_ALIPAY: {
//                if (record.getMoney() != null && record.getMoney().compareTo(new BigDecimal(0)) == 0) {
//                    return new PayWayInfoDTO(0, VipUtil.getPaySuccessUrl(record.getId()));
//                }
//                //生成支付宝支付订单
//                String form = VipUtil.getVipChargeAlipayForm(record.getId(), record.getOrderType(), orderNo, record.getMoney());
//                //暂存2分钟
//                String id = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis());
//                redisManager.cacheCommonString(id, form, 120);
//                String payUrl = Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + id;
//                orderLogger.info("订单创建支付宝支付链接成功:id-{} 链接-{}", record.getId(), payUrl);
//                return new PayWayInfoDTO(OrderRecord
//                        .PAY_WAY_ALIPAY, payUrl);
//            }
//            case OrderRecord.PAY_WAY_WX_GOLDCORN:
//                try {
//                    goldCornManager.consumeGoldCorn(record, record.getGoldCorn());
//                } catch (){
//                }
//        }
            switch (record.getPayWay()) {
                case OrderRecord.PAY_WAY_ALIPAY_GOLDCORN:
                case OrderRecord.PAY_WAY_ALIPAY: {
                    //支付宝
                    AlipayTradeQueryResponse res = null;
                    try {
                        res = AlipayH5PayUtil.queryOrder(VipUtil.getAlipayApp(), VIPOrderUtil.getOutOrderNo(record.getOrderType(), id), null);
                        //支付成功
                        if (res.isSuccess() && "TRADE_SUCCESS".equalsIgnoreCase(res.getTradeStatus())) {
                            try {
                                return paySuccess(id, OrderRecord.PAY_WAY_ALIPAY, new BigDecimal(res.getTotalAmount()), new Date());
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    } catch (AlipayApiException e) {
                        e.printStackTrace();
                    }
                }
                break;
                case OrderRecord.PAY_WAY_WX_GOLDCORN:
                case OrderRecord.PAY_WAY_WX: {
                    //微信
                    try {
                        WXPayOrderInfoV3 info = WXPayV3Util.getPayOrderInfo(VIPOrderUtil.getOutOrderNo(record.getOrderType(), id), VipUtil.getWXAPP());
                        if (info != null && info.getTrade_state().equalsIgnoreCase("SUCCESS")) {
                            paySuccess(id, record.getPayWay(), new BigDecimal(info.getAmount().getPayer_total()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR), new Date());
                            return record;
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                break;
            }
            return record;
        }
//        @Transactional(rollbackFor = Exception.class)
//        @Override
//        public OrderRecord checkOrderPayState(String id) {
//            OrderRecord record = vipOrderRecordDao.find(OrderRecord.class, id);
//            if (record.getState() == OrderRecord.STATE_PAY)
//                return record;
//
//            switch (record.getPayWay()) {
//                case OrderRecord.PAY_WAY_ALIPAY_GOLDCORN:
//                case OrderRecord.PAY_WAY_ALIPAY: {
//                    //支付宝
//                    AlipayTradeQueryResponse res = null;
//                    try {
//                        res = AlipayH5PayUtil.queryOrder(VipUtil.getAlipayApp(), VIPOrderUtil.getOutOrderNo(record.getOrderType(), id), null);
//                        //支付成功
//                        if (res.isSuccess() && "TRADE_SUCCESS".equalsIgnoreCase(res.getTradeStatus())) {
//                            try {
//                                return paySuccess(id, OrderRecord.PAY_WAY_ALIPAY, new BigDecimal(res.getTotalAmount()), new Date());
//                            } catch (Exception e) {
//                                e.printStackTrace();
//                            }
//                        }
//                    } catch (AlipayApiException e) {
//                        e.printStackTrace();
//                    }
//                }
//
//                break;
//                case OrderRecord.PAY_WAY_WX_GOLDCORN:
//                case OrderRecord.PAY_WAY_WX: {
//                    //微信
//                    try {
//                        WXPayOrderInfoV3 info = WXPayV3Util.getPayOrderInfo(VIPOrderUtil.getOutOrderNo(record.getOrderType(), id), VipUtil.getWXAPP());
//                        if (info != null && info.getTrade_state().equalsIgnoreCase("SUCCESS")) {
//                            paySuccess(id, record.getPayWay(), new BigDecimal(info.getAmount().getPayer_total()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR), new Date());
//                            return record;
//                        }
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                }
//                break;
//            }
//            return record;
//
//        }
}
service-vip/src/main/java/com/ks/vip/util/PayUtil.java
@@ -71,12 +71,8 @@
     * @param money
     * @return
     */
    public static String getVipChargeAlipayForm(String id, OrderType orderType, String orderNo, BigDecimal money) {
    public static String getVipChargeAlipayForm(String id, String goodsTitle, String orderNo, BigDecimal money) {
        try {
            String goodsTitle = "影视大全会员充值";
            if (orderType == OrderType.video) {
                goodsTitle = "影视大全单片购买";
            }
            String returnUrl = getPaySuccessUrl(id);
            String notifyUrl = Constant.HOST + "/BuWan/alipay/pay";
            AlipayAppInfo appInfo = getAlipayApp();
service-vip/src/main/resources/alipay.properties
New file
@@ -0,0 +1,3 @@
app_id=1
private_key=1
alipay_public_key=1
service-vip/src/main/resources/wxpay.properties
New file
@@ -0,0 +1,4 @@
app_id=1
mch_id=1
mch_serial_no=1
api_v3_key=1