2017-09-21 7 views
0

Je reçois l'erreur "Item amount must add up to specified amount subtotal (or total if amount details not specified)" de PayPal en utilisant le SDK PHP.Erreur PayPal PayPal SDK - Quantité d'élément doit ajouter jusqu'à sous-total montant spécifié

Je sais à la lecture de la documentation que cette erreur se produit lorsque le total des éléments ne correspond pas au total spécifié. Sauf dans mon cas, ils s'additionnent.

À la lecture d'autres réponses, je sais que les articles sont comptés par article. C'est le prix * de l'article, mais l'erreur persiste toujours.

Ce qui est plus intéressant, cependant, c'est que cette erreur se produit APRÈS que l'utilisateur est déjà connecté et a appuyé sur le bouton "Payer maintenant".

Voici l'objet de transactions (sous forme de tableau):

`array (
     'amount' => array (
      'currency' => 'GBP', 
      'total' => '558.48', 
      'details' => array (
       'shipping' => '0', 
       'tax' => '93.08', 
       'subtotal' => '465.40', 
      ), 
     ), 
     'item_list' => array (
      'items' => array (
       0 => array (
        'name' => 'Q-Connect Premium White A4 90gsm Inkjet Paper (500 Pack) KF01090', 
        'currency' => 'GBP', 
        'quantity' => 50, 
        'price' => '7.49', 
       ), 
       1 => array (
        'name' => 'Stabilo Point 88 Fineliner Pen Black (Pack of 10 with 5 neon pens free) UK12/110-8846885', 
        'currency' => 'GBP', 
        'quantity' => 10, 
        'price' => '9.09', 
       ), 
      ), 
     ), 
    )` 

S'il vous plaît ne suggèrent pas que je supprimer l'expédition si c'est 0,00 £ parce que je l'ai déjà essayé et je reçois toujours l'erreur si l'expédition est > 0

La taxe est effectuée sur le sous-total + frais de port. Donc dans ce cas (465,40 + 0) * 1,2 = 558,48

De même, 465,40 + 93,08 + 0 = 558,48

Répondre

1

J'ai résolu ce problème.

Vous devez valider à nouveau le paiement après avoir cliqué sur le bouton "Payer maintenant". Au deuxième tour, j'ai envoyé les montants erronés, ce qui a causé l'erreur. C'est pourquoi cela se passait après le paiement a déjà été envoyé.

+0

Je vois .. bon à savoir –

0

vous passez les valeurs sous forme de chaînes au lieu de chiffres. Il peut y avoir une erreur d'arrondi ou quelque chose comme ça. Essayez comme des chiffres et voyez ce qui se passe. La quantité est passée correctement comme numéro

OU

Vous pouvez prendre en compte les frais de PayPal, mais je ne suis pas tout à fait sûr que

OU

Le prix peut être pas individu mais agrégé, encore une fois, je ne suis pas tout à fait sûr ... double vérification

OU

En PHP doit être omis la virgule lors de la déclaration des tableaux (il peut être en option, vérifiez ... PHP est assez lâche en cas d'erreur de déclaration)

ET

SDK PayPal est vraiment vraiment mal documenté et lourd à travailler à moins que vous ne fassiez des choses très simples comme "payer maintenant" les boutons html. Aller pour la bande ->https://stripe.com

+0

Salut, merci pour la réponse rapide. Malheureusement, je dois complètement ignorer votre réponse. Le tableau que j'ai posté est le résultat de l'appel de 'toArray()' sur l'objet de transaction lui-même.Je suis en train de passer en nombre, c'est paypal qui le convertit ce qui rend le point A et D invalide. Les frais paypal ne sont certainement pas pris en compte et j'ai essayé d'utiliser des agrégats mais cela a échoué avant même d'arriver à l'étape de connexion. Cependant, je suis totalement d'accord avec votre dernier point: P mais l'utilisation de Stripe n'est pas une option viable à ce stade –