Php 从Stripe/PayPal计算支付费用-函数中的奇怪输出
我有下面的功能,计算支付费用,将去支付提供商(如条纹或贝宝) 我是基于以下内容制定的: 但是,当您增加要求Stripe收取的总金额时,您也在增加Stripe费用,因为Stripe的定价是固定费用加上总费用的一个百分比。所以,你需要计算出你需要收取的总金额,这样,在Stripe扣除其费用后,你会收到一些可预测的净金额 这其实是一道数学题,并不像听起来那么简单,但为了节省一些计算: 我认为我的职能应该在百分比较低(即2.9%、5%等)的情况下发挥作用。但是随着百分比的增加,输出看起来很奇怪,我认为函数不知怎么搞砸了,或者我不太明白应该如何收取费用。这两种情况都是可以想象的 输出:Php 从Stripe/PayPal计算支付费用-函数中的奇怪输出,php,math,paypal,stripe-payments,percentage,Php,Math,Paypal,Stripe Payments,Percentage,我有下面的功能,计算支付费用,将去支付提供商(如条纹或贝宝) 我是基于以下内容制定的: 但是,当您增加要求Stripe收取的总金额时,您也在增加Stripe费用,因为Stripe的定价是固定费用加上总费用的一个百分比。所以,你需要计算出你需要收取的总金额,这样,在Stripe扣除其费用后,你会收到一些可预测的净金额 这其实是一道数学题,并不像听起来那么简单,但为了节省一些计算: 我认为我的职能应该在百分比较低(即2.9%、5%等)的情况下发挥作用。但是随着百分比的增加,输出看起来很奇怪,我认为
calcPaymentFee(100, 0, 0.029) // 2.9%: 2.987 (seems correct, this tool gives same output: http://thefeecalculator.com/stripe/)
calcPaymentFee(100, 0, 0.1) // 10%: 11.111 (seems correct)
calcPaymentFee(100, 0, 0.5) // 50%: 100.0 (?!? - makes no sense)
我真的不明白为什么要付100英镑。如果我传入“0.5”作为第三个参数,我会想象它大约是50%。也许我误解了什么,但这似乎很奇怪
我想要达到的目标
我希望计算Stripe或PayPal将收取的费用,然后将此费用支付给客户
因此,如果我以100美元的价格出售某件物品,而条纹费为2.9%,我将向客户收取102.9美元
我目前不明白的是,如果我想以100美元的价格出售某件东西,我已经将费用设置为50%,我被告知要收取200美元。实际上,50%的100美元费用是正确的 想象一下这个场景:
- 顾客付200美元李>
- 他们中有50%的人选择银行。=>100美元
- 你得到100美元(200美元的50%)
<form method="post" target="<?php echo $_SERVER['PHP_SELF']; ?> ">
<input type="text" name="amount">
<input type="submit" name="submit" value="Calculate">
</form>
<?php
$fixed = 0.3;
$percent = 0.029;
function calcPaymentFee($amount) {
global $fixed, $percent;
$arr = array();
$arr['fee'] = ($amount * $percent + $fixed);
$arr['net'] = $amount - $arr['fee'];
return $arr;
}
function calcTotal($amount) {
global $fixed, $percent;
$arr = array();
$r = (100 - $percent*100) / 100;
$arr['total'] = ($amount + $fixed) / $r;
$arr['fee'] = $arr['total'] - $amount;
return $arr;
}
if (isset($_POST['submit']) && !empty($_POST['amount'])) {
$left = calcPaymentFee($_POST['amount']);
$right = calcTotal($_POST['amount']);
printf('Amount: %.2f<br>', $_POST['amount']);
printf('Fee: %.2f<br>', $left['fee']);
printf('Net sum: %.2f<br>', $left['net']);
echo '<br>';
printf('If you want net sum of %.2f you must ask for:<br>', $_POST['amount']);
printf('Amount: %.2f<br>', $right['total']);
printf('Fee: %.2f<br>', $right['fee']);
}
?>
简而言之,calcPaymentFee
函数中的公式有点错误,必须是:
return ($amount * $percent + $fixed);
我不明白。如果您希望收到100美元,并且在处理过程中您必须支付50%的费用,那么您将收取100美元的费用。所以总共是200美元,这是由100美元的费用和100美元的价格加起来的。出什么问题了?你是不是在想办法向客户收取信用卡费用?还是你只是想弄清楚基本费用是多少?@oleg liski回答说+我更新了我的问题,以便更好地解释我不明白的地方
Amount: 100.00
Fee: 3.20
Net sum: 96.80
If you want net sum of 100.00 you must ask for:
Amount: 103.30
Fee: 3.30
return ($amount * $percent + $fixed);