Précédent   Forum du club des développeurs et IT Pro > PHP > Scripts > E-Commerce
E-Commerce Forum d'entraide sur les scripts de commerce électronique (osCommerce, Magento, etc.). Avant de poster -> Cours e-commerce, Scripts E-commerce
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/01/2010, 13h09   #1
Kratos77
Invité de passage
 
Inscription : 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 !
Kratos77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2010, 14h43   #2
nosferapti
Membre Expert
 
Avatar de nosferapti
 
Inscription : avril 2009
Messages : 1 159
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 1 159
Points : 1 651
Points : 1 651
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 !
nosferapti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2010, 19h07   #3
Kratos77
Invité de passage
 
Inscription : janvier 2010
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 2
Points : 0
Points : 0
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
Kratos77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2012, 17h25   #4
jb13012
Invité de passage
 
Inscription : mai 2012
Messages : 1
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 1
Points : 1
Points : 1
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 ?
jb13012 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2012, 11h34   #5
Korhon
Invité de passage
 
Inscription : novembre 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 9
Points : 3
Points : 3
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 ?
Korhon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2012, 11h55   #6
Korhon
Invité de passage
 
Inscription : novembre 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 9
Points : 3
Points : 3
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...
Korhon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2012, 10h24   #7
Korhon
Invité de passage
 
Inscription : novembre 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 9
Points : 3
Points : 3
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 !
Korhon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h46.


 
 
 
 
Partenaires

Hébergement Web