我们提供了精简算法,存在一定误差(小于0.1元)。也有精准的算法,但规则相对复杂。根据行业经验,用户不会特别在意极小的误差显示,商户可自行选择采用精简算法还是精准算法。
1、费率计算精度
费率计算结果保留2位小数,如果2位小数之后,则四舍五入;
2、用户每期还款本金
每期还款本金 = 订单总金额/期数
3、用户每期手续费
每期手续费=(订单总金额*手续费率)/期数
4、用户每期还款金额
每期还款金额=(订单总金额+订单总金额*手续费率)/期数
5、费率案例
例:订单总金额为1000元,用户选择3期分期,用户承担手续费,3期分期费率为2.3%;
每期还款本金= 1000/3=333.33元
每期手续费=(1000*2.3%)/3=7.67元
每期还款金额=(1000+1000*2.3%)/3=341元
以上均为保留精度后结果。
如:假设 3期,卖家承担百分之五十时,买家费率是2.30%。
则买家费率小数表现形式为:
2.30/100 = 0.023000
通过2.30得到0.023000 的java实现举例:
BigDecimal feeRate = new BigDecimal(2.30). divide(new BigDecimal("100"), 6,BigDecimal.ROUND_HALF_UP);
a) 计算公式:买家每期费用 = (本金*买家费率)/期数
b) 计算步骤举例
(1)把本金单位转化成分 cent。
(2)用转化为分后的金额乘以买家费率,得到以分表示的买家总手续费
Java实现举例:
BigDecimal totalFeeInDecimal = BigDecimal.valueOf(cent).multiply(feeRate);
(3)对费用进行取整(取整规则为ROUND_HALF_EVEN)
Java实现举例:
long totalFeeInLong = totalFeeInDecimal.setScale(0, BigDecimal.ROUND_HALF_EVEN).longValue()。
ROUND_HALF_EVEN:银行家舍去法,四舍六入,逢五看左边,左边为奇数进位,左边为偶数舍去。
(4)计算每期费用(用总费用/总期数,结果以分表示,向下取整,余数加在第一期还款中)
Java实现举例:
BigDecimal eachFee = BigDecimal.valueOf(totalFeeInLong).divide(new BigDecimal(“期数”), BigDecimal.ROUND_DOWN) 。
a) 计算公式:每期应还本金 = 本金/期数
b) 计算步骤举例
(1)把本金单位转化成分 cent。
(2)计算每期本金(用总金额/总期数,结果以分表示,向下取整,余数加在第一期还款中)
Java实现举例:
BigDecimal eachPrin = BigDecimal.valueOf(cent).divide(new BigDecimal(“期数”), BigDecimal.ROUND_DOWN) 。
4、买家每期应还费用和本金之和计算规则
b) 计算公式:每期应还费用和本金之和 = 每期应还费用+每期应还本金
c) 计算步骤举例
(1)根据上述(二)、(三)分别计算出每期应还费用和每期应还本金;
(2)将每期应还费用和每期应还本金相加,结果以分表示。
Java实现举例:
BigDecimal prinAndFee = eachFee.add(eachPrin);
5、将金额从分转化为元的规则(人民币,小数点后取两位)
Java实现举例:
BigDecimal yuan = BigDecimal.valueOf(cent,2);
订单金额533元,选择花呗分期支付,分6期,买家承担100%分期手续费。
1、6期费率,以小数表示,小数点后,保留6位有效数字:4.5/100 = 0.045000。
2、本金=53300分,计算总手续费
53300 * 0.045000 = 2398.5
根据取整规则ROUND_HALF_EVEN,小数为5,左边是偶数8,舍去,得到总手续费2398 。
3、计算总支付金额
总支付金额=本金+总手续费 = 53300+2398 = 556.98元。
4、计算每期手续费
每期手续费 = 总手续费/总期数 = 2398/6 = 399.666666,
向下取整 399分=3.99元。
余数 = 2398-399*6=4,这4分钱加到第一期还款中。
所以,第一期手续费是4.03元,后面每期手续费3.99元。
5、计算每期应还本金
每期应还本金 = 本金/总期数 = 53300/6 = 8883.333333,向下取整8883分 = 88.83元。
余数 = 53300 - 8883*6 = 2,这2分钱加到第一期还款中。
所以,第一期还款本金是88.85元,后面每期还款本金88.83元。
6、每期应还款金额 = 每期手续费 + 每期应还本金
第一期应还金额 = 4.03+88.85 = 92.88元。
第二期开始每期应还金额 = 3.99+88.83 = 92.82元。
在商品详情页和收银页面,只需显示第二期开始每期应还金额和手续费即可。