8

听起来是个简单的问题,我知道。我真的很难过。

以下是制作简单计算器的两个网站:

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 美元。

我究竟做错了什么?

为什么我使用 Round 函数?百分比会导致一些小数超过百分之一,如果小数点后超过 2 位,PayPal 会生成错误。我认为人们通常会用钱来取舍(例如,31.6342 美元将是 31.63 美元),但如果是这样的话,我在我的功能中做错了什么?如果有大笔付款,则减少的金额会更大。这让我相信百分比部分有问题。

你能提供一些帮助吗?

感谢您的时间。

4

5 回答 5

15

你的功能确实很奇怪。细分来看,PayPal 收取 0.30 美元的固定费率,并增加 2.9% 的交易百分比费用。

这个公式是加上 $.30 然后除以百分比差异 (100% - 2.9%),这将为您提供 PayPal 实际减少之前的金额。

function memfees($amount)
{
    $amount += .30;
    return $amount / (1 - .029);
}

您可以根据需要将其四舍五入和浮动。

于 2012-05-16T07:03:17.260 回答
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。

于 2012-05-16T07:02:19.100 回答
7

这是一个很好的数学解释,说明它是如何工作的。我们有这个号码 x,我们想从信用卡中扣款。我们不知道这个数字是多少,但我们知道当我们减去 30 美分并减去 x 的 2.9% 时,我们得到 y,也就是我们带回家的金额:

y = x - x * .029 - .3

我们知道 y,因为我们知道我们想要带回家的数量。假设我们想带回家 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 * .029then 所有需要做的只是使用分配属性,我们想出了x(1 - .029)

于是我们提出了这个公式:

x = (y + .3) / .971

它定义了这个臭名昭著的数字 x。此外,它回答了我们的问题;我应该从卡中收取多少金额才能支付交易费用并且不低于我们想要带回家的金额?好吧,我们需要做的就是填写带回家的金额,即 y:

x = (100 + .3) / .971
x = ~103.30

我希望这有助于澄清。

于 2012-10-14T23:47:03.027 回答
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);
}
于 2017-11-02T14:59:08.340 回答
0

一道数学题。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

那么这在 Code 中意味着什么?

//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);
}
于 2018-07-16T02:00:40.167 回答