Maison >interface Web >js tutoriel >Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project

Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2025-02-23 09:34:10463parcourir

Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project

Expliquez comment fonctionne PayPal (processus IPN et PDT). Chapitre un Chapitre trois

Les plats clés

  • Le tutoriel couvre le processus de création d'un compte PayPal et de l'intégrer avec un formulaire d'enregistrement et une base de données pour un vrai projet.
  • Le projet consiste à créer un formulaire d'inscription, à rediriger les utilisateurs vers PayPal pour le paiement et à mettre en œuvre PayPal IPN comme plan de sauvegarde au cas où les utilisateurs ferment leur navigateur.
  • Le tutoriel fournit des instructions détaillées sur la configuration de la structure de la base de données et de l'interface utilisateur, de la création d'un bouton PayPal, de la configuration d'un compte Sandbox PayPal et du codage des gestionnaires PDT et IPN.
  • Le tutoriel répond également aux questions fréquemment posées sur l'inscription à PayPal, notamment en garantissant la sécurité du compte, en s'inscrivant sans carte de crédit, en avantages sociaux d'un compte d'entreprise et en s'inscrivant à l'extérieur des États-Unis.

Chapitre deux

Ce chapitre présente un vrai projet: «Enregistrement avec paiement», du début à la fin, pour mieux expliquer la configuration et l'intégration du compte PayPal avec le formulaire de registre et la base de données.

Scénario de projet

  1. Tout d'abord, nous avons un formulaire d'inscription.
  2. Après avoir rempli correctement le formulaire (toutes les validations passées), l'utilisateur clique sur le bouton «Enregistrer».
  3. puis rediriger vers PayPal, les utilisateurs paient les frais d'inscription.
  4. Après payé, PayPal redirigera vers la page des résultats, et 10 secondes de redirection automatique vers notre site Web, puis PayPal PDT traitera le dossier de paiement.
  5. Mais, l'utilisateur peut fermer le navigateur, nous devons donc implémenter PayPal IPN pour le plan de sauvegarde.

Structure de la base de données

Diagramme E-R:

Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project
  1. Temp_register Tableau: Compte d'utilisateur temporaire Store et mot de passe utilisateur, attendez le paiement. Si payé, le tuple sera supprimé et passera à la table des utilisateurs.
  2. Tableau de paiement: UID est une clé étrangère faisant référence aux utilisateurs, pour connecter les informations des utilisateurs et les informations de paiement.
  3. Tableau des utilisateurs: stocker les informations des utilisateurs, le jeton est un jeton de vérification dans l'e-mail de confirmation. Si l'utilisateur vérifie son compte utilisateur, vérifié sera défini comme 1.

Schéma de base de données:

<span>CREATE TABLE IF NOT EXISTS <span>`payment`</span> (
</span><span><span>`payId`</span> int(11) NOT NULL AUTO_INCREMENT,
</span><span><span>`timestamp`</span> bigint(20) DEFAULT NULL,
</span><span><span>`paid`</span> float DEFAULT NULL COMMENT 'user paid amount returned by paypal',
</span><span><span>`bankFee`</span> float DEFAULT NULL,
</span><span><span>`currency`</span> varchar(4) DEFAULT NULL,
</span><span><span>`txnId`</span> varchar(32) DEFAULT NULL COMMENT 'Transaction ID: specify single unique transaction from paypal. if this field is NOT NULL, means this payment has been process already. So if IPN returns to PHP, we can refuse to update our database.',
</span><span><span>`status`</span> varchar(16) DEFAULT NULL,
</span><span><span>`uid`</span> int(11) DEFAULT NULL COMMENT 'FK to users PK',
</span><span>PRIMARY KEY (<span>`payId`</span>),
</span><span>KEY <span>`uid`</span> (<span>`uid`</span>)
</span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
</span><span>CREATE TABLE IF NOT EXISTS <span>`temp_register`</span> (
</span><span><span>`tRegId`</span> int(11) NOT NULL AUTO_INCREMENT,
</span><span><span>`fullName`</span> varchar(255) DEFAULT NULL,
</span><span><span>`uAcc`</span> varchar(255) DEFAULT NULL,
</span><span><span>`uPwd`</span> varchar(32) DEFAULT NULL,
</span><span>PRIMARY KEY (<span>`tRegId`</span>)
</span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='prevent unpaid user take uAcc(UNIQUE) in our users table' AUTO_INCREMENT=1 ;
</span><span>CREATE TABLE IF NOT EXISTS <span>`users`</span> (
</span><span><span>`uid`</span> int(11) NOT NULL AUTO_INCREMENT,
</span><span><span>`fullName`</span> varchar(255) DEFAULT NULL,
</span><span><span>`uAcc`</span> varchar(255) NOT NULL,
</span><span><span>`uPwd`</span> varchar(32) NOT NULL,
</span><span><span>`token`</span> varchar(32) DEFAULT NULL,
</span><span><span>`verified`</span> tinyint(1) NOT NULL DEFAULT '0',
</span><span><span>`priviledge`</span> enum('delegate','admin','developer') NOT NULL DEFAULT 'delegate',
</span><span>PRIMARY KEY (<span>`uid`</span>)
</span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
</span><span>ALTER TABLE <span>`payment`</span>
</span><span>ADD CONSTRAINT <span>`payment_ibfk_1`</span> FOREIGN KEY (<span>`uid`</span>) REFERENCES <span>`users`</span> (<span>`uid`</span>);</span>

Interface utilisateur

Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project

Projet Workflow

  1. Remplissez le formulaire et toutes les entrées sont validées.
  2. Cliquez sur le bouton Enregistrer, redirigez vers PayPal.
  3. Paypal Sandbox «Pay maintenant»: Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project
  4. Rediriger la page de résultat PayPal.
  5. attendre la redirection (PDT Works) Afficher la page Success / Fail ou fermer le navigateur (IPN Works).

Configuration de la bac à sable PayPal

Avant de commencer à coder, nous devons d'abord configurer le compte PayPal Sandbox. Supposons que vous ayez enregistré un compte de développeur PayPal et que vous avez créé un compte d'utilisateur commercial et un compte d'acheteur dans Sandbox. Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project Sélectionnez ensuite le compte commercial, puis cliquez sur le bouton «Entrez le site de test de bac à sable». Vous pouvez voir la page pop-out du panneau principal: Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project Ensuite, vous pouvez voir toutes les informations et les paramètres de préférence de vente. Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project Alors, configurons les trois options une par une dans l'ordre.

1. Activer PDT et paramètres

Configurez votre fonction PDT Handler Fonction Calling URL. Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project

2. Activer l'IPN et les paramètres

Configurez votre fonction d'appel IPN Fonction d'appel URL. Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project

2. Créez un bouton PayPal et des paramètres de paramètres PayPal

Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project Inscrivez-vous avec PayPal Tutorial (2/3): Un vrai registre avec PayPal Project Après avoir enregistré votre modification, vous pouvez voir le code source de votre bouton PayPal:
<span>CREATE TABLE IF NOT EXISTS <span>`payment`</span> (
</span><span><span>`payId`</span> int(11) NOT NULL AUTO_INCREMENT,
</span><span><span>`timestamp`</span> bigint(20) DEFAULT NULL,
</span><span><span>`paid`</span> float DEFAULT NULL COMMENT 'user paid amount returned by paypal',
</span><span><span>`bankFee`</span> float DEFAULT NULL,
</span><span><span>`currency`</span> varchar(4) DEFAULT NULL,
</span><span><span>`txnId`</span> varchar(32) DEFAULT NULL COMMENT 'Transaction ID: specify single unique transaction from paypal. if this field is NOT NULL, means this payment has been process already. So if IPN returns to PHP, we can refuse to update our database.',
</span><span><span>`status`</span> varchar(16) DEFAULT NULL,
</span><span><span>`uid`</span> int(11) DEFAULT NULL COMMENT 'FK to users PK',
</span><span>PRIMARY KEY (<span>`payId`</span>),
</span><span>KEY <span>`uid`</span> (<span>`uid`</span>)
</span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
</span><span>CREATE TABLE IF NOT EXISTS <span>`temp_register`</span> (
</span><span><span>`tRegId`</span> int(11) NOT NULL AUTO_INCREMENT,
</span><span><span>`fullName`</span> varchar(255) DEFAULT NULL,
</span><span><span>`uAcc`</span> varchar(255) DEFAULT NULL,
</span><span><span>`uPwd`</span> varchar(32) DEFAULT NULL,
</span><span>PRIMARY KEY (<span>`tRegId`</span>)
</span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='prevent unpaid user take uAcc(UNIQUE) in our users table' AUTO_INCREMENT=1 ;
</span><span>CREATE TABLE IF NOT EXISTS <span>`users`</span> (
</span><span><span>`uid`</span> int(11) NOT NULL AUTO_INCREMENT,
</span><span><span>`fullName`</span> varchar(255) DEFAULT NULL,
</span><span><span>`uAcc`</span> varchar(255) NOT NULL,
</span><span><span>`uPwd`</span> varchar(32) NOT NULL,
</span><span><span>`token`</span> varchar(32) DEFAULT NULL,
</span><span><span>`verified`</span> tinyint(1) NOT NULL DEFAULT '0',
</span><span><span>`priviledge`</span> enum('delegate','admin','developer') NOT NULL DEFAULT 'delegate',
</span><span>PRIMARY KEY (<span>`uid`</span>)
</span><span>) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
</span><span>ALTER TABLE <span>`payment`</span>
</span><span>ADD CONSTRAINT <span>`payment_ibfk_1`</span> FOREIGN KEY (<span>`uid`</span>) REFERENCES <span>`users`</span> (<span>`uid`</span>);</span>
Il est facile de découvrir que le bouton est en fait un formulaire, nous devons donc publier des données à l'aide de ses entrées. Lorsque nous générons notre bouton «Enregistrer», l'URL de redirection doit contenir «& cmd = _s-xclick» et «& hosted_button_id = ha9dzbckxkcl2». Maintenant, le compte Sandbox PayPal a été configuré. Commencez ensuite à coder vos gestionnaires PDT et IPN.

Fonction du gestionnaire PDT

Code source:




Explication:

Fonction PayPal Call Pdthandler (), puis ce processus de fonction de gestionnaire _pdt (). Comme vous le voyez, il reçoit des paramètres fournis par PayPal, de l'URL ($ _get). Nous publions donc des jetons et du TX à PayPal, via FSOCK SSL. Ensuite, PayPal renverra le dossier de paiement et le résultat de paiement (succès / échec). _Pdt () transmet ces données à _validatePayPal () qui enregistre les données dans la base de données. Ensuite, la page redirige en fonction du retour.

Fonction de gestionnaire IPN

Code source:

<span>/**
</span><span>* PAYPAL: PDT HANDLER:
</span><span>* ====================
</span><span>* called by PayPal, send tokens back
</span><span>* get payment details and payment result
</span><span>* <span>@return $ret array contains result true/false, and user account or error message
</span></span><span>*/
</span><span>private function _PDT()
</span><span>{
</span><span>// some indexes can not be missing:
</span><span>$ruler = array(
</span><span>'tx', // token from paypal
</span><span>);
</span><span>if(count(array_diff($ruler, array_keys($_GET))))
</span><span>{
</span><span>return array('result' => false, 'error' => 'Index missing ... ', 'index' => $_GET, 'missing' => array_diff($ruler, array_keys($_GET)));
</span><span>}
</span><span>// read the post from PayPal system and add 'cmd'
</span><span>$req = 'cmd=_notify-synch';
</span><span>// get token and prepare request url (send back to paypal)
</span><span>$tx_token = $_GET['tx'];$auth_token = "_PJaHiwRfwMmWzW-9nuPuSguYxC-1d9KpxaasaNANtIvyOcmqY6jXNkRmxW";
</span><span>// $auth_token = "OxDenzKmrWPyEXU0YzIg2zs-VAe7ufCADyjbfxF_RpREL4rLEslZrSa21R4";
</span>
<span>$req .= "&tx=<span><span>$tx_token</span>&at=<span>$auth_token</span>"</span>;
</span>
<span>// post back to PayPal system to validate
</span>
<span>$header = "POST /cgi-bin/webscr HTTP/1.0rn";
</span>
<span>$header .= "Host: www.sandbox.paypal.comrn";
</span><span>// $header .= "Host: www.paypal.comrn";
</span>
<span>$header .= "Content-Type: application/x-www-form-urlencodedrn";
</span><span>$header .= "Content-Length: " . strlen($req) . "rnrn";
</span>
<span>$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); // open socket
</span><span>// $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); // open socket
</span>
<span>if (!$fp)
</span><span>{
</span><span>// HTML FAIL
</span><span>return array('result' => false, 'error' => 'HTTP error ... ');
</span><span>}
</span><span>else
</span><span>{
</span><span>fputs ($fp, $header . $req);
</span><span>// read the body data
</span><span>$res = '';
</span><span>$headerdone = false;
</span><span>while (!feof($fp))
</span><span>{
</span><span>$line = fgets ($fp, 1024);
</span><span>if (strcmp($line, "rn") == 0)
</span><span>{
</span><span>$headerdone = true; // read the header
</span><span>}
</span><span>else if ($headerdone)
</span><span>{
</span><span>$res .= $line; // header has been read. now read the contents
</span><span>}
</span><span>}
</span>
<span>// parse the data
</span><span>$lines = explode("n", $res);
</span><span>$keyarray = array();
</span><span>if (strcmp ($lines[0], "SUCCESS") == 0)
</span><span>{
</span><span>for ($i=1; $i_validatePaypal($keyarray);
</span><span>}
</span><span>// log for manual investigation
</span><span>else if (strcmp ($lines[0], "FAIL") == 0)
</span><span>{
</span><span>// skipped
</span><span>return array('result' => false, 'error' => 'Transaction failed ... ');
</span><span>}
</span><span>}
</span><span>fclose ($fp);
</span><span>return $ret;
</span><span>}</span>

Explication:

PayPal Call ipnHandler () Fonction, puis ce processus de fonction de gestionnaire _ ipn (). Comme vous le voyez, il reçoit les données fournies par PayPal, de la demande ($ _POST). Nous publions donc les détails de paiement à PayPal, via Curl, c'est le processus de poignée de main. Puis PayPal renvoie le résultat de paiement (vérifié / non valide). S'il est vérifié, _ipn () transmet ces données à _validatePayPal () qui enregistre les données dans la base de données.

Dans le fichier zip, il contient des modèles, des fichiers JavaScript, CSS, Bootstrap, JQuery, Debug Plugin et Smarty Plugin, et tout le code source PHP de base.

Télécharger le projet (344KB)

Les questions fréquemment posées sur l'inscription à PayPal

Comment puis-je m'assurer que mon compte PayPal est sécurisé lors de l'inscription?

La sécurité est une priorité absolue lors de la mise en place d'un compte PayPal. Pour vous assurer que votre compte est sécurisé, utilisez un mot de passe solide et unique qui comprend un mélange de lettres, de chiffres et de caractères spéciaux. Assurez-vous également de fournir des informations personnelles précises lors de l'inscription. PayPal utilise ces informations pour vérifier votre identité et protéger votre compte contre les activités frauduleuses.

Puis-je m'inscrire à un compte PayPal sans carte de crédit?

Oui, vous pouvez vous inscrire à un compte PayPal sans une carte de crédit. Pendant le processus d'inscription, vous pouvez choisir de relier un compte bancaire au lieu d'une carte de crédit. Cependant, la liaison d'une carte de crédit peut fournir des options de paiement et des fonctionnalités de sécurité supplémentaires.

Quels sont les avantages de l'inscription à un compte commercial PayPal sur un compte personnel?

Un compte commercial PayPal offre plusieurs avantages sur un compte personnel. Il s'agit notamment de la possibilité d'accepter les paiements des clients, de l'accès aux prêts commerciaux et des avances de liquidités, et l'option de création et d'envoi de factures. Un compte commercial vous permet également de fonctionner sous un nom d'entreprise ou de groupe.

Comment puis-je m'inscrire à un compte PayPal si je vis en dehors des États-Unis?

PayPal est disponible dans plus de 200 pays et régions du monde. Pour vous inscrire à un compte PayPal en dehors des États-Unis, visitez le site Web de PayPal pour votre pays ou région spécifique. Le processus d'enregistrement est similaire à celui des États-Unis.

Quelles informations dois-je fournir lors de votre inscription à un compte PayPal?

Lors de votre inscription à un compte PayPal, vous devrez fournir Votre nom juridique, votre adresse, votre numéro de téléphone et votre adresse e-mail. Vous devrez également créer un mot de passe et choisir deux questions de sécurité pour aider à protéger votre compte.

Combien de temps faut-il pour s'inscrire à un compte PayPal?

Le processus d'enregistrement pour un compte PayPal est rapide et facile. Il ne faut généralement que quelques minutes. Cependant, il peut prendre quelques jours à PayPal pour vérifier vos informations de compte bancaire ou de carte de crédit.

Puis-je m'inscrire à plus d'un compte PayPal?

Oui, vous pouvez vous inscrire à plus Un compte PayPal. Cependant, chaque compte doit avoir une adresse e-mail unique et des informations financières. Vous pouvez avoir un compte personnel et un compte commercial.

Que se passe-t-il si j'oublie mon mot de passe PayPal lors de l'inscription?

Si vous oubliez votre mot de passe PayPal pendant l'inscription, vous pouvez le réinitialiser en cliquant sur Le «mot de passe oublié?» lien sur la page de connexion. Vous serez ensuite invité à saisir votre adresse e-mail et PayPal vous enverra un e-mail avec des instructions sur la façon de réinitialiser votre mot de passe.

Puis-je modifier les informations que j'ai fournies lors de l'inscription PayPal?

Oui, vous pouvez modifier les informations que vous avez fournies lors de l'inscription PayPal. Pour ce faire, connectez-vous à votre compte PayPal, accédez à votre profil et sélectionnez les informations que vous souhaitez modifier.

Y a-t-il des frais pour s'inscrire à un compte PayPal?

Non, Il n'y a aucun frais pour s'inscrire à un compte PayPal. Cependant, PayPal facture des frais pour certaines transactions, tels que la réception des paiements pour les biens et services ou l'envoi d'argent dans un autre pays.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn