web-dev-qa-db-fra.com

Comment calculer les frais de Paypal (2,9% + 0,30) sur un numéro fixe?

Cela semble être une question facile, je sais. Je suis littéralement perplexe.

Voici deux sites Web qui ont fait la calculatrice simple:

http://thefeecalculator.com

http://ppcalc.com

J'ai besoin de calculer ces frais Paypal dans mon application PHP.

Voici ce que j'ai eu, disons que nous voulions être payés 30 $ "même" pour les frais d'adhésion. C'est la fonction que j'utilise pour calculer ce que nous devrions facturer pour la compenser à l'aide des calculs de Paypal (également décrits sur les deux sites ci-dessus): 2,9% de la transaction + 0,30 $.

function memfees()
{
    $calc = round((30 * .029) + 30 + .30,2);
    return $calc;
}

Testez-le ici: http://matt.mw/junk/php/memfees.php Comme vous pouvez le voir, il est écrit 31.17. Les deux autres sites Web disent qu'il devrait être 31.20. Si j'essaye 130,00 $, le mien calcule à 134,07 $ et les deux leurs calculent à 134,19 $.

Qu'est-ce que je fais mal?

Pourquoi est-ce que j'utilise une fonction Round? Les pourcentages font que certaines décimales dépassent les centièmes et Paypal génère une erreur s’il ya plus de 2 chiffres après la décimale. Je pensais que les gens arrondissaient normalement l'argent (par exemple, 31,6342 dollars équivaudrait à 31,63 dollars), mais si c'est le cas, qu'est-ce que je fais de mal dans l'exercice de mes fonctions? Le montant qui est hors service est encore plus important si les paiements sont importants. Cela me porte à croire que quelque chose ne va pas avec la portion en pourcentage.

Pourriez-vous offrir de l'aide à ce sujet?

Merci pour votre temps.

8
WebMW

Votre fonction semble étrange. Pour le décomposer, Paypal applique un taux fixe de 0,30 $ et ajoute des frais de transaction de 2,9%.

La formule consiste à ajouter 0,30 $ puis à diviser par la différence en pourcentage (100% - 2,9%), ce qui vous donnera le montant avant réduction effective par Paypal.

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

Vous pouvez arrondir et flotter à votre guise.

15
Jordan

Parce que vous y réfléchissez mal.

Vous ne facturez pas 30 $, vous facturez 31,20 $. Paypal déduit les frais de transaction (2,9%) de que puis prélève 0,30 $ sur le résultat:

  $31.20
*  0.971 (1 - 2.9%)
  ------
  $30.2952
- $00.30
  ------
  $29.9952

Donc, vous devez inverser ce processus, c’est-à-dire ajouter 0,3 € à votre total et diviser par 0,971.

7
Gareth

Voici une bonne explication mathématique de la façon dont cela fonctionne. Nous avons ce numéro, x, que nous voulons charger une carte de crédit. Nous ne savons pas quel est ce nombre, mais nous savons que lorsque nous soustrayons 30 cents et soustrayons 2,9% de x, nous obtenons y, qui correspond au montant que nous rapportons à la maison:

y = x - x * .029 - .3

Nous le savons car nous savons quel montant nous voulons ramener à la maison. Disons que nous voulions gagner 100 $, puis y = 100. Mais qu'est-ce que x?

y = x - x * .029 - .3
y + .3 = x - x * .029
         = x(1 - .029)
(y + .3) / (1 - .029) = x
x = (y + .3) / .971

Remarque: étant donné que x - x * .029 peut être écrit en tant que x * 1 - x * .029, tout ce que vous avez à faire est simplement d'utiliser la propriété distributive et nous obtenons x(1 - .029)

Nous trouvons donc la formule:

x = (y + .3) / .971

Ce qui définit ce nombre infâme, x. En outre, cela répond à notre question. Quel montant devrais-je débiter d'une carte afin de couvrir les frais de transaction et ne pas être inférieur au montant que nous voulons rapporter à la maison? Eh bien, tout ce que nous avons à faire est de remplir le montant de la maison, qui est y:

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

J'espère que cela aide à clarifier.

6
Sam

En 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);
}
1
user8875455

Un problème de maths. 100% n'est pas ce que vous pensez:

  • 100% + les frais fixes doivent être facturés
  • 100% est actuellement 97,1 % payout ($ 30) + 2,9 % fee
  • Pour obtenir 100%, nous appliquons la règle de trois

par exemple.:

 97.10 % = $ 30
  1.00 % = $ 30 / 97.1
100.00 % = $ 30 / 97.1 * 100
============================
100.00 % ~ 30,90

Maintenant, nous devons ajouter les frais fixes:

$ 30,90 +  $ 0.30

Ce qui a pour résultat le $ 31.20 demandé

Alors qu'est-ce que cela signifie dans le 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);
}
0
Christian Gollhardt