我知道,这听起来很简单。我真的被难住了。
以下是制作简单计算器的两个网站:
http://thefeecalculator.com
http://ppcalc.com
我需要在我的PHP应用程序中计算这些PayPal的费用。
这就是我得到的,假设我们想获得 30 美元的会员费"甚至"。这是我用来计算我们应该收取的费用的函数,使用 PayPal 的计算(在上面的两个网站上也有描述(:交易的 2.9% + 0.30 美元。
function memfees()
{
$calc = round((30 * .029) + 30 + .30,2);
return $calc;
}
在这里测试:http://matt.mw/junk/php/memfees.php如您所见,它说 31.17。其他两个网站都说应该是31.20。如果我尝试 130.00 美元,我的计算为 134.07 美元,他们的都计算为 134.19 美元。
我做错了什么?
为什么使用舍入函数?百分比会导致一些小数超过百分之一,如果小数后超过 2 位,PayPal将生成错误。我以为人们通常会圆钱(例如 31.6342 美元将是 31.63 美元(,但如果是这样的话,我在职能上做错了什么?如果有大笔付款,则关闭的金额会进一步增加。这让我相信百分比部分有问题。
你能在这方面提供一些帮助吗?
谢谢你的时间。
你的函数看起来确实很奇怪。为了细分它,PayPal收取0.30美元的固定费率,并增加2.9%的交易百分比费用。
这样做的公式是将 $.30 相加,然后除以百分比差异 (100% - 2.9%(,这将得到实际减少 PayPal 之前的金额。
function memfees($amount)
{
$amount += .30;
return $amount / (1 - .029);
}
您可以根据需要将其四舍五入和浮动。
的方式是错误的。
你不收取 30美元,你收取 31.20 美元。PayPal从中扣除交易费用(2.9%(,然后从结果中扣除0.30美元:
$31.20
* 0.971 (1 - 2.9%)
------
$30.2952
- $00.30
------
$29.9952
因此,您必须反转此过程,即在总数中增加 0.3 美元并除以 0.971。
这里有一个很好的数学解释来解释它是如何工作的。我们有这个号码x,我们想从信用卡中扣款。我们不知道这个数字是多少,但我们知道,当我们减去 30 美分并减去 x 的 2.9% 时,我们得到 y,这是我们带回家的钱:
y = x - x * .029 - .3
我们知道你们,因为我们知道我们想带回家多少钱。比如说,我们想带回家 100 美元,然后 y = 100。但是什么是x?
y = x - x * .029 - .3
y + .3 = x - x * .029
= x(1 - .029)
(y + .3) / (1 - .029) = x
x = (y + .3) / .971
注意:因为x - x * .029
可以写成x * 1 - x * .029
所以所有需要做的就是使用分配属性,我们想出x(1 - .029)
所以我们想出了公式:
x = (y + .3) / .971
它定义了这个臭名昭著的数字,x。此外,它回答了我们的问题;我应该向卡收取多少金额才能支付交易费用,并且不低于我们想要带回家的金额?好吧,我们需要做的就是填写带回家的金额,即 y:
x = (100 + .3) / .971
x = ~103.30
我希望这有助于澄清。
在 C# 中
public decimal CalcFee()
{
//PayPal Percentage Fee = 0.29%, Fix Fee = 0.3
var sum = this.Items.Sum(c => c.Price * c.Qty); //Total Items
return Math.Round(Math.Round((sum + (decimal)0.3) / (decimal)0.971, 2) - sum, 2);
}
一道数学题。 100%不是你想的那样:
- 100%+需要收取固定费用
- 100 % 是实际
97,1 % payout ($ 30) + 2,9 % fee
- 为了获得 100%,我们应用三法则
例如:
97.10 % = $ 30
1.00 % = $ 30 / 97.1
100.00 % = $ 30 / 97.1 * 100
============================
100.00 % ~ 30,90
现在我们需要添加固定费用:
$ 30,90 + $ 0.30
这会导致请求$ 31.20
那么这在代码中意味着什么?
//untested, not a php developer anymore
function requiredChargement($requiredPrice)
{
$requiredPercentage = 100.0 - 2.9;
$fullVariableCost = $requiredPrice / requiredPercentage * 100.0;
return round($fullVariableCost + 0.3, 2);
}