条纹费用计算

时间:2016-04-28 06:53:28

标签: stripe-payments stripe-connect stripe.net

关于条纹费用计算,是否有任何方法可以根据提供的金额获得条纹费用。

我们必须实现这一点,我们必须向一个经销商支付 x 金额,并将 y 金额支付给另一个经销商。

第一种情况:

  

假设我们有100美元支付给Stripe。

     

根据我们的需求,我们首先要计算条纹费用,然后将该费用加到100美元的金额上。

     

e.g:

     

需要支付的金额是$ 100 + $ 3(条纹费用)= $ 103(总计)您需要从客户帐户中扣除。

第二案例:

  

我们需要向经销商支付95美元,并且我们希望保留在帐户中的5美元(不包括条纹费用)。

如果可以,我们该如何实现?

9 个答案:

答案 0 :(得分:7)

最简单的方法是为余额交易添加展开

{ 
    phone_number: 'vv+9nc3pVg==',
    user_id: 'cc+9nc3pVg==',
    token_created_time: '2018-05-28T11:31:42.760Z'
}

这将为您提供条款收取的费用,然后您可以进行剩余的计算

答案 1 :(得分:4)

目前,Stripe的API无法在创建费用之前计算费用。你自己需要这样做。

如果您想将费用转嫁给付费客户,以下支持文章将非常有用:https://support.stripe.com/questions/can-i-charge-my-stripe-fees-to-my-customers

要代表其他帐户处理付款,并可选择删除交易,您需要使用Stripe Connect。您可以在文档中阅读更多内容:https://stripe.com/docs/connect

答案 2 :(得分:4)

寻找javascript代码来计算条带费的人(也许是要求客户支付条带费)。我写了一个小脚本来做它

/**
 * Calculate stripe fee from amount
 * so you can charge stripe fee to customers
 * lafif <hello@lafif.me>
 */
var fees = { 
    USD: { Percent: 2.9, Fixed: 0.30 },
    GBP: { Percent: 2.4, Fixed: 0.20 },
    EUR: { Percent: 2.4, Fixed: 0.24 },
    CAD: { Percent: 2.9, Fixed: 0.30 },
    AUD: { Percent: 2.9, Fixed: 0.30 },
    NOK: { Percent: 2.9, Fixed: 2 },
    DKK: { Percent: 2.9, Fixed: 1.8 },
    SEK: { Percent: 2.9, Fixed: 1.8 },
    JPY: { Percent: 3.6, Fixed: 0 },
    MXN: { Percent: 3.6, Fixed: 3 }
};

function calcFee(amount, currency) {
    var _fee = fees[currency];
    var amount = parseFloat(amount);
    var total = (amount + parseFloat(_fee.Fixed)) / (1 - parseFloat(_fee.Percent) / 100);
    var fee = total - amount;

    return {
        amount: amount,
        fee: fee.toFixed(2),
        total: total.toFixed(2)
    };
}

var charge_data = calcFee(100, 'USD');
alert('You should ask: ' + charge_data.total + ' to customer, to cover ' + charge_data.fee + ' fee from ' + charge_data.amount );
console.log(charge_data);

https://gist.github.com/c3954950798ae14d6caabd6ba15b302b

答案 3 :(得分:1)

从Stripe Charge ID中,我们可以从金额中获取处理费

stripe.Charge.retrieve("ch_1DBKfWECTOB5aCAKpzxm5VIW", expand=['balance_transaction'])

    "id": "txn_1DBKfWECTOB5aCAKtwwLMCjd",
    "net": 941,
    "object": "balance_transaction",
    "source": "ch_1DBKfWECTOB5aCAKpzxm5VIW",
    "status": "pending",
    "type": "charge"

"net": 941 is the amount credited to merchant account

答案 4 :(得分:1)

只需弹出并添加到Harshal Lonare的答案中,发送“付款意图”确认即可通过以下方式获取余额交易数据:

"expand" => array("charges.data.balance_transaction")

答案 5 :(得分:0)

使用托管帐户最后,我可以实现上述方案。

计算条纹费用。

stripe_fixed_fee = 0.30; //分 stripe_charge = 0.029; //分

您可以参考此链接 http://www.blackdog.ie/stripe/ https://support.stripe.com/questions/can-i-charge-my-stripe-fees-to-my-customers

谢谢!

答案 6 :(得分:0)

您可以预先计算Stripe费用。 只需在此处查看其最新的计算公式即可:https://stripe.com/us/pricing(更改URL以匹配您的国家/地区的注意事项,例如对于我(法国),URL为https://stripe.com/fr/pricing

所以,就我而言,这有点特殊:

  • 对于欧洲卡,条纹费用为1.4%+ 0.25€
  • 对于非欧洲卡,条纹费为2.9%+ 0.25€

对于美国,Stripe费用为2.9%+ 0.30 USD

注意:百分比取自总量。 例如:对于一个美国帐户,如果我以100美元的价格出售产品,则Stripe费用为:

(100 * 0.029) + 0.30 = 3.2 USD

然后随意分配Stripe费用以方便您使用

答案 7 :(得分:0)

您可以使用这样的函数来计算绝对支付金额(“需要支付”金额+条形“税”):

const stripeFee = (amount) => {
  if (amount <= 0) return 0;
  const amountTax = amount / 100 * stripeProcessingFee;
  const minFeeTax = stripeProcessingMinFee / 100 * stripeProcessingFee;
  const tax = amountTax
    + (amountTax + minFeeTax) / 100 * stripeProcessingFee
    + minFeeTax
    + stripeProcessingMinFee;
  return Math.ceil(amount + tax);
};

* stripeProcessingFee-条纹即用即付定价百分比(2.9%)
* stripeProcessingMinFee-条纹即付即用定价最低价格,以美分(30美分)

答案 8 :(得分:0)

即使,大多数费用计算都是正确的,我仍然认为最简单的方法是询问报告api而不是进行计算。我只是用node完成的,不是用PHP完成的,但这是我的代码:

require('dotenv').config()
const stripe = require('stripe')(process.env.STRIPE_SECRET)
const { DateTime } = require('luxon')
const fetch = require('node-fetch')
const { encode } = require('base-64')
const CSV = require('csv-string')


//Important Timestamps
const dt = DateTime.local().setZone('America/Los_Angeles')
const endOfLastMonth = dt.startOf('month').toSeconds()
const startOfLastMonthLA = dt.minus({ month : 1 }).startOf('month').toSeconds()

const params = {
    created : {
        gt : startOfLastMonthLA, lt : endOfLastMonth
    }
}

const gather = async () => {

    const reportRun = await stripe.reporting.reportRuns.create({
        report_type : 'balance_change_from_activity.summary.1', parameters : {
            interval_start : startOfLastMonthLA, interval_end : endOfLastMonth
        }
    })
    let reportTest
    console.time('generateReport')
    while ( true ) {
        console.log('start')
        await new Promise(resolve => {
            setTimeout(resolve, 2000)
        })
        reportTest = await stripe.reporting.reportRuns.retrieve(reportRun.id)

        if (reportTest.status === 'succeeded') {
            console.log(reportTest.id)
            break
        }
    }
    console.timeEnd('generateReport')
    const actualReport = await fetch(reportTest.result.url, {
        headers : {
            'Authorization' : 'Basic ' + encode(process.env.STRIPE_SECRET + ':')
        }
    })
    const data = await actualReport.text()
    //This is the net profit!
    console.log(CSV.parse(data)[4][5])

}

gather().catch(e => console.log(e))

信息全部在数据中,我建议您看一下数据字符串。在仪表板上单击报告时,基本上就是您获得的报告,并且它们具有不同的报告类型。从语义上讲,通过report api获取报告更为正确,而与更适合处理/检查单笔费用的api相比。我希望Stripe将信息直接作为JSON发送给我,但是csv也可以。