Utilisation de la notification de paiement instantanée de PayPal avec PHP

Salut! Aujourd'hui, nous allons associer Paypal à PHP pour faciliter le traitement des paiements sur votre site Web..


Produit fini: Aperçu

Étape 1 - Création d'un compte PayPal

Pour ce tutoriel, vous aurez besoin d’un Compte PayPal Premier Et un site en ligne. Commencez par aller sur paypal.com et cliquez sur "inscription" en haut de la page.

Cliquez sur Commencer sous le titre Premier; vous serez redirigé vers un formulaire d'inscription. S'il vous plaît remplir toutes les informations nécessaires. Une fois votre compte créé, connectez-vous et passez à l'étape 2.

Étape 2 - Activer IPN

Dans cette étape, nous allons activer Notification instantanée de paiement (IPN), alors pendant que vous êtes connecté, s'il vous plaît cliquez sur Profil et ensuite choisir Notification de paiement instantanée

Maintenant, sur l'écran suivant, vous verrez qu'IPN est réglé sur "off"; Cliquez sur "Modifier" pour changer ça.

Au début de ce tutoriel, j'ai mentionné que vous auriez besoin d'un site Web en ligne. Pourquoi? Eh bien, nous allons demander à PayPal de nous envoyer des données à la fin du paiement. PayPal ne peut accéder aux sites Web hébergés locaux que si tous les paramètres sont configurés correctement. (Cela implique d’ouvrir des ports sur votre routeur). Je vais donc entrer l'URL de mon script de validation, par exemple, http://www.votredomaine.com/PayPal/ipn.php. PayPal publiera ensuite une notification sur mon serveur, à l'adresse URL spécifiée..

Étape 3 - Construire une page HTML simple

D'accord, nous avons maintenant besoin d'une page HTML simple et basique sur laquelle votre visiteur peut acheter un accès à votre zone de téléchargement..
Je ne vais pas expliquer tout le code HTML car je pense que vous devez connaître les bases du code HTML avant de commencer avec PHP.

index.php - Une simple page HTML avec une feuille de style.

    Nettuts.com | Achat d'un accès à la zone de téléchargement    

Accès à l'achat

Veuillez cliquer sur le bouton ci-dessous pour recevoir les informations de connexion pour la zone de téléchargement..
Vous avez déjà un compte? Connectez-vous ici.

css / style.css - Une feuille de style simple pour notre page HTML.

 body background: # 2D2D2D; / * Définir la couleur de fond du site Web * / police: 11px 'Verdana'; / * Définir la taille et le type de police du site Web * / #wrap margin: 0 auto; / * Centrer notre contenu * / width: 500px; / * Définir la largeur de notre contenu * / background: #FFF; / * Définir la couleur de fond du contenu * / padding: 10px; / * Définir le rembourrage pour le contenu * / border: 1px solid # 000; / * Ajouter une bordure autour du contenu * /

Étape 4 - Construire un bouton PayPal

Nous avons besoin de créer un bouton d'achat, alors s'il vous plaît cliquez sur Services marchands, et ensuite choisirPaiements sur site marchand

Vous pouvez choisir trois types de boutons, Vendre des articles simples, Vendre plusieurs objets et, Abonnement. Maintenant, dans ce tutoriel, nous allons créer un seul élément. Lorsque quelqu'un achète cet article unique, dans ce cas, accédez à une zone de téléchargement. Une fois le paiement validé, un email vous sera envoyé avec les détails.

Entrons quelques informations pour notre bouton d'achat; vous pouvez laisser le reste tel quel.

Lorsque vous avez terminé de remplir chaque section, générez le code. Copiez ce code dans votre presse-papiers, puis collez-le à l'intérieur.index.php - où j'ai ajouté le commentaire dans la page html. Veuillez revoir l'étape 3, si nécessaire.

Cela devrait fonctionner parfaitement. Les utilisateurs peuvent cliquer sur le bouton et finaliser leur achat.

Étape 5 - Écrire ipn.php

Commencez par créer ipn.php pour pouvoir commencer à écrire. Nous allons utiliser un petit extrait que j'ai créé à partir d'un extrait plus volumineux que vous pouvez obtenir sur le site Web de Paypal..
S'il vous plaît noter qu'il n'y a aucune raison d'apprendre ce code de votre tête! Les extraits sont pratiques et permettent de gagner du temps. Je vais décomposer ci-dessous.

  $ valeur) $ valeur = urlencode (stripslashes ($ value)); $ req. = "& $ key = $ value";  // publie de nouveau sur le système PayPal pour valider $ header = "POST / cgi-bin / webscr HTTP / 1.0 \ r \ n"; $ header. = "Type de contenu: application / x-www-formulaire-urlencoded \ r \ n"; $ header. = "Longueur du contenu:". strlen ($ req). "\ r \ n \ r \ n"; $ fp = fsockopen ('ssl: //www.paypal.com', 443, $ errno, $ errstr, 30); if (! $ fp) // ERREUR HTTP else fputs ($ fp, $ en-tête. $ req); while (! feof ($ fp)) $ res = fgets ($ fp, 1024); if (strcmp ($ res, "VERIFIED") == 0) // PAIEMENT VALIDÉ ET VÉRIFIÉ!  else if (strcmp ($ res, "INVALID") == 0) // PAIEMENT INVALIDE & ENQUÊTE MANUELLE!  fclose ($ fp); ?>

Veuillez saisir les informations d'identification correctes pour votre base de données afin que nous puissions insérer des données à l'étape suivante..

Les données de POSTS de PayPal à l'URL que nous avons spécifiée. Dans cet exemple, nous n’avons besoin que de l’adresse électronique de l’acheteur pour pouvoir lui envoyer ses informations de connexion. Ce code ci-dessus lira les données envoyées par PayPal et renverra les informations à PayPal. J'ai ajouté deux commentaires où le code devrait venir s'il est validé. De plus, j'ai également ajouté un commentaire qui spécifie ce qui doit être fait si ce n'est pas validé.

Étape 6 - Création de la base de données

Nous allons maintenant nous concentrer sur ce qui devrait se passer si le paiement est vérifié. Premièrement, nous devons construire une table MySQL où nous stockons les informations des utilisateurs. Juste un simple avec un identifiant, email et mot de passe.

Ensuite, nous devons entrer nos détails de table; nous avons besoin d'un ID avec une sélection de clé primaire et il devrait incrémenter automatiquement; ensuite un email et mot de passe champ.

Pour ceux d'entre vous qui n'ont pas le temps d'entrer toutes ces informations, voici un petit code MySQL Dump pour recréer la table..

 CREATE TABLE 'users' ('id' int (10) NOT NULL auto_increment, 'email' varchar (50) NON, NULL, 'password' varchar (32) NON NULL, PRIMARY KEY ('id')) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1; 

Étape 7 - Création du compte

Ouvrir ipn.php encore. Nous allons écrire le code suivant sous la ligne "// PAYMET VALIDATED".

Notre première étape consiste à récupérer l'adresse e-mail de l'acheteur; PayPal envoie toutes ces informations à ipn.php.

 // Paiement validé et vérifié! $ email = $ _POST ['pay_email'];

Nous devons créer une dernière variable - qui est le mot de passe que nous allons générer en utilisant php.

 // Paiement validé et vérifié! $ email = $ _POST ['pay_email']; $ password = mt_rand (1000, 9999);

Comme vous pouvez le constater, nous avons utilisé mt_rand pour générer un mot de passe aléatoire - dans le cas présent, une valeur numérique comprise entre 1 000 et 9999. Nous devons ensuite insérer ces données dans notre base de données. Pour ce faire, nous allons utiliser la requête mysql insert.

 // Paiement validé et vérifié! $ email = $ _POST ['pay_email']; $ password = mt_rand (1000, 9999); mysql_query ("INSERT INTO utilisateurs (email, mot de passe) VALUES ('". mysql_escape_string ($ email). "', '" .md5 ($ password). ") ou die (mysql_error ());

Ici, nous demandons à notre script d'insérer l'email et le mot de passe dans notre base de données. J'ai ajouté une chaîne mysql_escape_string pour m'assurer que l'injection de mysql n'est pas possible. J'ai également ajouté la fonction md5 à notre mot de passe pour qu'il soit stocké sous forme de hachage de 32 caractères. Maintenant, le compte est créé. passons à l'étape suivante.

Étape 8 - Envoi par courrier électronique des informations d'identification de connexion

Nous devons écrire un code qui enverra les informations de connexion par courrier électronique à l'acheteur. Pour ce faire, nous allons utiliser la fonction mail php.

 // Paiement validé et vérifié! $ email = $ _POST ['pay_email']; $ password = mt_rand (1000, 9999); mysql_query ("INSERT INTO utilisateurs (email, mot de passe) VALUES ('". mysql_escape_string ($ email). "', '" .md5 ($ password). ") ou die (mysql_error ()); $ to = $ email; $ subject = 'Zone de téléchargement | Identifiants de connexion '; $ message = 'Merci pour votre achat. Les informations de votre compte ------------------------- Email:'. $ email. ' Mot de passe: '. $ Mot de passe.' ------------------------- Vous pouvez maintenant vous connecter à http://votredomaine.com/PayPal/ '; $ headers = 'De: [email protected]'. "\ r \ n"; mail ($ à, $ sujet, $ message, $ en-têtes);

Brisons cette fonction de courrier électronique. Nous utilisons la variable $ email pour obtenir l'adresse email de l'utilisateur et l'assigner à la variable $ to.
La variable $ subject est le titre / sujet que vous verrez dans votre programme de messagerie. Après cela, nous avons notre message, qui contiendra une note de remerciement ainsi que les informations du compte. Les variables $ email et $ password dans le message changeront à l'information correcte une fois que l'email a été envoyé. Nous avons également défini un en-tête personnalisé. Lorsque l'utilisateur reçoit le courrier électronique, l'adresse "de" s'affiche sous la forme "[email protected]"..

Étape 9 - Email de paiement invalide

Un paiement invalide peut être dû à une fraude, mais également à un problème avec PayPal. donc nous voulons nous assurer que notre client reçoit ce qu'il a payé.
Nous allons donc envoyer un courrier électronique à l'administrateur de notre site, lui demandant de contacter l'acheteur pour plus d'informations. Il suffit de copier le code de courrier électronique que nous avons utilisé précédemment et ensuite apporter les modifications énumérées ci-dessous.

 // PAIEMENT INVALIDE & MANUEL D'INVESTIGATION! $ to = '[email protected]'; $ subject = 'Zone de téléchargement | Paiement invalide '; $ message = 'Cher administrateur, Un paiement a été effectué mais est marqué comme non valide. Veuillez vérifier le paiement manuellement et contacter l'acheteur. Courriel de l'acheteur: '. $ Email. "; $ Headers =' De: [email protected] '." \ R \ n "; mail ($ à, $ sujet, $ message, $ en-têtes);

Ce code est presque le même que ci-dessus, seulement nous avons apporté quelques modifications au récepteur, au sujet et au message..

Étape 10 - Connexion de l'utilisateur

Ceci est notre dernière étape, où nous construisons un formulaire de connexion simple pour nos acheteurs. Faire un nouveau fichier php, et nommez-le login.php. Nous utiliserons la même page HTML que celle utilisée pour le index.php, seulement nous allons faire quelques ajustements au contenu de la page, et bien sûr ajouter un peu de style à notre formulaire de connexion.

login.php - Ceci est la page où nos acheteurs peuvent se connecter.

    Nettuts.com | S'identifier    

S'identifier

Veuillez saisir vos identifiants de connexion pour accéder à la zone de téléchargement.

Ajouter à style.css

 label display: block; / * Assurez-vous que l'étiquette est sur une seule ligne * / margin: 3px; / * Crée une certaine distance des champs de saisie * / input padding: 3px; / * Donne plus d'espace au texte * / border: 1px solid grey; / * Ajoute une bordure autour des champs de saisie * / margin: 3px; / * Crée une certaine distance par rapport aux étiquettes * /

Maintenant que nous avons créé notre formulaire, nous devons vérifier si les informations de connexion sont correctes. J'ai apporté quelques modifications à login.php afin que nous puissions commencer:

    Nettuts.com | S'identifier    

S'identifier

Veuillez saisir vos identifiants de connexion pour accéder à la zone de téléchargement.

Le code ci-dessus vérifiera si l'email et le mot de passe sont tous les deux publiés Si vrai, nous pouvons vérifier les informations d'identification. Sinon, nous retournons une erreur. Le prochain code que nous allons écrire sera placé sous "// Verify". Nous devons d’abord transformer les variables de poste en variables locales.

 $ email = mysql_escape_string ($ _ POST ['email']); $ password = md5 ($ _ POST ['password']);

J'ai ajouté une fonction d'échappement pour empêcher l'injection de mysql et j'ai transformé le mot de passe affiché en un hachage md5. Comme nous l'avons fait dans notre base de données, nous devons également hacher le mot de passe de l'utilisateur pour comparer correctement les deux valeurs. Il est maintenant temps de vérifier les données.

 $ email = mysql_escape_string ($ _ POST ['email']); $ password = md5 ($ _ POST ['password']); $ gUser = mysql_query ("SELECT * DES utilisateurs WHERE. $ email." "AND. $ password." "LIMIT 1") ou die (mysql_error ()); $ verify = mysql_num_rows ($ gUser); if ($ verify> 0) echo '

Connexion terminée

Cliquez ici pour télécharger notre programme

'; else echo '

Échec de la connexion

Désolé, vos identifiants de connexion sont incorrects. ';

Comme vous pouvez le constater, nous exécutons une requête mysql et sélectionnons toutes les données de notre table utilisateur, mais uniquement la ligne où l'adresse électronique de l'utilisateur correspond à celle de la base de données..
mysql_num_rows vérifie si une correspondance a été trouvée: 1 = true; 0 = faux.

C'est tout!

Et c'est la fin de ce tutoriel. J'espère que cela vous a plu et n'hésitez pas à laisser un commentaire avec vos pensées. Avez des conseils qui pourraient aider?

  • Abonnez-vous au flux RSS NETTUTS pour plus de commentaires et d'articles sur le développement Web au quotidien.