From cf7a6d979229a1dbeca693429f6d539d5d254f95 Mon Sep 17 00:00:00 2001 From: YJ <YJ> Date: 星期二, 18 五月 2021 13:52:55 +0800 Subject: [PATCH] vip订单 --- service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java | 233 ++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 161 insertions(+), 72 deletions(-) diff --git a/service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java b/service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java index 872e011..ad7fcda 100644 --- a/service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java +++ b/service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java @@ -7,12 +7,15 @@ import com.ks.vip.pojo.DTO.PayWayInfoDTO; import com.ks.vip.pojo.DTO.VipOrderDTO; import com.ks.vip.pojo.Enums.OrderTypeEnum; +import com.ks.vip.pojo.Enums.PayWayEnum; import com.ks.vip.query.VipOrderQuery; import com.ks.vip.service.VipCenterService; import com.ks.vip.service.VipComboService; import com.ks.vip.service.VipOrederPayService; import com.ks.vip.service.VipOrederService; +import com.ks.vip.service.manager.RedisManager; import com.ks.vip.util.Constant; +import com.ks.vip.util.PayUtil; import org.apache.dubbo.config.annotation.Service; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.StringUtil; @@ -39,89 +42,175 @@ @Resource private VipCenterService vipCenterService; + @Resource + private RedisManager redisManager; - - @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()); - - 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()); + @Transactional(rollbackFor = Exception.class) + public PayWayInfoDTO payOrder(VipOrder order) { + String title = Constant.ORDER_PAY_TITLE; + String orderId = order.getId() + ""; + switch (order.getPayWay()) { + case "alipay": + String formAlipay = PayUtil.getVipChargeAlipayForm(orderId, title, orderId, order.getPayMoney()); //鏆傚瓨2鍒嗛挓 String id = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis()); - redisManager.cacheCommonString(id, form, 120); + redisManager.cacheCommonString(id, formAlipay, 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 (){ + return new PayWayInfoDTO(PayWayEnum.alipay.getWay(), payUrl); + case "weChat": + try{ + String formWX = PayUtil.createWXOrder(orderId, null, orderId,order.getPayMoney() ,title); + //鏆傚瓨2鍒嗛挓 + String idwx = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis()); + redisManager.cacheCommonString(idwx, formWX, 120); + String payUrlwx = Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + idwx; + return new PayWayInfoDTO(PayWayEnum.weChat.getWay(), payUrlwx); + } catch (Exception e) { + } + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public VipOrder checkOrderPayState(Long id) { + VipOrder vipOrder = vipOrderMapper.selectByPrimaryKey(id); + if (vipOrder == null || vipOrder.getState() == VipOrder.STATE_PAY) { + return vipOrder; } - @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(); - } - } +// 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; +// } - 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; - } + + return null; + } + + +// @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 (){ +// } +// } + + + +// @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; +// +// } } -- Gitblit v1.8.0