IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

API Paypal valeur retour


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut API Paypal valeur retour
    Bonjour,
    J'aimerais avoir plus d'informations sur l'API Paypal, je ne comprend rien a la doc paypal et aux différents exemples.
    Je possède un site web et les membres peuvent faire des donations (5, 10 ou 15€).
    J'ai un compte business et j'ai essayé avec les boutons HTML, tout marche niquel, sauf que j'aimerais ensuite enregistrer les transactions dans ma base de données, il faudrait donc que Paypal me retourne une valeur true si succès ou false si erreur, mais je ne trouve rien a ce sujet.
    J'ai essayé l'API NVP, mais ca ne fonctionne pas

    https://api-3t.sandbox.paypal.com/nv...55904SP346364Y

    mais ca m'indique
    TIMESTAMP=2016%2d10%2d04T21%3a18%3a17Z&CORRELATIONID=9d3dbaa7e55b1&ACK=Failure&VERSION=204%2e0&BUILD=000000&L_ERRORCODE0=10002&L_SHORTMESSAGE0=Security%20error&L_LONGMESSAGE0=Security%20header%20is%20not%20valid&L_SEVERITYCODE0=Error

    Je trouve que des tutoriel, exemples qui date de 2010, ...
    Je pense que je dois mal chercher, mais je plus où chercher :/
    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    La solution la plus simple est d'utiliser l'IPN Paypal.

    Le principe, c'est que l'utilisateur effectue son paiement via un bouton paypal placé sur ton site.
    A la fin de cette étape, paypal renvoi l'utilisateur sur ton site, mais le paiement n'est pas encore validé.
    => A ce moment la tu peux enregistrer (ou pas) la commande et informer l'utilisateur que son paiement est en attente de confirmation par paypal.

    Ensuite, tu dois attendre que paypal déclenche un appel IPN pour confirmer que le paiement a bien été validé.
    Il faut bien comprendre qu'il s'agit d'un traitement asynchrone, tu n'auras pas de réponse immédiate de Paypal.
    Cela peut être plus ou moins rapide, c'est quasi instantané dans la plupart des cas, mais en fonction du mode de paiement utilisé par la personne cela peut prendre plus de temps. En effet, si il paye via virement bancaire (une des options proposée par paypal), cela peut prendre plusieurs jours avant que le paiement soit validé et donc que l'IPN soit déclenché.

    Pour utiliser l'ipn, il suffit simplement de spécifier l'url vers un script hébergé chez toi et qui servira à traiter les informations et que Paypal appellera au moment ou le paiement est validé..

    Des exemples d'implémentations pour traiter les réponses IPN fournis par paypal : https://github.com/paypal/ipn-code-samples

    Tu trouveras également plein de tutoriels en cherchant sur les mots clés IPN paypal.
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Ok merci beaucoup, je vais chercher de ce coter la.
    Je te tiens au courant

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    J'ai bêtement copier les scripts qui étaient sur le github pour voir si ca fonctionner.
    Mais je n'ai vu aucun endroit pour etre la signature, mot de passe, de l'API, donc je vois pas comment ca peux fonctionner :/

    J'ai une quand je lance le example_usage.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught exception 'Exception' with message 'Missing POST Data' in /home/vacaviwe/public_html/donation/includes/PaypalIPN.php:60 Stack trace: #0 /home/vacaviwe/public_html/donation/includes/example_usage.php(15): PaypalIPN->verifyIPN() #1 {main} thrown in /home/vacaviwe/public_html/donation/includes/PaypalIPN.php on line 60

    EDIT : Bon ok, ca veux dire que paypal a pas envoyé les données POST, mais comment les recevoir ? xD Je vois pas comment le bouton peux renvoyer des données

  5. #5
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Ce n'est pas à toi d’exécuter l'IPN.
    C'est Paypal qui appel ton script avec les bons paramètres en POST.

    Mais pour qu'il puisse l'appeler, il faut lui donner l'url qui permet d’accéder à ton script d'IPN.
    Soit en la configurant dans ton compte Paypal, soit en la précisant via le paramètre notify_url sur le bouton de paiement.

    https://developer.paypal.com/docs/cl...uide/IPNSetup/
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Ok. Je viens de mettre donc le lien XXXXX/example_usage.php dans mon IPN (Compte business sandbox)
    Dans le if($success) (du script IPN que tu m'as donné), je fais l'entrée dans la BDD.
    Mais rien :/ Pourtant dans l'historique IPN, j'ai bien la transaction qui est en état -> 'Envoyé'.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    C'est bon, ca fonctionne, erreur d'inclusion
    MErci beaucoup !

    J'ai une autre question, j'ai besoin de recevoir une valeur custom dans le bouton, que paypal me renvoi après sur IPN.
    J'ai donc ajouter : <input type="hidden" name="custom" value="'.$_SESSION['steamid'].'"> au niveau du bouton.
    Et je récupère ca dans le if($verified) avec $_POST['custom']
    Je récupère aussi le montant avec $_POST['auth_amount'].

    Mais l'insertion ne se fait pas dans la BDD et vu que c'est pas une page qui est exécuté par un utilisateur, je n'ais pas le message d'erreur qui s'affiche.

    Je sais pas si tu as compris xDD
    Merci

  8. #8
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Tu peux montrer le bout de code avec la requête ?
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "INSERT INTO donations (steamid, montant, datePrise, dateFin) VALUES ('".$_POST['custom']."',".$_POST['auth_amount'].",48,NOW(), now() + interval 1 month)";
    Si je remplace par des données fixes, ca fonctionne.

  10. #10
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Il faut protéger ta requête, si il y a un apostrophe dans la variable custom, ça peut la faire planter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "INSERT INTO donations (steamid, montant, datePrise, dateFin) VALUES ('".mysqli_real_escape_string($_POST['custom'])."',".floatval($_POST['auth_amount']).",48,NOW(), now() + interval 1 month)";
    Si tu utilise PDO, il faut utiliser http://us3.php.net/manual/en/pdo.quote.php
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Non, ca ne fonctionne pas :/ et aucun moyen de récuperer les erreurs, c'est ca le plus chiant

    EDIT:

    Si je met ca, ca fonctionne ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //$steamid = $_POST['custom'];
    //$auth_amount = $_POST['auth_amount'];
    $steamid = "dzqdqzz";
    $auth_amount = 150;
     
    $sth = $pdo->prepare("INSERT INTO donations (steamid, montant, datePrise, dateFin) VALUES (?,?,NOW(), NOW() + interval 1 month)");
    $sth->bindParam(1, $steamid, PDO::PARAM_STR, 17);
    $sth->bindParam(2, $auth_amount, PDO::PARAM_INT);
    $sth->execute();
    Mais si je met les deux variable POST, ca ne fonctionne plus :/

  12. #12
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    C'est juste le POST custom qui fait planter ?
    Ou même le auth_amount si tu ne met que lui ?
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Je viens de tester les deux séparément, ca ne fonctionne pas :/

    EDIT : Et si je met des variable fixe, ca ne fonctionne plus...
    Si j'execute seulement le contenue de if($verified) sans la gestion de l'API, ca fonctionne. Donc ca passe plus dans le if($verified) ca veux dire
    Ca fonctionner hier ... :'(

    EDIT 2 : Ah ! Ils sont "En file d'attente" dans l'historique IPN

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Salut
    Le serveur IPN devait être en surcharge hier soir.
    Ce matin je recoi bien les notifications, et après quelques test, c'est donc le 'auth_amount' qui ne fonctionne pas, et j'arrive a récuperer ma variable custom.

  15. #15
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth->bindParam(2, $auth_amount, PDO::PARAM_STR);
    Ton champ en base de données est de quel type ?
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  16. #16
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    J'avais déja essayé et ca ne fonctionne pas :/
    Mon champ était en int, j'ai essayé en varchar, mais pareil :/

  17. #17
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Si je met :
    $auth_amount = (isset($_POST['auth_amount'])) ? "true" : "false";
    ca insère "false" Donc auth_amount existe pas.

    EDIT : C'est un don que la personne fait, peut etre que c'est pour cela. Il n'y a pas d'infos retournées. Je vais essayer avec un bouton achat.
    EDIT 2 : Non, fonctionne pas non plus avec un bouton achat

  18. #18
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Tu peux tester avec var_export sinon, pour voir la liste des paramètre renvoyés par paypal
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  19. #19
    Membre régulier
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Points : 79
    Points
    79
    Par défaut
    Euh c'est une fonction similaire a var_dump je crois non ?
    Je ne vais pas pouvoir voir le resultat, c'est IPN qui charge la page pas moi.

  20. #20
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Sauf si tu enregistres le résultat en base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth->bindParam(1, var_export($_POST, true), PDO::PARAM_STR);
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Valeur retour exe
    Par the big ben 5 dans le forum Delphi
    Réponses: 5
    Dernier message: 21/06/2007, 11h17
  2. [VB.net] Pb valeur retour ExecuteNonQuery
    Par nico10gbb dans le forum Windows Forms
    Réponses: 10
    Dernier message: 18/04/2006, 13h22
  3. PB avec valeur retour array
    Par richton95 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/01/2006, 16h33
  4. Valeur retour de DoModal() ?
    Par loupdeau dans le forum MFC
    Réponses: 2
    Dernier message: 10/06/2005, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo