Intégration paypal

Profil introuvable

Profil introuvable Le 5 juillet 2018 à 00:06 (Édité le 5 juillet 2018 à 00:07)

Re:

Moi je vous l'ai dit les gars...

@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.
Ce sera un problème de moins... Et comme ça tu pourras avoir accès logiquement. Sinon vérifie aussi que tu as la dernière mise à jour de Firefox, on sait jamais.

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.
Je t'assure qu'Avast est un rogue en lui même, c'est le comportement typique d'un rogue ça : proposer le nettoyage ==> ah il faut payer, ah Windows bug, ah une DLL manquante... Ah Ah bazardé... Bref je m'arrête la.
clermontois

clermontois Le 5 juillet 2018 à 11:21

Merci Jerem pour ces informations  
Profil introuvable

Profil introuvable Le 5 juillet 2018 à 22:35

Re:

@clermontois, il n'y a pas de quoi ! 😉
jaroc

jaroc Le 11 juillet 2018 à 01:18 (Édité le 11 juillet 2018 à 01:21)

Bonjour,
tout va pour le mieux, voici un peu du retour de mon expérience.
dans le tuto de primfx, il y certainement déjà tout mais bon...

L’appel à paypal est très sensible et au moindre problème c'est l’échec.😈
Les appels php (paypal_create_payment et paypal_execute_payment) et sont asynchrone et le débug n'est pas facile, car tout est dans le serveur sans console.

Sous localhost si votre serveur n'offre pas un accès SSL (https) avec les bons niveaux, ce na marchera pas.
Paypal exige de bon niveaux de sécurité.😡

Ce pendant, beaucoup de choses peuvent être tester avec un serveur XAMPP standard (http:).
On peut pratiquement débugger le js dans payapl.php, le paypal_create_payment.php, la première réponse dans paypal_execute_payment.php puis la gestion des erreurs.
On fait le max puis on migre le tout sur son serveur qui lui offre le https et en principe, il y aura peu de problèmes.😉

J'ai eu un problème stupide avec la déclaration des var CREATE_URL = '/cepny/paypal/paypal_create_payment.php';
en localhost je suis sous un directoire cepny dans la production je suis directement en root!
Comment j'ai observé ce problème... en enregistrant l'écran de la console avec mon portable ! ça va très vite...😊

Parfois, comme pour moi, le fichier config.php peut contenir tous vos fonctions récurrentes  et définitions de votre projet c'est important et en période de débug, des messages peuvent apparaitre, cela est  à proscrire dans les appels asynchrones.  Le mieux est d'avoir un PayPalconfig.php qui contient juste le stricte nécessaire.
 
Pour tester le php paypal_create_payment.php le plus simple est d'adresser directement ce php http://localhost/.../paypal_create_payment.php ,
La on peut valider facilement son code. (paypal ne fait qu'une réponse et celle-ci est visible)

Pour tester le paypal_execute_payment.php la on est aveugle, le process est async et dans le serveur. De plus paypal fait deux réponses.
echo js alert,  js console ne sont pas disponible.😼

Comment j'ai fait :  toute la partie d'écriture dans la base de données est testé dans un autre php. (On est parfait, il n'y a jamais d'erreur ....
oui 😹 bien sur)

Pour le reste du débug, mon astuce est de créer une base de données "assyncdebug" d'y ajouter un champ "payalp_dump" de type char dimension 10000 !(dixmille). Dans le php j'écris dans ce champs les états ou tout ce qui peut vous aider. 
Via mysql la lecture du champ est facile.

par exemple
Pour enregistrer le premier retour de paypal dans le $_POST après le if (!empty($_POST['paymentID']) .....
   open_bdd();                    // ouvrir le base de donnée fonction présente dans paypalconfig.php
   $dump_post = print_r($_POST,true); 
   $dump_tobdd = $bdd->prepare('INSERT INTO assyncdebug (paypal_dump) VALUE (:paypal_dump)');
   $dump_tobdd->execute(array("paypal_dump" =>$dump_post));
Pour enregistrer le second retour de paypal après le if(payment)
   $dump_post = print_r($paypal_response,true); 
   $dump_tobdd = $bdd->prepare('INSERT INTOassyncdebug (paypal_dump) VALUE (:paypal_dump)');
  $dump_tobdd->execute(array("paypal_dump" =>$dump_post))
Là c'est super, on a le format et toute la réponse complète de paypal à cette commande, tout est facilement exploitables sans devoir piocher dans la doc paypal.😇


Dans mon application j'appel le paypal.php via un redirect qui a dans le $_GET[param] un id nommé imageId quand je quitte le js de payapal.php  (succès ou erreur) je veux garder ce id plus quelques infos.
pour ce faire, j'ai ajouté dans le script deux  fonctions :
function ppRedirect(url,imageId,error,code){
   window.location.assign(' '+url+ '?id='+imageId+'&er='+error+'&co='+code+' ');
}
function pp_GET(param) {
// source https://www.creativejuiz.fr/blog/javascript/recuperer-parametres-get-url-javascript
   var vars = {};
   window.location.href.replace( location.hash, '' ).replace( 
      /[?&]+([^=&]+)=?([^&]*)?/gi, // regexp
      function( m, key, value ) { // callback
         vars[key] = value !== undefined ? value : '';
      }
   );
   if ( param ) {   return vars[param] ? vars[param] : null; }
   return vars;
}
Dans toute les sorties du js, en cas d'erreur ou de succès j'ai remplacé les 'alert' et 'console.log' par un redirectory vers deux php : "success" ou "échec" ou je traite les infos id, er, co. il y a 5 cas ( un succès (ben oui 😜), quatre erreurs)
j'ai donc dans payment: function() {, onAuthorize: function(data, actions) {, onCancel: function(data, actions) {,  onError: function(err) {
le code
var js_imageId = pp_GET("param");    //lecture de l'id
ppRedirect("_supplierPaySuccess.php ",js_imageId,"none","1"); // les indices code vont de 1 à 5
le mot "none" ne sert a rien sauf dans onError:fucntion(err){
ou le code est
var js_imageId = pp_GET("param"); 
ppRedirect("_supplierPayEchec.php",js_imageId,err,"5"); 
_supplierPayEchec.php ou _supplierPaySuccess.php sont mes deux php de traitement du résultat de la commande et grâce à ce redirect de mon id "imageId" je peux faire un lien.
Cependant je ne sais pas,si pour des niveaux de sécurité, il faut encoder les paramètres id,er,co ? Je ne le pense pas car ces infos ne sont pas critique. 

Dans le cas le php _supplierPayEchec.php pour l'erreur 5 j'affiche en plus le début du long message err pour le client.
 
ma technique n'est certainement pas la solution, mais si cela peut aider ....

Reste maintenant à passer en paypal réel ... (à suivre).
clermontois

clermontois Le 18 juillet 2018 à 11:17 (Édité le 18 juillet 2018 à 20:21)

Salut, pour moi ca fonctionne très bien en mode sandbox mais pas en production, dans la console j'ai ce message "Authentication failed due to invalid authentication credentials or a missing Authorization header." pourtant j'ai bien copié/coller les LIVE API CREDENTIALS et j'ai bien vérifié evn est sur production et non sandbox, tjrs dans la console un deuxième message d'erreur ppxo_no_token_passed_to_payment 
jaroc

jaroc Le 2 août 2018 à 11:21

Bonjour.  Retour de vacance, ce msg « ppxo_no_token_passed_to_payment” a lieu quand le mot ID et le mot secret de PayPal ne sont pas correct. Donc les LIVE API CREDENTIALS ne sont pas reconnus.  😩 Régénérer la clé secrète est peut-être une action à faire.
La question suivante est :  pourquoi ce rejet de l’ID? 😇
Bousouf

Bousouf Le 2 septembre 2018 à 02:02

Bonsoir j'ai le même probleme meme lorsque j'ai reproduis vos réussite j'ignore pourquoi s'il vous plait aidez moi 😀
Profil introuvable

Profil introuvable Le 3 septembre 2018 à 01:38

Re:

@Bousouf, comme l'a dit Boris (ici), il modifiera le tuto quand il aura le temps...
vinou

vinou Le 16 mai 2020 à 18:49 (Édité le 16 mai 2020 à 18:50)

Pour ceux que ça pourrait encore intéresser, pour obtenir un token valide j'ai dû modifier la requête du fichier paypal_create_payment.php :

$insert = $bdd->prepare('INSERT INTO paiements (payment_id, payment_status, payment_amount, payment_currency, payment_date) VALUES (?, ?, ?, ?, ?)');
         $insert->execute(array($paypal_response->id, $paypal_response->state, $paypal_response->transactions[0]->amount->total, $paypal_response->transactions[0]->amount->currency, date('Y-m-d H:i:s')));
         // $insert_ok = $insert->fetch();

       if($insert) {
          $success = 1;
          $msg = "";
       }
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte