From 4cdf9b0fdce6d2d7b4ca79055816661b88ac4d5c Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 02 六月 2021 18:56:01 +0800 Subject: [PATCH] 订单支付修改 --- service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java | 52 ++++++++++++++++++++++++++++++---------------------- 1 files changed, 30 insertions(+), 22 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 2dee4f3..0f61df1 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 @@ -2,6 +2,7 @@ import com.alipay.api.AlipayApiException; import com.alipay.api.response.AlipayTradeQueryResponse; +import com.ks.vip.exception.OrderPayException; import com.ks.vip.exception.VipOrderException; import com.ks.vip.mapper.VipOrderMapper; import com.ks.vip.pojo.DO.VipCombo; @@ -45,7 +46,7 @@ @Override @Transactional(rollbackFor = Exception.class) - public PayWayInfoDTO addOrderByBuy(VipOrderDTO t) throws VipOrderException { + public PayWayInfoDTO addOrderWithPay(VipOrderDTO t, String notifyUrl, String returnUrl) throws VipOrderException { if (t.getComboId() == null || t.getComboId() <= 0) { throw new VipOrderException(1, "濂楅ID涓嶈兘涓虹┖"); } @@ -83,43 +84,48 @@ vipOrderMapper.insertSelective(newOrder); // 鏀粯鏂瑰紡 - return payOrder(newOrder); + try { + return payOrder(newOrder, notifyUrl, returnUrl); + } catch (OrderPayException e) { + e.printStackTrace(); + throw new VipOrderException(VipOrderException.CODE_CREATE_PAY_ORDER_FAIL, e.getMsg()); + } } @Override @Transactional(rollbackFor = Exception.class) - public PayWayInfoDTO payOrder(VipOrder order) { + public PayWayInfoDTO payOrder(VipOrder order, String notifyUrl, String returnUrl) throws OrderPayException { + if (order.getState() == VipOrder.STATE_PAY) { + throw new OrderPayException(OrderPayException.CODE_ALREADY_PAY, "宸茬粡瀹屾垚鏀粯"); + } String goodsTitle = Constant.ORDER_PAY_TITLE; String orderId = order.getId() + ""; switch (order.getPayWay()) { - case "alipay": //鐢熸垚鏀粯瀹濇敮浠樿鍗� - if (order.getState() == VipOrder.STATE_PAY) { - return new PayWayInfoDTO(PayWayEnum.alipay.getWay(), PayUtil.getPaySuccessUrl(orderId)); + //鐢熸垚鏀粯瀹濇敮浠樿鍗� + case "alipay": + String form = PayUtil.getVipChargeAlipayForm(orderId, goodsTitle, orderId, order.getPayMoney(), notifyUrl, returnUrl); + if (StringUtil.isNullOrEmpty(form)) { + throw new OrderPayException(OrderPayException.CODE_CREATE_PAY_ORDER_FAIL, "鍒涘缓鏀粯瀹濇敮浠樿鍗曞け璐�"); } - String form = PayUtil.getVipChargeAlipayForm(orderId, goodsTitle, orderId, order.getPayMoney()); //鏆傚瓨2鍒嗛挓 String id = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis()); redisManager.cacheCommonString(id, form, 120); - String payUrl = Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + id; - return new PayWayInfoDTO(PayWayEnum.alipay.getWay(), payUrl); + return new PayWayInfoDTO(PayWayEnum.alipay.getWay(), null, id); case "weChat": try { - if (order.getState() == VipOrder.STATE_PAY) { - return new PayWayInfoDTO(PayWayEnum.weChat.getWay(), PayUtil.getPaySuccessUrl(orderId)); - } - - String formWX = PayUtil.createWXOrder(orderId, null, orderId, order.getPayMoney(), goodsTitle); - //鏆傚瓨2鍒嗛挓 - String idWX = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis()); - redisManager.cacheCommonString(formWX, formWX, 120); - String payUrlWX = Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + idWX; - return new PayWayInfoDTO(PayWayEnum.weChat.getWay(), payUrlWX); + String payUrl = PayUtil.createWXOrder(null, orderId, order.getPayMoney(), goodsTitle, notifyUrl, returnUrl); + return new PayWayInfoDTO(PayWayEnum.weChat.getWay(), payUrl, null); } catch (Exception e) { - + throw new OrderPayException(OrderPayException.CODE_CREATE_PAY_ORDER_FAIL, e.getMessage()); } } return null; + } + + @Override + public String getAlipayForm(String formId) { + return redisManager.getCommonString(formId); } @@ -131,7 +137,8 @@ return order; } switch (order.getPayWay()) { - case "alipay": //鏀粯瀹� + //鏀粯瀹� + case "alipay": AlipayTradeQueryResponse res = null; try { res = AlipayH5PayUtil.queryOrder(PayUtil.getAlipayApp(), id + "", null); @@ -146,7 +153,8 @@ } catch (AlipayApiException e) { e.printStackTrace(); } - case "weChat": //寰俊 + //寰俊 + case "weChat": try { WXPayOrderInfoV3 info = WXPayV3Util.getPayOrderInfo(id + "", PayUtil.getWXAPP()); if (info != null && info.getTrade_state().equalsIgnoreCase("SUCCESS")) { -- Gitblit v1.8.0