关于条纹费用计算,是否有任何方法可以根据提供的金额获得条纹费用。
我们必须实现这一点,我们必须向一个经销商支付 x 金额,并将 y 金额支付给另一个经销商。
第一种情况:
假设我们有100美元支付给Stripe。
根据我们的需求,我们首先要计算条纹费用,然后将该费用加到100美元的金额上。
e.g:
需要支付的金额是$ 100 + $ 3(条纹费用)= $ 103(总计)您需要从客户帐户中扣除。
第二案例:
我们需要向经销商支付95美元,并且我们希望保留在帐户中的5美元(不包括条纹费用)。
如果可以,我们该如何实现?
答案 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);
答案 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)
所以,就我而言,这有点特殊:
对于美国,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也可以。