Intégration paypal
- Accueil
- Forum
- Programmation
- PHP
- Intégration paypal
Ce topic est suivi par : widi70, PrimFX, clermontois, rossi56000, freelance28, jaroc
widi70 Le 30 mai 2018 à 22:29 (Édité le 25 janvier 2019 à 17:54)
je suis le tuto pour l'intégration de paypal : https://www.primfx.com/integrer-paypal-express-checkout-son-site-php-496/tests-systeme-et-passage-live/
J'en suis à "Tests du système et passage en Live" -> et le paiement ne fonctionne pas.....
j'ai tout repris le code mais je ne comprends pas trop....
J'obtiens le message suivant :
Paiement annulé : une erreur est survenue. Merci de bien vouloir réessayer ultérieurement.
Et dans la console j'ai ceci :
ppxo_no_token_passed_to_payment {timestamp: 1527713209883, windowID: "79c096fd25", pageID: "435158ed25", prev_corr_ids: "", referer: "www.site.fr", …
Uncaught Error: No handler found for post message ack for message: postrobot_method from http://www.site.fr in https://www.sandbox.paypal.com/webapps/hermes/button
at Object.postrobot_message_ack (types.js:22)
at receiveMessage (index.js:112)
at messageListener (index.js:138)
Je ne comprends pas ce que ça signifie....
Merci d'avance beaucoup de votre aide
clermontois Le 8 juin 2018 à 12:12 (Édité le 8 juin 2018 à 12:13)
j'ai la même erreur ca ne fonctionne pas j'ai repris le tuto de A a Z 8 fois en me disant que c'est peut être moi j'ai loupé un truc mais tjrs la meme erreur je commence a croire qu'il y a une erreur dans le tuto
Profil introuvable Le 9 juin 2018 à 17:42 (Édité le 1 janvier 1970 à 01:00)
Personellement j'ai pas testé le tuto donc je peux pas vous dire s'il y a une erreur, le mieux c'est de demander à @PrimFX sur Twitter. 😉
clermontois Le 9 juin 2018 à 21:39 (Édité le 1 janvier 1970 à 01:00)
Profil introuvable Le 10 juin 2018 à 17:59 (Édité le 1 janvier 1970 à 01:00)
@clermontois, je pense qu'il est beaucoup plus actif sur Facebook et Twitter. Tu peux obtenir les réseaux sociaux qu'il utilise en cliquant ici. 😉
PrimFX Le 10 juin 2018 à 20:15 (Édité le 1 janvier 1970 à 01:00)
J'ai reçu l'email que l'un d'entre vous (ou bien quelqu'un d'autre qui rencontrait le même soucis) m'a envoyé hier dans la soirée.
Je pense que le problème vient du fait que j'ai tenté dans une partie du tuto de simplifier l'architecture de la table de paiements en utilisant juste certains champs "essentiels" et que j'en ai rajouté dans le traitement de l'exécution du paiement (comme le "paypal_payer_id" ou encore le "nom paypal" ou "prénom paypal" du client). Je vous invite donc à suivre cette piste de votre côté, le problème se trouvant très certainement au niveau des requêtes d'insertions / mises à jour des paiements.
Je suis malheureusement très pris par le temps en ce moment donc je ne peux pas vous donner de réponse plus détaillée, mais je ferai en sorte que le tuto sur l'intégration de PayPal soit mis à jour en fin de semaine et je vous ferai un petit post ici pour vous informer de la màj 😉
A+ et merci pour vos retours
Amisoz Le 10 juin 2018 à 20:38 (Édité le 1 janvier 1970 à 01:00)
Sur la requête du paypal_create_payment.php, il faut la remplacer comme ceci :
$insert = $bdd->prepare("INSERT INTO paiements (payment_id, payment_status, payment_amount, payment_currency, payment_date) VALUES(:payment_id, 😋ayment_status, 😋ayment_amount, 😋ayment_currency, NOW())");
Et, dans la base de donnée, passer le payer_email en NULL. Puisqu'il est update par la suite, et pas défini directement. clermontois Le 10 juin 2018 à 21:26 (Édité le 1 janvier 1970 à 01:00)
clermontois Le 11 juin 2018 à 18:55 (Édité le 11 juin 2018 à 18:56)
J’ai fait un teste en exécutant la requête en dehors du script, pour vérifier s’il
n’y a pas d’erreur a ce niveau la et pas de problème, la requête s’est
parfaitement exécuté donc même en corrigeant la requête ça ne fonctionne pas !
Voici la correction de la requête :
$insert = $bdd->prepare("INSERT INTO paiements (payment_id, payment_status, payment_amount, payment_currency, payment_date, payer_email) VALUES(:payment_id, 😋ayment_status, 😋ayment_amount, 😋ayment_currency, NOW(), NULL)");
clermontois Le 12 juin 2018 à 17:14 (Édité le 1 janvier 1970 à 01:00)
Finalement j'ai réussi a le faire fonctionner, j'ai mis tous les fichiers dans un sous répertoire nommé Paypal du coup le script n'arrivait pas a accéder a paypal_create_payment.php et paypal_execute_payment.php .. chemin erroné, en faisant comme ceci ca fonctionne
var CREATE_URL = '/paypal/php/paypal_create_payment.php';
var EXECUTE_URL = '/paypal/php/paypal_execute_payment.php';
rossi56000 Le 17 juin 2018 à 11:24 (Édité le 1 janvier 1970 à 01:00)
Je débute en PHP et je ne sais pas comment faire pour payer plusieurs articles différents de ma bdd.
Et ensuite quand le paiement est validé vider mon panier .
Pourriez vous me donner vos astuces ?
Merci d'avance.
clermontois Le 17 juin 2018 à 12:11 (Édité le 1 janvier 1970 à 01:00)
rossi56000 Le 17 juin 2018 à 18:03 (Édité le 1 janvier 1970 à 01:00)
freelance28 Le 23 juin 2018 à 09:26 (Édité le 1 janvier 1970 à 01:00)
J'ai réussi à tout faire fonctionner en local sur mon ordi. Par contre, très mauvaise surprise quand ce matin, j'uploade tout ça sur mon FTP, j'obtiens une erreur ! En fouillant encore et encore, je viens de voir que c'est en fait la fonction generateAccessToken() du fichier PayPalPayment.php qui ne renvoit rien ! Plus précisément, $result = curl_exec($ch); renvoit false !
Ce qui est très étonnant c'est que ça marche nickel si je lance ça de mon localhost et là, sur mon hébergement PRO de chez OVH, ça ne marche pas.
Une idée merveilleuse à suggérer ??
Merci d'avance !
freelance28 Le 25 juin 2018 à 10:08 (Édité le 1 janvier 1970 à 01:00)
Pour ceux qui cherchent, chez OVH, il faut passer en STABLE et pas en LEGACY qui est celle par défaut pour la version 5.6 de PHP.
freelance28 Le 25 juin 2018 à 11:09 (Édité le 1 janvier 1970 à 01:00)
En local et en ligne, cela fonctionne bien dans l'environnement SANDBOX, par contre ça ne fonctionne pas en LIVE... J'ai pourtant bien fait ceci :
- Modifier dans le code côté client le paramètre env: 'sandbox' par env: 'production'
- Modifier les Credentials ("Client ID" et "Secret") dans le fichier "php/paypal_create_payment.php"
ppxo_no_token_passed_to_payment {timestamp: 1529917689367, windowID: "079b403a03", pageID: "f5eaa97dae", prev_corr_ids: "", referer: "localhost", …}country: "US"env: "production"host: "localhost"lang: "en"pageID: "f5eaa97dae"path: "/cast/scripts/paiement-paypal/"prev_corr_ids: ""referer: "localhost"timestamp: 1529917689367uid: "7322b03285_ga4tumbyhiydc"ver: "4.0.204"windowID: "079b403a03"__proto__: Object
Une idée svppppp???
jaroc Le 28 juin 2018 à 01:29 (Édité le 28 juin 2018 à 13:11)
Bravo pour le tuto. J’ai cependant plusieurs soucis, le premier je le présente dans ce message :
Je suis sur un serveur chez infomaniak et j’ai repris le code proposé à la lettre dans ce tuto.
Quand je presse le bouton, tout semble OK, la base de données est bien alimentée avec un : status created.
Je réponds à Paypal comme buyer et là il y a un message d’alert : « Undefined »
En fait paypal_execute_payment est en echec (php) et le json n’est pas crée donc pas de data.msg
Je ne suis pas expert et ne sais pas débugger du PHP appelé en asynchrone. (Console ou autre)
Pour faire un debug j’y vais au pas à pas et envoient les infos la base de données.
Jjavais posté ce message hier mais j'ai refais le test ce matin et le comportement est différent mais toujours bancale. comme quoi il y a un problème de timing quelque part.
Le problème est soit sur la base de donnée ou sandbox.
Le fait de mettre un délai (sleep(2)) ou un appel à la bdd en écrivant n'importe quoi, avant le if($payment) débloque la situation.
bien sur, l'open bdd est placé avant .
Le code fait
$payment = $payment->fetch();
$update_payment = $bdd->prepare('UPDATE paiements SET payment_status = ?, payer_email = ? WHERE payment_id = ?');
$update_payment->execute(array($payerID, $paymentID, $paymentID));
if ($payment) {
Et là miracle, tout est OK. (Paiement, validation la totale)
Cela dit parfois, j’ai un message « paiement approuvé » mais la fenêtre sandbox reste ouverte avec l’anneau traitement en boucle ! Si je la tue il y a échec de la transaction et dans la console j’ai
Comment est ce que je peux trouver la cause ?
il y a donc deux piste, le besoin de d''accès, délai et le fait que la sandbox reste avec une fenêtre ouverte après la transaction.
Est ce l’accès de la bdd qui génère un message ? que je ne peux voir ?
Merci pour votre aide
clermontois Le 28 juin 2018 à 19:24 (Édité le 1 janvier 1970 à 01:00)
apparemment, plusieurs personnes ont des bugs et c'est aléatoire... on attends l'intervention de Boris.
jaroc Le 29 juin 2018 à 17:11 (Édité le 1 janvier 1970 à 01:00)
à partir de mon pc Windows10 avec l'antivirus AVAST J’ai testé le codesur mon site en et j’ai réussi à avoir de la part d' AVAST.
ceci :
Il doit y avoir des appels que l’agent AVAST trouve, à tort sans doute, suspicieux dans PC (client) et cette info est reportée chez AVAST,
Ce rapport bloque mon site au niveau mondial (pour les utilisateur AVAST) .
J'ai très confiance à AVAST, et je les ai contacté pour débloquer cette fausse alerte.
J’ai fait de nouveau pensant avoir trouvé la cause et maintenant AVAST local (dans mon PC) bloque tjrs le site,
sauf que ce blocage n’est plus reporté mondialement.
Il y a comme qui dirait quelque chose qui ne va pas.
Profil introuvable Le 29 juin 2018 à 18:22 (Édité le 29 juin 2018 à 18:25)
@jaroc, Désolé de d'apprendre ça mais Avast n'est pas un antivirus... Depuis que j'ai lu cet article, j'ai maintenant su qu'Avast avait un comportement de rogues. D'ailleurs j'ai toujours su qu'Avast n'était pas fiable et que ça toujours été une usine à gaz et antivirus qui d'après lui bloque les menaces alors que j'en trouve un paquets lors d'une désinfection d'un PC à un de mes clients... Je te conseillerais Avira car ils sont largement mieux qu'Avast mais le problème c'est qu'il installe trop de leur produit lors de l'installation de celui-ci... Alors c'est maintenant que je conseille d'installer Kaspersky en version gratuite (oui une version gratuite existe) (Voir cet article). Je te conseillerais donc de désinstaller Avast sur ton PC et de laisser place à Kaspersky, un antivirus plus sérieux que cette daube. 😉
jaroc Le 3 juillet 2018 à 23:08 (Édité le 1 janvier 1970 à 01:00)
bonsoir, je progresse pas mal dans la bonne direction.
Un point annexe; La source checkout.js à télécharger fait dans les 1.5Mbytes, ce qui est lourd pour les réseaux à faible vitesse.
Sous GitHub des personnes beaucoup plus qualifiées que moi suggèrent d’utiliser mini_checkout qui ne fait que 98 Kb.
Est ce que quelqu'un a une expérience ou l'utilise dans cette intégration PayPal ?
Merci
clermontois Le 3 juillet 2018 à 23:34 (Édité le 1 janvier 1970 à 01:00)
jaroc Le 4 juillet 2018 à 09:06 (Édité le 1 janvier 1970 à 01:00)
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
signifie que checkout.js est téléchargé dans le DOM au passage de cette ligne de code. Cette version est bien sur chez paypal, avoir sa copie locale n'est pas la solution. clermontois Le 4 juillet 2018 à 10:27 (Édité le 1 janvier 1970 à 01:00)
jaroc Le 4 juillet 2018 à 11:32 (Édité le 1 janvier 1970 à 01:00)
Je continue mon implémentation puis je contacterai AVAST pour résoudre cela.
PS: comme Jerem971 j'ai Avast qui me propose de nettoyer mon PC pour récupérer 20 Gb ! j'ai des gros doutes, et je n'en ferai rien.