Bonjour à tous,
Tout d'abord je tiens à préciser que je ne suis pas encore très habitué à manipuler des en têtes http donc toute aide est la bienvenue
Voila mon soucis :
Je développe un site e-commerce, sur la page de récapitulatif d'une commande à envoyer, je souhaite proposer à l'utilisateur plusieurs méthodes de paiement :chèque, livraison, Paiement en ligne classique ET via Paypal.
Le mode d'intégration de Paypal, comme vous devez surement le savoir, se fait via un formulaire listant toute une série de champs <input type="hidden" ...> et du bouton submit redirigeant vers leur serveur de paiement.
Mon problème viens du fait que, souhaitant proposer différents choix de paiement à mon client, je ne souhaite pas afficher directement le formulaire paypal dans ma page, mais plutôt rediriger l'utilisateur sur le serveur de paiement paypal avec une liste de données POST associées à la redirection dans le cas ou le client a coché la case Paypal.
J'ai d'abord essayé une solution trouvée sur le site de php.net sans succès. Plutôt que de me rediriger sur le serveur, une boîte de téléchargement s'ouvrait me demandant avec quel programme je voulais enregistrer un fichier avec un nom très spécial.
Le code était le suivant :
Après plusieurs recherches sur la toile je n'ai trouvé aucune solution pour effectuer une redirection simple chargée de données POST, par contre j'ai vu beaucoup de pistes proposant d'utiliser l'extension cURL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 if($macommande->mode_paiement == 'PAYPAL') { /* Redirection sur le serveur PAYPAL de test de paiement */ header("POST /fr/cgi-bin/webscr HTTP/1.0\r\n" ); header("Host: www.sandbox.paypal.com\r\n" ); header("Content-type: application/x-www-form-urlencoded\r\n" ); // $request : liste des données post à envoyer au serveur paypal sous la forme mavar=$mavar&mavar2=$mavar2 etc ... header("Content-length: " . strlen($request) . "\r\n" ); header("Connection: close\r\n\r\n" ); header($request); exit; }
En adaptant mon code pour cURL j'obtiens :
Ca fonctionne beaucoup mieux et me redirige bien vers le serveur, par contre l'URL de la barre d'adresse ne change pas et reste celle de la page de validation de paiement sur ma boutique, de plus, je dois avoir loupé quelque chose au niveau des cookies, puisqu'une fois redirigé sur le serveur paypal, celui me demande de me connecter préalablement à mon compte test sur developer.paypal.com (obligatoire pour effectuer les tests de paiement), alors que j'y suis déjà connecté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 if($macommande->mode_paiement == 'PAYPAL') { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, "https://www.sandbox.paypal.com/fr/cgi-bin/webscr"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $request); curl_exec($ch); curl_close($ch); exit; }
J'ai donc fait vraisemblablement une fausse manip que n'arrive pas à cerner, c'est pourquoi je m'en remet à vous...
Si quelqu'un peut m'aider, je lui en remercie d'avance !
Partager