Commit 67855b9b by 程裕兵

feat:refund

parent f22bffab
......@@ -43,8 +43,7 @@ public class FeeUtil {
// 机构剩余实收金额
BigDecimal leftPayActualAmount = MoneyUtil.subtract(payActualAmount, historyRefundActualAmount);
// 试算手续费:向下取整(退款金额/原交易金额*原支付交易手续费金额)
BigDecimal trialFee = MoneyUtil.divide(refundTransAmount.multiply(payFee), payTransAmount, 2,
RoundingMode.FLOOR);
BigDecimal trialFee = calculateTrialFee(refundTransAmount, payTransAmount, payFee);
// 试算实退金额
BigDecimal trialActualAmount = MoneyUtil.subtract(refundTransAmount, trialFee);
// 实退手续费
......@@ -52,15 +51,69 @@ public class FeeUtil {
: MoneyUtil.add(trialFee, MoneyUtil.subtract(trialActualAmount, leftPayActualAmount));
}
/**
* 计算试算手续费
* <p>
* 试算手续费 = 向下取整(退款金额/原交易金额*原交易手续费金额)
*/
private static BigDecimal calculateTrialFee(BigDecimal refundTransAmount, BigDecimal payTransAmount,
BigDecimal payFee) {
// 试算手续费:向下取整(退款金额/原交易金额*原支付交易手续费金额)
return MoneyUtil.divide(refundTransAmount.multiply(payFee), payTransAmount, 2,
RoundingMode.FLOOR);
}
public static void main(String[] args) {
BigDecimal refundTransAmount = new BigDecimal("100");
BigDecimal payTransAmount = new BigDecimal("100");
BigDecimal payActualAmount = new BigDecimal("99.43");
BigDecimal payFee = new BigDecimal("0.57");
BigDecimal historyRefundActualAmount = new BigDecimal("99.43");
BigDecimal refundAmount1 = new BigDecimal("33");
BigDecimal refundAmount2 = new BigDecimal("33");
BigDecimal refundAmount3 = new BigDecimal("33");
BigDecimal refundAmount4 = new BigDecimal("1");
BigDecimal fee1 = test33(payTransAmount, payActualAmount, payFee, refundAmount1,
new BigDecimal("0"));
BigDecimal historyRefundActualAmount1 = MoneyUtil.subtract(refundAmount1, fee1);
BigDecimal leftPayActualAmount1 = MoneyUtil.subtract(payActualAmount, historyRefundActualAmount1);
System.out.println(
FeeUtil.calculateRefundFee(refundTransAmount, payTransAmount, payActualAmount, payFee,
historyRefundActualAmount));
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 收款金额:\t" + payTransAmount + ",实收金额:\t" + payActualAmount + ",收款手续费:\t"
+ payFee + ",退款申请金额:\t" + refundAmount1 + ",手续费:\t" + fee1 + ",剩余实收金额:\t" + leftPayActualAmount1);
BigDecimal fee2 = test33(payTransAmount, payActualAmount, payFee, refundAmount2,
historyRefundActualAmount1);
BigDecimal historyRefundActualAmount2 = MoneyUtil.add(MoneyUtil.subtract(refundAmount2, fee2),
historyRefundActualAmount1);
BigDecimal leftPayActualAmount2 = MoneyUtil.subtract(payActualAmount, historyRefundActualAmount2);
System.out.println(
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 收款金额:\t" + payTransAmount + ",实收金额:\t" + payActualAmount + ",收款手续费:\t"
+ payFee + ",退款申请金额:\t" + refundAmount2 + ",手续费:\t" + fee2 + ",剩余实收金额:\t" + leftPayActualAmount2);
BigDecimal fee3 = test33(payTransAmount, payActualAmount, payFee, refundAmount3,
historyRefundActualAmount2);
BigDecimal historyRefundActualAmount3 = MoneyUtil.add(MoneyUtil.subtract(refundAmount3, fee3),
historyRefundActualAmount2);
BigDecimal leftPayActualAmount3 = MoneyUtil.subtract(payActualAmount, historyRefundActualAmount3);
System.out.println(
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 收款金额:\t" + payTransAmount + ",实收金额:\t" + payActualAmount + ",收款手续费:\t"
+ payFee + ",退款申请金额:\t" + refundAmount3 + ",手续费:\t" + fee3 + ",剩余实收金额:\t" + leftPayActualAmount3);
BigDecimal fee4 = test33(payTransAmount, payActualAmount, payFee, refundAmount4,
historyRefundActualAmount3);
BigDecimal historyRefundActualAmount4 = MoneyUtil.add(MoneyUtil.subtract(refundAmount4, fee4),
historyRefundActualAmount3);
BigDecimal leftPayActualAmount4 = MoneyUtil.subtract(payActualAmount, historyRefundActualAmount4);
System.out.println(
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 收款金额:\t" + payTransAmount + ",实收金额:\t" + payActualAmount + ",收款手续费:\t"
+ payFee + ",退款申请金额:\t" + refundAmount4 + ",手续费:\t" + fee4 + ",剩余实收金额:\t" + leftPayActualAmount4);
}
private static BigDecimal test33(BigDecimal payTransAmount, BigDecimal payActualAmount, BigDecimal payFee,
BigDecimal refundTransAmount, BigDecimal historyRefundActualAmount) {
return FeeUtil.calculateRefundFee(refundTransAmount, payTransAmount, payActualAmount,
payFee,
historyRefundActualAmount);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment