Explorar el Código

fix paypal海外支付补差价不扣除手续费

zoujiajian hace 1 año
padre
commit
6e1358beb6

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/request/OrderRefundReq.java

@@ -53,4 +53,9 @@ public class OrderRefundReq {
 	 * 扣除的余额
 	 */
 	private BigDecimal deductBalance;
+
+	/**
+	 * 是否是补差价
+	 */
+	private Boolean isDiffer = false;
 }

+ 1 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -1262,6 +1262,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 throw BusinessRuntimeException.getInstance("补差价金额应不大于订单金额");
             }
             //退款
+            orderRefundReq.setIsDiffer(true);
             outNo = orderRefundService.centerRefund(orderRefundReq, orderDon);
             orderDon.setRefundMoney(orderRefundMoney.add(refundMoney));
             orderDonMapper.updateById(orderDon);

+ 9 - 2
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderRefundServiceImpl.java

@@ -242,7 +242,11 @@ public class OrderRefundServiceImpl implements OrderRefundService {
 
 
 	public Boolean paypalRefund(OrderRefundReq refundReq, OrderDon orderDon) throws PayPalRESTException {
-		BigDecimal net = refundReq.getRefundMoney().divide(new BigDecimal(7),2,RoundingMode.HALF_DOWN).subtract(orderDon.getAbroadTransactionFee());;
+		BigDecimal net = refundReq.getRefundMoney().divide(new BigDecimal(7), 2, RoundingMode.HALF_DOWN);
+		//非补差价 需要扣除手续费
+		if (!refundReq.getIsDiffer()) {
+			net = net.subtract(orderDon.getAbroadTransactionFee());
+		}
 		log.info("paypal return order:{},money:{}",orderDon.getId(),net);
 		PaypalPayConfig paypalPayConfig = paypalPayConfigMapper.selectById(1);
 		APIContext apiContext = getAPIContext(paypalPayConfig.getClientId(), paypalPayConfig.getClientSecret(),paypalPayConfig.getMode());
@@ -260,7 +264,10 @@ public class OrderRefundServiceImpl implements OrderRefundService {
 	}
 
 	public Boolean stripeRefund(OrderRefundReq refundReq, OrderDon orderDon) throws StripeException {
-		BigDecimal net = refundReq.getRefundMoney().divide(new BigDecimal(7),2, RoundingMode.HALF_DOWN).subtract(orderDon.getAbroadTransactionFee());
+		BigDecimal net = refundReq.getRefundMoney().divide(new BigDecimal(7), 2, RoundingMode.HALF_DOWN);
+		if (!refundReq.getIsDiffer()) {
+			net = net.subtract(orderDon.getAbroadTransactionFee());
+		}
 		log.info("stripe return order:{},money:{}",orderDon.getId(),net);
 		StripePayConfig stripePayConfig = stripePayConfigMapper.selectById(1);
 		Stripe.apiKey = stripePayConfig.getApiKey();