`

支付宝花呗计算金额工具类

 
阅读更多
https://docs.open.alipay.com/60/104790/
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.ZketYD&treeId=338&articleId=106464&docType=1
https://docs.open.alipay.com/277/106748/

package com.baozun.store.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.baozun.store.constants.GucciAlipayConstants;

/**
 * 花呗分期工具
 * @author binrui.dong
 * 2017年7月25日 下午5:58:08
 */
public class InstallmentUtil{
    
    private static final Logger     LOG     = LoggerFactory.getLogger(InstallmentUtil.class);
    
    private static final BigDecimal ONE_HUNDRED = BigDecimal.valueOf(100);
    
    /**
     *  1、获取用户每期本金
     *  2、获取用户每期手续费
     *  3、获取用户每期总费用
     *  @param payAmount 总额
     *  @param periods 期数
     *	@return
     *	<p>binrui.dong
     *  <p>2017年7月25日 下午6:03:38
     */
    public static Map<String,BigDecimal> getInstallmentCost(BigDecimal payAmount, Integer periods){
        Map<String,BigDecimal> map = new HashMap<String,BigDecimal>();
        BigDecimal payAmountCent = payAmount.multiply(ONE_HUNDRED);//转化为分
        BigDecimal totalFeeInDecimal = null;
        switch (periods) {
            case 3:
                totalFeeInDecimal = payAmountCent.setScale(2, RoundingMode.HALF_UP)
                    .multiply(GucciAlipayConstants.HB_FQ_THREE_FEE_RATE).setScale(2, RoundingMode.HALF_UP);
                break;
            case 6:
                totalFeeInDecimal = payAmountCent.setScale(2, RoundingMode.HALF_UP)
                    .multiply(GucciAlipayConstants.HB_FQ_SIX_FEE_RATE).setScale(2, RoundingMode.HALF_UP);
                break;
            case 12:
                totalFeeInDecimal = payAmountCent.setScale(2, RoundingMode.HALF_UP)
                    .multiply(GucciAlipayConstants.HB_FQ_TWELVE_FEE_RATE).setScale(2, RoundingMode.HALF_UP);
                break;
        }
        
        map.put("allRateFee", totalFeeInDecimal.divide(ONE_HUNDRED,RoundingMode.HALF_EVEN).setScale(2, RoundingMode.HALF_EVEN));
        
        map.put("allFee", payAmountCent.add(totalFeeInDecimal).divide(ONE_HUNDRED).setScale(2, RoundingMode.HALF_EVEN));
        LOG.debug("总费用:" + map.get("allFee"));
        
        BigDecimal eachFee = map.get("allRateFee").setScale(2, RoundingMode.HALF_DOWN).divide(BigDecimal.valueOf(periods), RoundingMode.HALF_DOWN);//文档里是ROUND_DOWN
        map.put("eachFee", eachFee);
        LOG.debug("每期手续费:" + map.get("eachFee"));
        
        BigDecimal prinAndFee = map.get("allFee").setScale(2, RoundingMode.HALF_DOWN).divide(BigDecimal.valueOf(periods), RoundingMode.HALF_DOWN);//文档里是ROUND_DOWN
        map.put("prinAndFee", prinAndFee);
        LOG.debug("每期费用:" + map.get("prinAndFee"));
        
        map.put("periods", BigDecimal.valueOf(periods));
        
        return map;
    }
    public static Map<String,BigDecimal> getInstallmentCost2(BigDecimal payAmount, Integer periods){
        Map<String,BigDecimal> map = new HashMap<String,BigDecimal>();
        BigDecimal payAmountCent = payAmount.multiply(ONE_HUNDRED);//转化为分
        BigDecimal totalFeeInDecimal = null;
        switch (periods) {
            case 3:
                totalFeeInDecimal = payAmountCent.setScale(2, RoundingMode.HALF_UP)
                .multiply(new BigDecimal(0.023)).setScale(2, RoundingMode.HALF_UP);
                break;
            case 6:
                totalFeeInDecimal = payAmountCent.setScale(2, RoundingMode.HALF_UP)
                .multiply(new BigDecimal(0.045)).setScale(2, RoundingMode.HALF_UP);
                break;
            case 12:
                totalFeeInDecimal = payAmountCent.setScale(2, RoundingMode.HALF_UP)
                .multiply(new BigDecimal(0.075)).setScale(2, RoundingMode.HALF_UP);
                break;
        }
        
        map.put("allRateFee", totalFeeInDecimal.divide(ONE_HUNDRED,RoundingMode.HALF_EVEN).setScale(2, RoundingMode.HALF_EVEN));
        
        map.put("allFee", payAmountCent.add(totalFeeInDecimal).divide(ONE_HUNDRED).setScale(2, RoundingMode.HALF_EVEN));
        LOG.debug("总费用:" + map.get("allFee"));
        
        BigDecimal eachFee = map.get("allRateFee").setScale(2, RoundingMode.HALF_DOWN).divide(BigDecimal.valueOf(periods), RoundingMode.HALF_DOWN);//文档里是ROUND_DOWN
        map.put("eachFee", eachFee);
        LOG.debug("每期手续费:" + map.get("eachFee"));
        
        BigDecimal prinAndFee = map.get("allFee").setScale(2, RoundingMode.HALF_DOWN).divide(BigDecimal.valueOf(periods), RoundingMode.HALF_DOWN);//文档里是ROUND_DOWN
        map.put("prinAndFee", prinAndFee);
        LOG.debug("每期费用:" + map.get("prinAndFee"));
        
        map.put("periods", BigDecimal.valueOf(periods));
        
        return map;
    }
    public static void main(String[] args){
        System.err.println(getInstallmentCost2(new BigDecimal(1111.11), 3));
    }
    
}
分享到:
评论

相关推荐

    支付宝花呗怎么查看还款流水 支付宝花呗查看还款流水方法.docx

    通常,这个入口会在财务或信用卡相关的板块,因为花呗属于信贷类产品。 3. 进入花呗账户页面后,用户会看到一个“查看账单”的选项,点击这个链接。 4. 点击“查看账单”后,系统会跳转到一个新的页面,展示用户的...

    支付宝花呗怎么还款 花呗手机还款流程.docx

    支付宝花呗怎么还款 花呗手机还款流程.docx

    花呗分期计算器

    输入商品总金额,自动计算花呗分期金额,3、6、9、12期

    支付宝花呗与信用卡对比.docx

    支付宝花呗和信用卡是两种常见的在线支付工具,它们在消费信贷方面提供了便利,但也有各自的特点和使用注意事项。以下是对这两种服务的详细对比和相关知识点: 1. **花呗还款方式**: 花呗通常会在每月10日进行...

    支付宝蚂蚁花呗产品营销策划方案 - .pdf

    支付宝蚂蚁花呗产品营销策划方案 - .pdf

    花呗计算器,输入金额和分期数(3,6,12,24),得出本金,利息,应还,总的利息

    花呗计算器

    有钱就是任性!支付宝“信用卡”花呗随便花.docx

    【支付宝花呗】是支付宝推出的一项虚拟信用...总的来说,支付宝花呗作为一种便捷的在线信用支付工具,为用户提供了一种新的支付选择,同时也提醒用户在享受信贷服务的同时,要对自己的消费行为负责,合理规划个人财务。

    iwebshop支付宝openapi支付花呗支付插件

    《iWebShop支付宝OpenAPI支付与花呗支付插件详解》 在当今电子商务领域,支付方式的便捷性和安全性是衡量一个平台用户体验的重要因素之一。iWebShop作为一个知名的开源电商系统,其支付宝OpenAPI支付插件的引入,为...

    八叔引擎之家_iwebshop支付宝openapi支付花呗支付插件.zip

    【标题】与【描述】提及的是"八叔引擎之家_iwebshop支付宝openapi支付花呗支付插件.zip",这是一款适用于iWebShop电子商务平台的支付插件,它集成了支付宝OpenAPI接口,使得用户在购物时能够选择使用支付宝进行支付...

    花呗0.05%日息计算

    附件里有这个程序和程序的源代码(C语言)。这个程序 会让你输入 多少元人民币,还有天数(一般是30天),这两个数值 输入完后你就可以得出利息 + 本金的值 (如果你只要求利息,那么你直接将得出的值与本金相减就...

    支付宝模拟器

    支付宝模拟器是一款专门为开发者、测试人员以及营销人员设计的工具,它允许用户在不实际使用真实设备或账户的情况下,模拟支付宝的各种操作和交易流程。这个工具对于开发和测试支付宝相关应用,验证支付功能,以及...

    花呗分期调研报告.docx

    花呗分期是蚂蚁金服推出的消费金融产品,用户在小程序支付时使用花呗分期支付,订单全额实时支付到商家支付宝账户中,用户分期偿还花呗。 产品特色 花呗分期作为一种消费金融产品,具有以下的产品特色:

    php对接支付宝芝麻免押demo

    调起支付宝支付时,需要构建支付请求参数,包括订单号、金额、商品描述等,然后调用支付宝的支付接口。支付成功后,支付宝会回调通知你的服务器,需要在Zmxy.php中设置正确的回调地址,并处理回调数据。 6. **取消...

    用php的方法在:H5页面唤起支付宝app支付

    在H5页面上唤起支付宝App进行支付是现代电商网站和移动应用常见的功能之一。PHP作为后端语言,可以通过调用微信支付的API接口来实现这一流程。以下将详细讲解如何利用PHP实现H5页面唤起支付宝App支付的过程。 首先...

    花呗如何用手机还款?手机还款方法.docx

    花呗是支付宝推出的一款消费信贷产品,用户可以在淘宝、天猫等平台使用花呗额度进行购物,享受“先消费,后付款”的便利。然而,对于如何通过手机进行还款,有些用户可能还不太熟悉。下面,我们将详细介绍如何使用...

    数据挖掘在花呗审计上的应用.pdf

    数据挖掘在花呗审计上的应用主要关注了如何利用数据挖掘技术来增强花呗等互联网消费金融产品的风险控制能力,尤其是在信用评估和欺诈识别方面。以下将详细介绍数据挖掘的定义、决策树的概念及其在互联网消费金融中的...

    互联网金融企业资产证券化的实践——以蚂蚁花呗为例.pdf

    蚂蚁花呗作为支付宝旗下的消费信贷产品,在互联网金融资产证券化领域中具有代表性和实践价值。 互联网金融企业的资产证券化实践主要表现为将互联网金融平台上的消费贷款等资产作为基础资产,通过打包、证券化的方式...

    淘宝花呗如何设置主动还款.docx

    随着互联网金融的发展,各类便捷的支付工具和消费信贷服务应运而生,其中“花呗”作为阿里巴巴集团旗下蚂蚁金服推出的一款信用消费产品,深受广大消费者的喜爱。然而,对于花呗的用户来说,了解如何设置主动还款是...

    淘宝花呗如何实现主动还款?.docx

    2. 登录后,您将在支付宝首页看到您的花呗可用额度。这显示了您当前可以使用的信贷额度以及尚未偿还的金额。要进行主动还款,您可以点击页面上的“还款”或“详情”按钮,这将引导您进入还款页面。 3. 在还款页面,...

    浅谈互联网金融的风险与防范——以蚂蚁花呗为例.pdf

    蚂蚁花呗作为支付宝旗下的一款消费信贷产品,它的运营模式为用户提供了一定的信用额度,允许用户先消费后还款。这种模式在满足用户消费便利性的同时,也潜藏着诸多风险。 蚂蚁花呗的运营模式主要包括信用评估、授信...

Global site tag (gtag.js) - Google Analytics