Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Invité de passage
    Inscrit en
    janvier 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 2
    Points : 0
    Points
    0

    Par défaut Demande Aide pour API Paypal NVP

    Bonjour, tout d'abord je suis pas sur d'être dans la bonne section, si je suis dans la mauvaise section veuillez m'excuser.
    Voilà mon problème : j'ai besoin d'utiliser l'API Paypal NVP, donc j'ai mis au point un script pour simuler l'achat d'un produit de prix 62.00 € :
    Code :
    1
    2
     
    $prixrequete = 23.00; //La déclaration de la variable du prix avec 2 décimales séparées par un point comme l'exige l'API Paypal NVP.
    La requete sous forme d'URL qui sera lancée ensuite via Curl se présente comme ceci :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $requete = 'https://api-3t.sandbox.paypal.com/nvp?';
    $requete = $requete.'VERSION='.$version.'&USER='.$user.'&PWD='.$pass.'&SIGNATURE='.$signature;
    $requete = $requete."&METHOD=SetExpressCheckout".
    			"&CANCELURL=".urlencode("http://XXXXX.com/index.php?opt=cancelpaypal").
    			"&RETURNURL=".urlencode("http://XXXXX.com/index.php?opt=successpaypal").
    			"&AMT=".$prixrequete. //C'est la que le prix est défini dans la requete Paypal.
    			"&CURRENCYCODE=EUR".
    			"&INVNUM=".urlencode($rand).
    			"&DESC=".urlencode($description).
    			"&LOCALECODE=FR".
    			"&HDRIMG=".urlencode("http://www.XXXXX.com/images/banner.png");
    Alors le seul truc qui ne fonctionne pas c'est le prix, a chaque fois il est fixé à 10.00 €, je ne sais pas pourquoi, pourtant tous les autres trucs marchent comme l'image de bannière, la description...
    Voilà le resultat :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Array
    (
        [TOKEN] => EC-6S849552XL839273E
        [SUCCESSPAGEREDIRECTREQUESTED] => false
        [TIMESTAMP] => 2010-01-29T20:59:44Z
        [CORRELATIONID] => 91ecd706cb3d0
        [ACK] => Success //Succès de l'achat
        [VERSION] => 61
        [BUILD] => 1157804
        [TRANSACTIONID] => 21X83276TM306413L
        [TRANSACTIONTYPE] => expresscheckout
        [PAYMENTTYPE] => instant
        [ORDERTIME] => 2010-01-29T20:59:43Z
        [AMT] => 10.00
        [FEEAMT] => 0.59
        [TAXAMT] => 0.00
        [CURRENCYCODE] => EUR
        [PAYMENTSTATUS] => Completed
        [PENDINGREASON] => None
        [REASONCODE] => None
        [PROTECTIONELIGIBILITY] => Ineligible
        [INSURANCEOPTIONSELECTED] => false
        [SHIPPINGOPTIONISDEFAULT] => false
    )
    Array
    (
        [TOKEN] => EC-6S849552XL839273E
        [GIFTWRAPAMOUNT] => 0.00
        [CHECKOUTSTATUS] => PaymentActionCompleted
        [TIMESTAMP] => 2010-01-29T20:59:44Z
        [CORRELATIONID] => 3394517e5a400
        [ACK] => Success
        [VERSION] => 61
        [BUILD] => 1157804
        [EMAIL] => XXXXXXXX@XXX.XX
        [PAYERID] => XXXXXXXXXXXX
        [PAYERSTATUS] => verified
        [FIRSTNAME] => Test
        [LASTNAME] => User
        [COUNTRYCODE] => FR
        [SHIPTONAME] => Test User
        [SHIPTOSTREET] => Av. de la Pelouse, 87648672 Mayet
        [SHIPTOCITY] => Paris
        [SHIPTOSTATE] => Alsace
        [SHIPTOZIP] => 75002
        [SHIPTOCOUNTRYCODE] => FR
        [SHIPTOCOUNTRYNAME] => France
        [ADDRESSSTATUS] => Unconfirmed
        [CURRENCYCODE] => EUR
        [AMT] => 10.00 //Voila le prix était fixé a 62.00 et la il apparait a 10.00 et le compte a été crédité de 10.00 non pas de 62.00 comme prévu ce qui est plutot embetant !
        [SHIPPINGAMT] => 0.00
        [HANDLINGAMT] => 0.00
        [TAXAMT] => 0.00
        [DESC] => Ceci est un produit TEST
        [INVNUM] => 10304260711132279592
        [INSURANCEAMT] => 0.00
        [SHIPDISCAMT] => 0.00
        [TRANSACTIONID] => 21X83276TM306413L
        [INSURANCEOPTIONSELECTED] => false
        [SHIPPINGOPTIONISDEFAULT] => false
    )
    Bien entendu j'ai fait tous ces tests dans la sandbox Paypal.
    Et après de très nombreux essais je ne trouve pas d'ou vient le probleme, ni comment le regler !
    En esperant que vous pourrez m'aider !

    Merci à vous !

  2. #2
    Membre Expert Avatar de nosferapti
    Inscrit en
    avril 2009
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : avril 2009
    Messages : 1 159
    Points : 1 849
    Points
    1 849

    Par défaut

    si tu utilises une variable de type "nombre flottant" seul "23" sera envoyé. Affiche la requête pour vérifier
    si tu veux envoyer les 2 chiffres derrière la virgule tu dois mettre une chaine de caractères :
    Code :
    $prixrequete = '23.00';
    tu peux obtenir cette chaine avec la fonction http://php.net/number_format
    GNAP !

  3. #3
    Invité de passage
    Inscrit en
    janvier 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : janvier 2010
    Messages : 2
    Points : 0
    Points
    0

    Par défaut

    Merci d'avoir répondu, j'ai essayé en mettant comme tu m'as dit :
    Code :
    1
    2
     
    $prixrequete = '23.00';
    Mais toujours le même probleme ca crédite 10 € au lieu de 23.00 €
    Et j'ai vérifié en affichant la requête je vois cette requete qui est la bonne :
    Code :
    1
    2
     
    https://api-3t.sandbox.paypal.com/nvp?VERSION=61&USER=XXXXX.XXX.XX&PWD=XXXXXXXXXXX&SIGNATURE=A3c0s0FT8xw5gj-CySi8DW5xIixBA5AoxmDyQG5MuLFM774mZply5Oni&METHOD=SetExpressCheckout&CANCELURL=http%3A%2F%2FXXXXX.com%2Findex.php%3Fopt%3Dcancelpaypal&RETURNURL=http%3A%2F%2FXXXXX.com%2Findex.php%3Fopt%3Dsuccesspaypal&AMT=23.00&CURRENCYCODE=EUR&INVNUM=5139765661983632356&DESC=Ceci+est+un+produit+TEST&LOCALECODE=FR&HDRIMG=http%3A%2F%2Fwww.XXXXXX.com%2Fimages%2Fbanner.png

  4. #4
    Invité de passage
    Inscrit en
    mai 2012
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : mai 2012
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    Bonjour,

    Je me permet d'upper ce topic car j'ai exactement le même problème, j'ai beau mettre 50.00 à l'attribut AMT, rien n'y fait, la transaction sera toujours de 10€. Y aurait t-il une limitation du sandbox de Paypal sur le montant de la transaction ?

  5. #5
    Invité de passage
    Inscrit en
    novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 9
    Points : 3
    Points
    3

    Par défaut

    Je me permet d'upper le topic également. J'ai le même soucis, et ce pour n'importe quelle version de l'API utilisée (que j'utilise AMT ou PAYMENTREQUEST_0_AMT). Je ne pense pas qu'il y ait une limite sur la sandbox car en utilisant l'intégration HTML à la place de l'API, le montant est correct.

    Quelqu'un a-t-il trouvé la solution ?

  6. #6
    Invité de passage
    Inscrit en
    novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 9
    Points : 3
    Points
    3

    Par défaut

    Je viens d'essayer en ajouter les variables PAYMENTREQUEST_0_ITEMAMT et L_PAYMENTREQUEST_0_AMT0, on a bien le prix qu'on souhaite prélever qui s'affiche lors du lancement de l'API, j'ai eu une lueur d'espoir, mais malheureusement, toujours ces 10 euros au final... c'est vraiment de la m*rde...

  7. #7
    Invité de passage
    Inscrit en
    novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 9
    Points : 3
    Points
    3

    Par défaut

    Je réponds, si ça peut aider d'autres personnes

    En fait, le problème venait du fait que lors du 2e appel à l'API (DoExpressCheckoutPayment), on passe également le montant en paramètre. Il faut donc bien veiller à ce que le montant qu'on passe est le même que celui passé lors du SetExpressCheckout.

    Bonne journée !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •