Intégration paypal

widi70

widi70 Le 30 mai 2018 à 22:29 (Édité le 25 janvier 2019 à 17:54)

Bonjour,
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

clermontois Le 8 juin 2018 à 12:12 (Édité le 8 juin 2018 à 12:13)

Salut,
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

Profil introuvable Le 9 juin 2018 à 17:42

Hello @widi70 et @clermontois,

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

clermontois Le 9 juin 2018 à 21:39

Salut Jerem je vais le contacter via son email, j’espère qu'on aura une réponse de ca part et pourquoi pas les fichiers sources de ce tuto
Profil introuvable

Profil introuvable Le 10 juin 2018 à 17:59

Re:

@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

PrimFX Le 10 juin 2018 à 20:15

Bonjour bonjour 😀

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

Amisoz Le 10 juin 2018 à 20:38

Du coup, voici la solution :
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

clermontois Le 10 juin 2018 à 21:26

Super PRIMFX on attend avec impatience la mise à jour de ton tuto @ bientôt  😉
clermontois

clermontois Le 11 juin 2018 à 18:55 (Édité le 11 juin 2018 à 18:56)

Bon pour ma part ça ne fonctionne tjrs pas, j’ai le même message d’erreur…. J’ai supprimé les colonnes en trop dans la requête.
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

clermontois Le 12 juin 2018 à 17:14

Salut,
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

rossi56000 Le 17 juin 2018 à 11:24

Bonjour à tous et Merci pour cet excellent cours.
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

clermontois Le 17 juin 2018 à 12:11

Salut rossi en gros c'est un système de panier, je crois que c'est la suite du tuto de PrimFx qu'on attends avec impatience 😀
rossi56000

rossi56000 Le 17 juin 2018 à 18:03

Cool. Merci. Mais comme je suis impatient, il fallait que je demande  😁
freelance28

freelance28 Le 23 juin 2018 à 09:26

Hello et merci pour ce super tuto

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

freelance28 Le 25 juin 2018 à 10:08

J'ai finalement trouvé. Ca venait de mon hébergement web qui avait la version 0.9 de openssl alors qu'il faut la 1.0 minimum
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

freelance28 Le 25 juin 2018 à 11:09

Parlé un peu trop vite...
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"
La fonction de création de paiement fonctionne puisque l'enregistrement se crée bien dans la base de données mais erreur renvoyée par paypal :
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

jaroc Le 28 juin 2018 à 01:29 (Édité le 28 juin 2018 à 13:11)

Bonjour,
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

clermontois Le 28 juin 2018 à 19:24

Salut,
apparemment, plusieurs personnes ont des bugs et c'est aléatoire... on attends l'intervention de Boris.
jaroc

jaroc Le 29 juin 2018 à 17:11

Oui, qui plus est,
à 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

Profil introuvable Le 29 juin 2018 à 18:22 (Édité le 29 juin 2018 à 18:25)

Re:

@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

jaroc Le 3 juillet 2018 à 23:08

Checkout.js Size ?
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

clermontois Le 3 juillet 2018 à 23:34

mais pourquoi le télécharger au lieu d'utiliser https://www.paypalobjects.com/api/checkout.js ?
jaroc

jaroc Le 4 juillet 2018 à 09:06

ben pour moi
<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

clermontois Le 4 juillet 2018 à 10:27

d'accord j'ai rien dit alors ^^ sinon pour AVAST t'en ai ou avec cette histoire de blocage ?
jaroc

jaroc Le 4 juillet 2018 à 11:32

Localement je  suis tjrs bloqué. sur d'autre pc avec Avast ça marche. même en désactivant les agent Avast, firefox refuse, mais j'ai edge qui lui marche.
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.