Maison > Article > développement back-end > Le projet PHP intègre l'API de paiement par analyse de code WeChat (paiement national)
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"); }(2) Code html de la page de paiement
<p class="block" style="text-align: center;"> <img src="{:U('Home/pay/qrcode',array('url'=>$url))}" alt="微信支付二维码" /> <p style="text-align: center;color: #4a8bc2;font-size: 20px;">请打开微信,扫描上方二维码完成支付</p> </p>(3) Générer un code QR
// 生成微信支付二维码 public function qrcode(){ error_reporting(E_ERROR); vendor('wxpay.example.phpqrcode.phpqrcode'); $url = base64_decode($_GET["url"]); //二维码内容 $errorCorrectionLevel = 'H'; //容错级别 $matrixPointSize = 10; //生成图片大小 \QRcode::png($url,false,$errorCorrectionLevel, $matrixPointSize,3); }(4) Fonction de rappel de paiement par scan code
// 微信回调 public function wx_notify(){ ini_set('date.timezone','Asia/Shanghai'); error_reporting(E_ERROR); vendor('wxpay.example.notify'); $notify = new \PayNotifyCallBack(); $notify->Handle(false); $is_success = $notify->IsSuccess(); $bdata = $is_success['data']; //获取微信回调数据 if($is_success['code'] == 1){ //验证成功,获取数据 $total_fee=$bdata['total_fee']/100; //支付金额 $trade_no=$bdata['transaction_id']; //微信订单号 $out_trade_no=$bdata['out_trade_no']; //系统订单号 $openid=$bdata['openid']; //用户在商户appid下的唯一标识 // 其他coding …… } }(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秒钟监测一下当前支付订单的状态,如果订单状态变为已支付,则马上回馈用户支付状态,并跳转到支付成功状态页。
4. Documents de référence
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!