Mise en place d'un paiement avec PayPal

Résolu/Fermé
Meili Messages postés 15 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 17 octobre 2012 - 16 oct. 2012 à 20:18
Meili Messages postés 15 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 17 octobre 2012 - 17 oct. 2012 à 15:50
Bonjour,



J'essaie désespérément de mettre en place un paiement rapide PayPal.

Tout semblait se passer correctement sur la "sandbox" mais lors de la mise en ligne je me suis aperçue qu'en fait le paiement n'était pas du tout pris en compte.

Comme je souhaite un paiement rapide et sans confirmation, le service PayPal m'a indiqué que je devais ajouter : useraction=commit dans l'adresse url où j'envoie ma requête mais malgré cette modification rien n'a changé.

Il est certain que je dois faire quelque chose de faux, mais j'ai beau tourner mon code dans tous les sens je ne trouve pas.

Le code que j'ai utilisé est totalement calqué sur le tutoriel que j'ai trouvé sur le site du zéro. Je l'ai juste agrémenté de mes traitements de données personnels.

Ci-dessous, j'ai mis le code de mes 4 fichiers concernés. Si quelqu'un arrivait à me dire ce que je dois corriger, je lui en serait vraiment plus que reconnaissante.

Merci d'avance.


<?php
//Fichier : fonction_api.php
//************************** 
$serveur_paypal = "https://www.paypal.com/webscr&cmd=_express-checkout&useraction=commit&token=";

	function construit_url_paypal()
  {
	$api_paypal = 'https://api-3t.paypal.com/nvp?';
	$user = 'mon_user';
	$pass = 'mon_mdp';
	$signature = 'ma_signature';	
	$version = 56.0;
	$api_paypal = $api_paypal.'VERSION='.$version.'&USER='.$user.'&PWD='.$pass.'&SIGNATURE='.$signature;
	return 	$api_paypal;
  }  
  function recup_param_paypal($resultat_paypal)
  {
	$liste_parametres = explode("&",$resultat_paypal);
	foreach($liste_parametres as $param_paypal)
	{
		list($nom, $valeur) = explode("=", $param_paypal);
		$liste_param_paypal[$nom]=urldecode($valeur);
	}
	return $liste_param_paypal;
  }
?>

<?
//Fichier : pmt.php
//*****************
include("fonction_api.php");
$requete = construit_url_paypal();
$requete = $requete."&METHOD=SetExpressCheckout".
			"&CANCELURL=".urlencode("http://www.mon_site.ch/cancel2.php").
			"&RETURNURL=".urlencode("http://www.mon_site.ch/return.php?action=$action").
			"&AMT=10.00".
			"&CURRENCYCODE=CHF".
			"&DESC=".urlencode("$texte_paypal").
			"&LOCALECODE=CH".
			"&HDRIMG=".urlencode("http://www.mon_site.ch/img/MonImage_paypal.png");
$ch = curl_init($requete);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$resultat_paypal = curl_exec($ch);

if (!$resultat_paypal) {
	echo "<p>Erreur</p><p>".curl_error($ch)."</p>";
} else {
	$liste_param_paypal = recup_param_paypal($resultat_paypal);
	if ($liste_param_paypal['ACK'] == 'Success') {
		header("Location: ".$serveur_paypal.$liste_param_paypal['TOKEN']);
		exit();
	} else	{
		echo "<p>Erreur de communication avec le serveur PayPal.<br />".$liste_param_paypal['L_SHORTMESSAGE0']."<br />".$liste_param_paypal['L_LONGMESSAGE0']."</p>";
	}		
}
curl_close($ch);
?>

<?php
//Fichier : return.php
//********************
include("fonction_api.php");
$requete = construit_url_paypal();
$requete = $requete."&METHOD=DoExpressCheckoutPayment".
			"&TOKEN=".htmlentities($_GET['token'], ENT_QUOTES).
			"&AMT=10.0".
			"&CURRENCYCODE=CHF".
			"&PayerID=".htmlentities($_GET['PayerID'], ENT_QUOTES).
			"&PAYMENTACTION=sale";
$ch = curl_init($requete);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$resultat_paypal = curl_exec($ch);
if (!$resultat_paypal)
	{echo "<p>Erreur</p><p>".curl_error($ch)."</p>";
} else {
	$liste_param_paypal = recup_param_paypal($resultat_paypal);
	if ($liste_param_paypal['ACK'] == 'Success')
	{
		include("merci2.php");
	} else {
		echo "<p>Erreur de communication avec le serveur PayPal.<br />".$liste_param_paypal['L_SHORTMESSAGE0']."<br />".$liste_param_paypal['L_LONGMESSAGE0']."</p>";
	}
}
curl_close($ch);
?>

<?php
//Fichier : merci2.php
//********************
include("pmt/fonction_api.php");
$requete = construit_url_paypal();
$requete = $requete."&METHOD=GetExpressCheckoutDetails"."&TOKEN=".htmlentities($_GET['token'], ENT_QUOTES);
$ch = curl_init($requete);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$resultat_paypal = curl_exec($ch);
if (!$resultat_paypal)	{
	echo "<p>Erreur</p><p>".curl_error($ch)."</p>";
} else {
	$liste_param_paypal = recup_param_paypal($resultat_paypal);
	$token=$liste_param_paypal['TOKEN'];
	$clt=$_SESSION['user_id'];
	//traitement de l'information		
}
curl_close($ch);
?>
A voir également:

1 réponse

Meili Messages postés 15 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 17 octobre 2012
17 oct. 2012 à 15:50
Finalement j'ai trouvé mon erreur qui était ailleurs (redirection de fichiers).

Je clôture donc mon sujet.
0