我知道,这听起来很简单。我真的很难过。
以下是两个制作简单计算器的网站:
我需要在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美元。
我做错了什么?
为什么我使用Round函数?百分比导致一些小数超过百分位数,如果小数点后有2位数以上,则PayPal会生成错误。我认为人们通常会花钱,(例如$ 31.6342将是31.63美元),但如果是这样的话,我的功能是什么?如果有大笔付款,则关闭的金额会进一步减少。这让我相信百分比部分出了问题。
你可以提供一些帮助吗?
感谢您的时间。
答案 0 :(得分:15)
你的功能确实很奇怪。为了打破它,PayPal收取固定费率$ .30,并增加2.9%的交易百分比费用。
这个公式是添加$ .30然后除以差异百分比(100% - 2.9%),这将为您提供实际减少PayPal之前的金额。
function memfees($amount)
{
$amount += .30;
return $amount / (1 - .029);
}
你可以根据自己的意愿对其进行圆形浮动。
答案 1 :(得分:7)
因为你正在考虑错误的方法。
你不收取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。
答案 2 :(得分:6)
这是一个很好的数学解释,说明这是如何工作的。我们有这个号码,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
我希望这有助于澄清。
答案 3 :(得分:1)
在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);
}
答案 4 :(得分:0)
一个数学问题。 100%不是您的想法:
97,1 % payout ($ 30) + 2,9 % fee
例如:
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);
}