2010-05-19 7 views
42

Paypal me renvoie avec succès à l'url de retour que je spécifie lors de la création acheter bouton maintenant. Mais, maintenant je suis confus. Comment puis-je récupérer les détails de la transaction sur Paypal? Et je veux également définir des valeurs de base de données sur l'URL de retour. Mais j'ai peur que si mon utilisateur sans payer à paypal va à cette URL, alors il deviendra aussi membre premium. Comment puis-je sécuriser cela?Prévenir l'URL de Paypal

Répondre

75

PayPal renvoie les données sur votre site via ce qu'elles appellent IPN. C'est vraiment juste un rappel à une URL que vous spécifiez. Vous pouvez définir cette URL via la variable notify_url que vous pouvez envoyer à PayPal.

Exemple:

<input name="notify_url" value="http://yourdomain.com/notify_url.php" type="hidden"> 

Le notify_url.php dans l'exemple ci-dessus reçoit des variables POST de PayPal lorsque le paiement est terminé, même si le client ne retourne jamais à votre site Web.

Certains des importants variables retourné par PayPal est:

  • mc_gross
  • facture
  • settle_amount
  • protection_eligibility
  • address_status
  • payer_id
  • taxe
  • address_street
  • payment_date
  • payment_status
  • charset
  • address_zip
  • mc_shipping
  • mc_handling
  • first_name
  • mc_fee
  • address_country_code
  • exchange_rate
  • address_name
  • notify_version
  • settle_currency
  • coutume
  • payer_status
  • affaires
  • address_country
  • address_city
  • verify_sign
  • PAYER_EMAIL
  • txn_id
  • payment_type
facture

est retourné si vous définissez. Il peut être utilisé comme votre propre ID de commande/ID de transaction.

txn_id est généré par PayPal et il s'agit de leur propre identifiant pour la transaction.

Si vous ajoutez des articles vous-même, PayPal renvoie également num_cart_items, item_name1 (item_name2, item_name3), quantity1 (quantity2, quantity3) et autres.

Plus lecture à https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_Appx_websitestandard_htmlvariables

Bien sûr, vous avez encore le problème à résoudre, comment vérifier toutes ces données et se connecter à un client dans votre propre base de données, que vous avez probablement. Ce que je fais est de sauvegarder une "commande" temporaire avant d'envoyer le client à PayPal avec un identifiant de facture, le même identifiant que j'envoie à PayPal comme facture. De cette façon, ma page notify_url.php peut vérifier ma base de données pour un identifiant de facture et comparer la commande/paiement.

+0

Salut jamietelin. Merci pour votre réponse précieuse. J'ai déjà compris cela par moi-même. Je voudrais ajouter que plutôt que de stocker l'ordre temporaire dans la base de données, Paypal a déjà donné un bel exemple où nous récupérons tous les noms des paramètres de requête et leurs valeurs et les renvoyons à Paypal (pour validation) une chaîne "VERIFIED" ou "INVALID" basée sur laquelle vous pouvez faire certaines opérations de base de données. – TCM

+0

Eh bien la base de données temporaire est la plupart du temps si nous avons besoin de le connecter en quelque sorte à un utilisateur dans notre propre utilisateur db. J'ai vraiment besoin de ça. Mais cela dépend du service que vous construisez je suppose :) – jamietelin

+0

@ jamietelin Je l'ai essayé mais pas réussi s'il vous plaît voir http://stackoverflow.com/questions/8570539/add-custom-hidden-field-in-paypal-form- et-get-it-on-redirigé-page –