Il existe plusieurs manières de récupérer les informations de paiement après que celui ci ait eu lieu. Le tout est d'implémenter la solution qui correspond à vos besoins.
Option 1 : POST sur la page de retour
Le principe :
1) Après le paiement, le client clique sur un bouton
2) PayPal envoie les informations de paiement à votre URL sous forme d'un formulaire HTML
3) Vous soumettez un formulaire (au format décrit ci dessous dans le paragraphe IPN) à PayPal. PayPal répond d'un seul message VERIFIED ou INVALID.
4) Si vous recevez le message VERIFIED, c'est que le formulaire que vous avez reçu venait bien de PayPal. Vous pouvez ensuite faire ce que vous voulez de ce formulaire.
Configuration :
- Attribuez une adresse URL à la variable Return dans votre formulaire HTML
<input type="hidden" name="return" value="your_url_here">
- Donnez pour valeur 2 à la variable rm
<input type="hidden" name="rm" value="2">
- Dans Préférences de votre compte PayPal > Préférences de reception des paiementssur le site : Activez le Renvoi automatique pour les paiements sur site marchand : Desactivez le Transfert des données de paiement (PDT)
- Dans Préférences de votre compte PayPal > Préférences de notification instantanéede paiement : Desactivez La NIP (IPN)
Exemple de Script :
http://paypaltech.com/SG2/
Je ne recommande pas cette solution puisqu'elle nécessite que le client clique sur un bouton après le paiement.
Option 2: Transfert des données de paiement (PDT)
Le principe :
1) Après le paiement, le client est automatiquement redirigé vers votre page
2) PayPal envoie une requête GET à votre page. Si votre URL contient une requête, PayPal ajoutera des paramètres à la fin de l'URL. Par exemple :
http://yoursite/yourpage?yourparam=yourvalue&tx=3KK900354R868601V&......
3) Vous soumettez un formulaire par POST à PayPal en insérant dans la requête les éléments suivants : cmd=_notified-synch, la valeur tx du jeton que vous avez reçu et le numéro du jeton d'identité indiqué dans vos Préférences lorsque vous avez activé le Transfert des données de paiement.
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="POST">
<input type="hidden" name="cmd" value="_notify-synch">
<input type="hidden" name="tx" value="3KK900354R868601V">
<input type="hidden" name="at" value="lpeb7DhJWXz5BU43tiarWlo42x5g-Nvv0oJCORuEVsmY9JiRuVUDW2jAHUI">
</form>
4) PayPal répond par un paragraphe avec la mention SUCCESS ou FAIL en tête. Si la mention SUCCESS apparait, les valeurs nom = valeur apparaissent sur des lignes distinctes et se trouvent à la suite de la ligne SUCCESS.
Configuration :
- Précisez une adresse URL dans vos préférences de compte PayPal ou à la variable return dans votre formulaire HTML.
<input type="hidden" name="return" value="your_pdt_url_here">
- Dans Préférences de votre compte PayPal > Préférences de reception des paiements sur le site :
Activez le Renvoi automatique pour les paiements sur site marchand
Activez le Transfert des données de paiement (PDT)
- Dans Préférences de votre compte PayPal > Préférences de notification instantanée de paiement :
Desactivez La NIP (IPN)
Exemple de script :
http://paypaltech.com/PDTGen/ (en anglais)
Cette approche est mieux que la première car le client n'a pas besoin de cliquer sur un bouton pour revenir sur votre site. Cependant, rien ne garantit que le client ne va pas fermer son navigateur et ainsi ne pas emprunter le Renvoi automatique.
Option 3 : Notification Instantannée des Paiements (NIP)
Le principe :
1) Après le paiement, le client est automatiquement redirigé vers votre page (variable return)
2) PayPal n'envoie aucune information de paiement à ce moment là.
3) De manière asynchrone, vous recevez un formulaire POST de PayPal à une adresse URL différente (variable notify_url)
4) Vous renvoyez un formulaire contenant cmd=_notify-validate et tous les champs du formulaire POST que PayPal vous a envoyé. PayPal vous répond VERIFIED ou INVALID.
5) Si vous recevez le message VERIFIED, c'est que le formulaire que vous avez reçu venait bien de PayPal. Vous pouvez ensuite faire ce que vous voulez de ce formulaire.
Configuration :
- Précisez une adresse URL de retour automatique dans vos Préférences de compte PayPal ou à la variable return de votre formulaire HTML. Il s'agit d'une page standard où vous mettrez, par exemple un message de remerciement destiné au client.
<input type="hidden" name="return" value="your_return_url_here">
- Précisez une adresse URL NIP dans vos Préférences de compte PayPal ou à la variable notify_url de votre formulaire HTML. C'est là où arriveront les informations de paiement que PayPal vous everra.
<input type="hidden" name="notify_url" value="your_ipn_url_here">
- Dans Préférences de votre compte PayPal > Préférences de reception des paiements sur le site :
Activez le Renvoi automatique pour les paiements sur site marchand
Désactivez le Transfert des données de paiement (PDT)
- Dans Préférences de votre compte PayPal > Préférences de notification instantanée de paiement :
Activez La NIP (IPN)
Exemple de script :
http://paypaltech.com/SG2/
Je recommande cette option qui est plus fiable que les deux précédentes dans la mesure où vous récupérer les informations de paiement même si le client ne revient par sur votre site. Le seul problème de cette implémentation est que la notification est asynchrone. Cela veut dire qu'il peut s'écouler un délai entre le paiement et la reception des informations de paiement.
Option 4 : IPN + PDT
Le principe :
Vous implémentez PDT pour récupérer la majorité de vos informations de paiement. Vous implémentez NIP comme assurance contre les clients qui ne reviendront pas sur votre site. Vous ne perdez ainsi aucune information.
C'est la meilleure solution car IPN et PDT sont vraiment complémentaires.