2015-10-12 3 views
1

J'ai lu et lu les liens et la documentation sur l'API PayPal, mais pour être honnête, je suis assez confus quant à ce que je dois faire.Processus API PayPal

J'essaye de mettre en place une API simple où un utilisateur sur mon site clique sur un bouton qui l'amène à PayPal pour effectuer un paiement. Après avoir effectué le paiement, tout ce que je veux, c'est que l'API PayPal mette à jour un enregistrement sur ma base de données avec la confirmation.

Jusqu'à présent, le processus fonctionne parfaitement dans un sens. J'utilise ce code pour obtenir les utilisateurs d'effectuer leurs paiements:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> 
<input type="hidden" name="cmd" value="_xclick"> 
<input type="hidden" name="business" value="[email protected]"> 
<input type="hidden" name="currency_code" value="USD"> 
<input type="hidden" name="item_name" value="Gift Certificate"> 
<input type="hidden" name="item_number" value="RI001CI3481"> 
<input type="hidden" name="amount" value="313"> 
<input type="hidden" name="return" value="http://mywebsite.com/paypal/thankyou"> 
<input type="submit" value="PayPal"> 
</form> 

Après que l'utilisateur termine la transaction, ils sont retournés à ma page « retour ».

Je reçois un courriel lorsque la transaction est terminée. C'est ainsi que j'ai maintenant un paiement a été fait. Je vais ensuite à PayPal, confirme le paiement, et met à jour mon enregistrement de base de données pour marquer la transaction complète.

Maintenant, que dois-je faire pour que PayPal mette à jour automatiquement ma base de données lorsque ce paiement a été effectué? Si vous pouviez me montrer un document ou un échantillon simple à suivre, ce serait formidable. Comme je l'ai dit, j'ai lu une partie de la documentation disponible en ligne, mais pour quelqu'un comme moi, c'est un peu confus.

Merci, Manny

Répondre

1

Qu'est-ce que vous montrez ici n'utilise l'API. PayPal Standard est juste une méthode de formulaire HTML de base pour configurer les paiements avec PayPal. Il semble que cette partie fonctionne déjà pour vous comme vous en avez besoin, alors c'est très bien.

Pour mettre à jour la base de données, vous souhaitez utiliser Instant Payment Notification (IPN). Ce n'est pas encore techniquement une API, mais c'est un service push qui POSTERa des données de transaction sur n'importe quelle transaction qui frappe votre compte PayPal vers un script d'écoute que vous avez configuré sur votre serveur.

Dans ce script, vous pouvez traiter les données comme vous le souhaitez. Mettez à jour votre base de données, générez des notifications par e-mail personnalisées, accédez à des services Web tiers, etc.

Il existe de bons modèles IPN disponibles pour PHP sur GitHub/Packagist. PayPal fournit également a very basic starter template for IPN.

+0

Merci! Ce que j'avais omis de mentionner (parce que je suis un idiot), c'est que je le fais dans une application Wordpress. L'utilisation de certaines des informations que vous avez présentées m'a permis de faire un IPN via un plug-in WP. Il travaille maintenant exactement comme je le voulais. Merci! – mannyotr

+0

J'aurais aimé le savoir. J'aurais pu vous diriger vers mon plugin gratuit [PayPal IPN for WordPress] (https://wordpress.org/plugins/paypal-ipn/) et vous a probablement permis de gagner un peu de temps. Vous pouvez toujours vouloir jeter un coup d'oeil à cela en fonction de vous êtes dans le développement de votre propre plugin. Il a beaucoup de hooks qui vous permettent de déclencher vos propres fonctions en fonction des types de transactions IPN ou du statut de paiement. –

1

Je pense que IPN est une réponse, mais elle est sujette à des problèmes et peut échouer si vos serveurs ou les serveurs de PayPal ont des problèmes. Beaucoup de personnes qui utilisent IPN n'ont qu'un seul serveur et effectuent la maintenance tard dans la nuit, et IPN peut tenter une notification mais échoue car le serveur est arrêté pour maintenance. IPN échouera simplement silencieusement. Une meilleure alternative est d'utiliser une API comme Express Checkout où vous définissez l'apparence de la page, définissez les détails de txn, etc. avec SetExpressCheckout et amenez le client à la page PayPal pour vérifier, et ensuite ils sont retournés à votre site. À ce stade, vous exécutez DoExpressCheckoutPayment pour terminer la transaction et lorsque votre réponse contient "ACK = Success" vous pouvez appeler GetExpressCheckoutDetails pour obtenir plus de détails que vous ne verriez avec IPN et ne pas avoir à vous inquiéter si vous n'avez pas reçu de réponse de PayPal comme avec IPN. Vous obtiendrez une demande/réponse comme avec n'importe quel appel d'API et vous pourrez enregistrer vos réponses pour pouvoir voir quand les choses vont mal, ainsi que pour obtenir des détails sur la transaction. Souvent, il semble que les gens qui expliquent EC et même PayPal docs montrent d'appeler setEC, puis getEc, puis doEC mais j'appelle habituellement set, do et ensuite obtenir une fois que le txn est réussi. Je suis sûr qu'il y a des scénarios où quelqu'un aurait besoin/veut appeler ensemble, obtenir, faire, mais pour IPN nous nous soucions seulement une fois que le txn est réussi. AUSSI, IPN n'enverra pas sauf s'il y a un txn. Vous pouvez définir votre code pour autoriser les situations où vous recevez une erreur et agir en conséquence, comme lorsque vous obtenez une erreur pour une carte refusée ou similaire.Vous pouvez vous connecter l'erreur, envoyez un email/SMS, connectez-vous à la table DB, etc.

Voici la documentation à intégrer Express Checkout: https://developer.paypal.com/docs/classic/products/express-checkout/ Des tonnes de liens ici depuis CE peut être utilisé pour la commande/auth/capture ou simples ventes ou abonnements, etc.

Voici la liste des paramètres pour SetExpressCheckout: https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/

Voici la liste des paramètres pour DoExpressCheckoutPayment: https://developer.paypal.com/docs/classic/api/merchant/DoExpressCheckoutPayment_API_Operation_NVP/

Voici la liste des paramètres pour GetExpressCheckoutDetails: https://developer.paypal.com/docs/classic/api/merchant/GetExpressCheckoutDetails_API_Operation_NVP/