Maison >développement back-end >tutoriel php >Introduction à la façon dont PHP implémente le processus de paiement Alipay

Introduction à la façon dont PHP implémente le processus de paiement Alipay

零到壹度
零到壹度original
2018-04-12 10:51:127580parcourir

Le contenu de cet article est une introduction à la façon dont PHP implémente le processus de paiement Alipay. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

1 , Parlons tout d'abord du tiers payant

Le soi-disant tiers payant est un tiers indépendant qui a signé des contrats avec de grandes banques et dispose de certaines garanties de solidité et de crédibilité fournies par les institutions

Les plateformes actuellement courantes sur le marché incluent Alipay, Tenpay, les services bancaires en ligne, Yibao Pay, etc. .Les sites Web qui doivent mettre en œuvre le paiement par un tiers doivent d'abord demander un compte à un tiers et signer un accord. Une fois l'accord entré en vigueur, la plateforme de paiement tiers activera les fonctions de paiement en ligne.

2. Le principe du tiers payant

2.1 L'utilisateur lance une demande de confirmation de commande sur le site Web du centre commercial

2.2 Mall Le site Web reçoit une demande de sauvegarde des données de commande dans la base de données ou sur d'autres supports de stockage

2.3 Retour à la page de confirmation de commande, qui doit afficher le montant de la commande et autres informations

2.4 L'utilisateur confirme le paiement et initie une demande de paiement. Remarque : La demande de paiement est envoyée à la passerelle de paiement (telle qu'Alipay, banque en ligne) plutôt qu'au site Web du centre commercial.

2.5 Afficher la page de paiement

2.6 L'utilisateur renseigne les informations d'authentification (mot de passe du compte, etc.) et soumet

2.7 Il y a deux étapes ici. L'une consiste à accéder à la page de résultat du paiement (affichée à l'utilisateur) une fois la déduction réussie, et l'autre est la notification de paiement. en même temps, sans ordre. Après avoir reçu la notification de paiement, le site Web du centre commercial vérifiera la validité des informations et apportera les modifications correspondantes (par exemple : si valide, changez la commande en statut payé, si invalide, enregistrez la demande illégale. information).

Prenons Alipay comme exemple : si vous souhaitez intégrer l'interface Alipay dans votre site Web, vous devez d'abord avoir un compte Alipay, puis postuler pour une activité de paiement en ligne avec Alipay et signer un accord. . Une fois l'accord entré en vigueur, Alipay donnera au site Web un identifiant de partenaire et un code de vérification de sécurité. Avec ces deux éléments, l'interface Alipay peut être développée selon le document d'interface Alipay. Il n'y en a que 4 et 7 dans les étapes ci-dessus. Cette étape implique un échange d'informations entre le centre commercial et la passerelle de paiement. L'étape 4 fait référence à l'envoi des données à la passerelle de paiement (Alipay). L'étape 7 est la partie de vérification de la notification. La passerelle de vérification demande une certaine adresse du site Web. Le site Web vérifie les informations conformément aux règles de vérification, enregistre et répond. développent presque tous les paiements. En ce qui concerne l'interface, l'accent est mis sur le développement de ces deux parties. Si vous comprenez les principes de l'interface de paiement, il ne sera pas difficile de développer l'interface de paiement.

En fait, en regardant la photo, ce que nous avons fait est très limité, essentiellement entre 1 et 3, générer des données de commande, puis les authentifier via Alipay interne (bien sûr, certaines étapes du panier et de la commande sont omises), le processus est pratiquement terminé.

3. Développement de l'interface Alipay

3.1 Introduction et tests de l'interface

Pour l'instant, Alipay propose plusieurs interfaces telles que des transactions garanties, un paiement instantané standard et des fonctions doubles. Il n'y a que quelques différences dans les fonctions. Les méthodes d'intégration sont les mêmes, avec une prise standard. l'interface de paiement en temps opportun à titre d'exemple, après avoir signé un accord avec Alipay, plusieurs étapes sont nécessaires pour terminer l'intégration.

Sélectionnez le lien que vous verrez ensuite dans "Je veux une intégration en libre-service" et cliquez pour télécharger la documentation technique.

Dans le fichier téléchargé, on trouve des interfaces standards du service de transaction Alipay, des outils marchands, des guides d'intégration d'interface et d'autres documents d'interface, ainsi que des démos écrites en plusieurs langues. documents Il est nouvellement développé selon les règles, ou peut être modifié et intégré au site Web à partir de la démo. A noter que l'interface de paiement doit être développée sur le réseau public (le serveur doit être accessible via le réseau externe). ) pour terminer l'ensemble du processus de débogage. Si le serveur n'est pas accessible depuis le réseau externe, vous ne pouvez pas recevoir de notifications de paiement.


Le rôle de chaque fichier dans la démo

│ ├alipay_core.function.php ┈┈┈┈┈┈Fichier de fonction publique de l'interface Alipay
│ │
│ ├alipay_notify.class.php┈┈┈┈┈┈┈Classe de traitement des notifications Alipay fichier
│ │
│ ├alipay_submit.class.php┈┈┈┈┈┈┈L'interface Alipay demande la soumission des fichiers de classe
│ │
│ └alipay_md5.function.php┈┈┈┈┈ ┈┈Fichier de fonction MD5 de l'interface Alipay

├log.txt┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈Fichier journal

├alipay.config.php┈ ┈┈┈ ┈ ┈┈┈┈┈┈┈Fichier de classe de configuration de base

├alipayapi.php┈┈┈┈┈┈┈┈┈┈┈┈┈┈Alipay fichier d'entrée d'interface PHP notify_url.器 serveur asynchrone fichier de page de notification

├Return_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈ fichier de notification synchrone de saut de page

├cacert.pem ┈ ┈┈┈┈┈┈┈┈Fichier de certificat CA utilisé pour vérifier SSL dans CURL

└readme.txt ┈┈ ┈ ┈┈┈┈┈┈┈┈┈┈┈┈Texte d'instruction






Il a été téléchargé ici (voir le dossier des fichiers payants du répertoire de ressources), afin de faciliter le débogage, plusieurs fichiers ont été ajoutés et modifiés, et un Un tableau de données a été ajouté pour enregistrer les informations de commande. Nous modifions le fichier de configuration pour terminer un processus de test.


Alipay_config.php est le fichier de configuration des informations de base. Nous devons écrire le PID et la clé obtenus dans le backend Alipay dans le fichier de configuration.

Éléments de configuration :


Les données dans la boîte sont ce sur quoi nous devons nous concentrer sur la modification. La différence entre l'adresse de notification de paiement et l'adresse de retour a été mentionnée précédemment. Il y a deux éléments à l'étape 7 : la page de résultat du paiement et les informations de notification de paiement. La page de résultat du paiement passera automatiquement à cette adresse une fois que l'utilisateur aura terminé le paiement. . Voici l'adresse de retour ( $return_url).

$host = $_SERVER['HTTP_HOST'];
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//合作身份者ID,签约账号,以2088开头由16位纯数字组成的字符串,查看地址: 
$alipay_config['partner'] = '****************';

//收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号
$alipay_config['seller_id'] = $alipay_config['partner'];

// MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址: 
$alipay_config['key'] = '****************************';

// 服务器异步通知页面路径  需 
$alipay_config['notify_url'] = "
 
// 页面跳转同步通知页面路径 需 
$alipay_config['return_url'] = "http://".$host."/paycallback/return";

// 客户端的IP地址 非局域网的外网IP地址,如:221.0.0.1
$alipay_config['exter_invoke_ip'] = "182.92.27.46";





L'adresse de notification de paiement est également l'adresse qu'Alipay demandera une fois que l'utilisateur aura terminé le paiement ( $notify_url), mais la notification de paiement est directement demandée par le serveur Alipay et ne sera pas vue par l'utilisateur. Ces deux adresses doivent être au format de chemin complet commençant par http. Afin de terminer le processus de test, /pay/alipay/notify_url.php a été réécrit ici et $notify_url est défini sur l'URL qui peut accéder à ce fichier. Une fois ces éléments configurés, une table de données est créée selon le script de base de données (pay/orders.sql). Et modifiez mysql_config.php en fonction des informations de configuration de la base de données. En modifiant simplement la démo fournie par Alipay, vous pouvez terminer la création de la demande de paiement (étape 4). Ici, la page d'accueil de paiement et les autres pages sont modifiées (voir le). répertoire payant du paquet de code source). Testons-le d'abord :





Une "information de commande" a été ajoutée à la base de données

Si vous cliquez sur le bouton "Confirmer le paiement" ou. le lien Confirmer le paiement, il passera à la page Alipay. Lorsque vous cliquez sur le bouton, les informations sont soumises à la passerelle de paiement via le formulaire POST. Étant donné que les données de la demande de paiement n'ont pas besoin d'être vues par l'utilisateur, elles le sont. écrit dans le champ caché. Le lien de confirmation de paiement est transmis via l'URL. Étant donné que l'interface Alipay permet la soumission en POST ou GET, les deux méthodes sont acceptables. Après avoir soumis les paramètres à la passerelle de paiement, la page passe à la page de paiement. On voit l'image suivante :



Nous voyons qu'Alipay nous propose deux méthodes de paiement, l'une par compte Alipay, l'autre par carte bancaire. Par exemple, choisissez de payer par carte bancaire, renseignez votre email ou votre numéro de téléphone portable et accédez à la page suivante :



Notre facturation Alipay prend en charge presque tous les paiements par carte bancaire, ainsi que les méthodes de paiement par carte de crédit et en agence. Sélectionnez la banque correspondante et suivez les instructions pour payer. Une fois le paiement terminé, la page reviendra à l'adresse $return_url que nous avons configurée dans le fichier de configuration, et le « statut de la commande » changera également.




Remarque : S'il n'y a pas de test de réseau externe pendant le test (c'est-à-dire que l'adresse de notification de paiement n'est pas accessible depuis le réseau externe), la notification de paiement ne peut pas être demandée et le statut de la commande ne peut pas être modifié automatiquement.

3.2 Spécification de l'interface Alipay et analyse du code

Pour la spécification de l'interface Alipay, veuillez vous référer à /pay/doc/Interface standard du service de transaction Alipay (dédié à la prévention des sites Web de phishing). Pdf, qui contient déjà des instructions relativement détaillées.

3.2.1 Comment créer une demande de paiement

Lors du test précédent, nous avons cliqué sur "Confirmer le paiement" pour soumettre les informations à Alipay Pour les passerelles de paiement, nous pouvons réfléchir aux paramètres qui doivent être envoyés à la passerelle de paiement. Pour la liste des paramètres de requête, veuillez vous référer à l'interface standard du service de transaction Alipay (dédiée aux sites anti-phishing). 3.2.2 dans le Pdf Il convient de noter que nous n'avons pas seulement besoin de soumettre ces paramètres à Alipay intacts. Afin de garantir la sécurité des données, Alipay utilise actuellement la signature MD5 pour empêcher la falsification des données.

Avant de soumettre les données, vous devez assembler les données à soumettre dans une chaîne selon certaines règles (voir le document d'interface), et ajouter le code de contrôle de sécurité (Clé) à former une nouvelle chaîne. Une signature de 32 octets est générée via MD5. Lorsque nous soumettons une demande de paiement, nous devons également soumettre cette signature. Jetez un œil au code source du formulaire



Alipay procédera après réception des paramètres. Vérifiez la légalité des paramètres de la demande. Après vérification, la page de paiement s'affichera, sinon une erreur sera affichée.

 3.2.2 Comment vérifier la notification de paiement

Une fois le paiement de l'utilisateur effectué, Alipay demandera l'adresse de notification de paiement du site Web (cette adresse doit être transmise en paramètre lors de la création de la demande de paiement). Pour la liste des paramètres de retour, veuillez vous référer à l'interface standard du service de transaction Alipay (dédiée aux sites anti-phishing). Pdf3.3.1. Il existe également une chaîne de signature dans les données de retour d'Alipay (en utilisant la même méthode de signature que la demande de paiement). Dans le fichier de notification de paiement, les données doivent d'abord être signées et vérifiées. En plus de vérifier la signature, le notify_id dans le paramètre doit également être soumis au système Alipay de passerelle de vérification d'Alipay pour vérifier l'authenticité de la notification et notifier la vérification. Le système Alipay détermine si la notification est envoyée par lui-même. Si elle est au format chaîne, elle renvoie vrai, sinon elle renvoie faux. Nous vérifions l'authenticité de la demande en vérifiant les données renvoyées par le serveur. Si les deux sont vérifiées, nous. peut modifier les données de la commande et envoyer des e-mails à l'utilisateur des notifications et d'autres opérations. Concernant la vérification des signatures, vous pouvez consulter le code source dans le fichier de notification. Dans la démo, le notify_id dans le paramètre est soumis à Alipay via POST et les données de retour sont obtenues :


<.>

Le point clé est la fonction fsockopen Nous y avons déjà été exposés lors de l'envoi d'emails. La connexion socket est ouverte via cette fonction, qui est. similaire au fopen que nous avons appris précédemment. La fonction renvoie un descripteur de fichier, qui peut ensuite être utilisé à l'aide des fonctions de fichier (fgets(), fgetss(), fputs(), fclose() feof(), etc.). ) est utilisé dans la fonction de code (identique à fwrite() )), écrit des données pour simuler la soumission de données par formulaire en mode POST, et enfin obtient les données renvoyées via la fonction fgets() et les enregistre dans un tableau, et enfin vérifiez-le. Veuillez vous référer au code source pour plus de détails.

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