Le projet PHP intègre l'API de paiement par analyse de code WeChat (paiement national)

不言
Libérer: 2023-03-25 06:12:01
original
3780 Les gens l'ont consulté

Le contenu de cet article concerne le projet PHP intégrant l'API de paiement par numérisation de code WeChat (paiement domestique). Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

1. Processus de demande de paiement par scan code WeChat

1. Demandez la version entreprise du compte public (les comptes d'abonnement personnels ne peuvent pas activer la fonction de paiement), canal d'inscription : plateforme publique WeChat. inscription ;

2.

Demandez un compte marchand de paiement WeChat. Le canal de candidature se trouve sur la plateforme publique WeChat où la demande est réussie ; Connectez-vous à la plateforme marchande WeChat et recherchez le centre de produits -> Mes produits -> Scannez le code QR pour payer. Après avoir cliqué sur Scanner le code QR pour payer, demandez l'activation, puis c'est une série de renseignements à remplir et le prochaine étape.

4. Une fois l'application du produit de paiement par code scan réussie, également sur la plateforme marchande WeChat, recherchez le Centre de produits -> Configuration de développement, configurez la clé API et recherchez celle qui convient. génère un outil de mot de passe à 32 chiffres, génère une clé, enregistre.

5. Recherchez le centre de produits->Gestion des autorisations APPID et ajoutez mon nom de domaine à l'adresse d'autorisation.

À ce stade, l'opération de base est terminée.

2. Obtenez les informations de configuration et les fichiers requis pour le paiement WeChat

1. Obtenez les informations de configuration.

(1) APPID : L'ID d'application du compte officiel WeChat, retrouvez-le dans le compte officiel WeChat.

(2) APPSECRET : clé de compte officiel WeChat, mot de passe à 32 chiffres, trouvez-le dans le compte officiel WeChat.

(3) MCHID : numéro de commerçant, consultez-le dans le Centre de comptes->Informations personnelles dans la plateforme marchand WeChat.

(4) CLÉ : Clé API, consultez-la dans le Centre de comptes->Sécurité API

de la plateforme marchande WeChat.

2. Téléchargez le certificat de sécurité de paiement WeChat

Plateforme marchande WeChat, recherchez "Centre de compte->Paramètres du compte->Sécurité API->Télécharger le certificat", téléchargez le certificat et enregistrez-le dans un fichier local.

3. Fonctionnement pratique de l'application (ThinkPHP3.2)

1. Téléchargez la démo de la version PHP du paiement par scan WeChat, canal de téléchargement : Démo du paiement par scan code WeChat

2. Le certificat d'installation dans le fichier est remplacé par le certificat de sécurité que nous avons précédemment enregistré localement.

3. Recherchez /lib/WxPay.Config.php, ouvrez le fichier et remplacez les paramètres de configuration par les paramètres que nous avons obtenus précédemment, comme suit :


4. le fichier de démonstration au fournisseur du projet ThinkPHP. L'adresse spécifique est : /ThinkPHP/Library/Vendor/, comme suit :

5. Le code d'application réel dans le contrôleur, le contrôleur est le contrôleur de paie sous le module d'accueil.

(1) Générer le lien de paiement WeChat et charger le code de la page de paiement :

    public function wxpay()
    {
        // 设置时区
        ini_set('date.timezone','Asia/Shanghai');
        error_reporting(E_ERROR);

        // 引入支付核心文件
        vendor('wxpay.lib.WxPay#Api');
        vendor('wxpay.example.WxPay#NativePay');
        vendor('wxpay.example.log');

        //获取数据
        $title = $_POST['title'];
        $description = $_POST['description'];
        $order_no = $_POST['order_no'];
        $total = $_POST['total'];

        // 组装支付参数数据
        $input = new \WxPayUnifiedOrder();
        $input->SetBody($title);
        $input->SetAttach($description);
        $input->SetOut_trade_no($orderno);
        $input->SetTotal_fee($total);
        $input->SetTime_start(date("YmdHis"));
        $input->SetTime_expire(date("YmdHis", time() + 600));
        $input->SetGoods_tag("test");
        // 设置微信扫码支付成功后的回调地址
        $input->SetNotify_url("http://www.XXXXXX.com/Home/pay/wx_notify");
        $input->SetTrade_type("NATIVE");
        $input->SetProduct_id("123");

        // 生成支付链接
        $notify = new \NativePay();
        $result = $notify->GetPayUrl($input);
        $url    = $result["code_url"];
        $this->assign("url",base64_encode($url));

        // 加载二维码生成页面
        $this->display("test/wxpay");
    }
Copier après la connexion
(2) Code html de la page de paiement

<p class="block" style="text-align: center;">
      <img src="{:U(&#39;Home/pay/qrcode&#39;,array(&#39;url&#39;=>$url))}" alt="微信支付二维码" />
      <p style="text-align: center;color: #4a8bc2;font-size: 20px;">请打开微信,扫描上方二维码完成支付</p>
</p>
Copier après la connexion
(3) Générer un code QR

    // 生成微信支付二维码
    public function qrcode(){
        error_reporting(E_ERROR);
        vendor(&#39;wxpay.example.phpqrcode.phpqrcode&#39;);
        $url = base64_decode($_GET["url"]);             //二维码内容
        $errorCorrectionLevel = &#39;H&#39;;                    //容错级别 
        $matrixPointSize = 10;                          //生成图片大小 
        \QRcode::png($url,false,$errorCorrectionLevel, $matrixPointSize,3);
    }
Copier après la connexion
(4) Fonction de rappel de paiement par scan code

	// 微信回调
	public function wx_notify(){
		ini_set(&#39;date.timezone&#39;,&#39;Asia/Shanghai&#39;);
		error_reporting(E_ERROR);

		vendor(&#39;wxpay.example.notify&#39;);

		$notify = new \PayNotifyCallBack();
		$notify->Handle(false);

		$is_success = $notify->IsSuccess(); 
		$bdata = $is_success[&#39;data&#39;]; 				//获取微信回调数据

		if($is_success[&#39;code&#39;] == 1){
			//验证成功,获取数据
			$total_fee=$bdata[&#39;total_fee&#39;]/100;		//支付金额
			$trade_no=$bdata[&#39;transaction_id&#39;];		//微信订单号
			$out_trade_no=$bdata[&#39;out_trade_no&#39;];	        //系统订单号
			$openid=$bdata[&#39;openid&#39;];			//用户在商户appid下的唯一标识

			// 其他coding ……
		}
	}
Copier après la connexion
(5) Idée pour déterminer si le paiement a réussi sur la page

Étant donné que la page de paiement par numérisation de code WeChat est écrite par vous-même, pour déterminer si le paiement a réussi, vous devez également écrire js sur la page de code QR pour vérifier si le paiement a réussi. L'idée générale est la suivante :

页面中写一个定时执行的js函数,每隔1秒钟监测一下当前支付订单的状态,如果订单状态变为已支付,则马上回馈用户支付状态,并跳转到支付成功状态页。
Copier après la connexion

4. Documents de référence

  1. Document de développement du paiement par scan Alipay

Recommandations associées :

projet thinkPHP ou PHP pour implémenter une requête floue


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal