diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/domain/stock/IbOrderItemRequestBo.java b/cereshop-app/src/main/java/com/shop/cereshop/app/domain/stock/IbOrderItemRequestBo.java index e2aa933..e78b795 100644 --- a/cereshop-app/src/main/java/com/shop/cereshop/app/domain/stock/IbOrderItemRequestBo.java +++ b/cereshop-app/src/main/java/com/shop/cereshop/app/domain/stock/IbOrderItemRequestBo.java @@ -18,4 +18,8 @@ public class IbOrderItemRequestBo implements Serializable { private BigDecimal qty; @ApiModelProperty(value = "商品货号") private String sku; + @ApiModelProperty(value = "税费小计") + private BigDecimal tax; + @ApiModelProperty(value = "商品小计") + private BigDecimal subtotal; } diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/pay/xs/service/impl/XsPayServiceImpl.java b/cereshop-app/src/main/java/com/shop/cereshop/app/pay/xs/service/impl/XsPayServiceImpl.java index d6edc8c..895a1a0 100644 --- a/cereshop-app/src/main/java/com/shop/cereshop/app/pay/xs/service/impl/XsPayServiceImpl.java +++ b/cereshop-app/src/main/java/com/shop/cereshop/app/pay/xs/service/impl/XsPayServiceImpl.java @@ -515,7 +515,7 @@ public class XsPayServiceImpl implements XsPayService { .eq(CereShopCrossDetail::getShopId, orderList.get(0).getShopId())); if(cereShopCrossDetail == null){ - throw new CoBusinessException("10000","商家没有开通跨境电商服务,请联系商家"); + throw new CoBusinessException("10000","商家没有开通跨境电商服务,请联系商家", "支付失败"); } @@ -562,7 +562,7 @@ public class XsPayServiceImpl implements XsPayService { }else{ e.printStackTrace(); } - throw new CoBusinessException("10000","支付单报关出错"); + throw new CoBusinessException("10000","支付单报关出错", "支付失败"); } } } diff --git a/cereshop-app/src/main/java/com/shop/cereshop/app/service/stock/impl/CrossStockServiceImpl.java b/cereshop-app/src/main/java/com/shop/cereshop/app/service/stock/impl/CrossStockServiceImpl.java index a6d8e36..ae299f4 100644 --- a/cereshop-app/src/main/java/com/shop/cereshop/app/service/stock/impl/CrossStockServiceImpl.java +++ b/cereshop-app/src/main/java/com/shop/cereshop/app/service/stock/impl/CrossStockServiceImpl.java @@ -128,22 +128,28 @@ public class CrossStockServiceImpl implements CrossStockService{ bo.setExpressid("SF"); List items = new ArrayList<>(); + //税费 BigDecimal taxtotal = BigDecimal.ZERO; + List curOrderCereOrderProductList = cereOrderProductList.stream().filter(item -> item.getOrderId().equals(cereShopOrder.getOrderId())).collect(Collectors.toList()); for (CereOrderProduct cereOrderProduct : curOrderCereOrderProductList) { + + BigDecimal rate = cereOrderProduct.getRate().divide(BigDecimal.valueOf(100f),2,BigDecimal.ROUND_HALF_UP); + IbOrderItemRequestBo item = new IbOrderItemRequestBo(); - item.setPrice(cereOrderProduct.getProductPrice()); + //这里需要计算不含税单价 + item.setPrice(cereOrderProduct.getProductPrice().divide(BigDecimal.ONE.add(rate),2,BigDecimal.ROUND_HALF_UP)); item.setQty(new BigDecimal(cereOrderProduct.getNumber())); if(StringUtils.isEmpty(CrossStockConfig.DEFAULT_SKU)){ item.setSku(cereOrderProduct.getSKU()); }else { item.setSku(CrossStockConfig.DEFAULT_SKU); } + item.setSubtotal(item.getPrice().multiply(new BigDecimal(cereOrderProduct.getNumber()))); + item.setTax(item.getSubtotal().multiply(rate)); items.add(item); - taxtotal = taxtotal.add(cereOrderProduct.getProductPrice() - .multiply(new BigDecimal(cereOrderProduct.getNumber())) - .multiply(cereOrderProduct.getRate().divide(BigDecimal.valueOf(100f),2,BigDecimal.ROUND_HALF_UP))); + taxtotal = taxtotal.add(item.getTax()); } bo.setItems(items); diff --git a/cereshop-app/src/main/resources/mybatis/mapper/order/CereShopOrderDAO.xml b/cereshop-app/src/main/resources/mybatis/mapper/order/CereShopOrderDAO.xml index 5050d6e..ac5e5d7 100644 --- a/cereshop-app/src/main/resources/mybatis/mapper/order/CereShopOrderDAO.xml +++ b/cereshop-app/src/main/resources/mybatis/mapper/order/CereShopOrderDAO.xml @@ -503,7 +503,7 @@