Table des matières
微信支付成功
Maison Applet WeChat Développement WeChat Méthode de développement de paiement PHP WeChat de rappel après numérisation du paiement (mode 2)

Méthode de développement de paiement PHP WeChat de rappel après numérisation du paiement (mode 2)

Mar 09, 2017 pm 03:40 PM
微信开发

En fait, lorsque j'ai écrit cet article, je sentais que j'étais déjà en retard sur mon temps. Cependant, lorsque j'ai recherché "Développement du paiement WeChat - comment rappeler après avoir scanné le paiement (mode 2)" sur Baidu pour trouver le. réponse, j'ai découvert que de nombreux amis n'avaient toujours pas résolu ce problème, je partagerai donc mes idées de solutions avec tout le monde.

1. Téléchargez le SDK de paiement WeChat (l'auteur utilise le développement PHP comme exemple, le package sdk est WxpayAPI_php_v3.zip)

Téléchargez le package SDK et décompressez-le dans le répertoire décompressé. nous verrons le Répertoire suivant

Méthode de développement de paiement PHP WeChat de rappel après numérisation du paiement (mode 2)

2. Après avoir consulté la documentation du développeur de paiement WeChat, nous avons appris que la démo du paiement par scan code WeChat est le fichier native.php de l'exemple répertoire

Pour plus de commodité, ce que nous devons faire est de placer l'intégralité du fichier décompressé dans le dossier wxpay (peut être nommé selon vos préférences personnelles) dans le répertoire racine de l'environnement local

3 . En prenant l'auteur comme exemple, lors de la navigation, entrez http://localhost/wxpay/example/native.php

dans le navigateur. Après avoir ouvert l'URL ci-dessus, nous avons constaté qu'il y avait deux codes QR. le titre dit, ce que nous étudions aujourd'hui, c'est le scan code du mode deux (également recommandé par le code officiel Mode 2 Scan pour payer)

4. Nous nous connectons à WeChat avec notre téléphone portable, scannons le code QR du mode 2 sur la page ci-dessus, et payez

Nous trouvons ici un problème intéressant, quand une fois votre paiement réussi, il n'y a aucun changement dans la page PC, donc le principal problème que nous considérons est de savoir comment rappeler après paiement.

Je ne dirai pas trop de bêtises ici. L'auteur a fait référence à de nombreuses méthodes sur Internet et les a résumées comme suit :

1. 1 dans le fichier native.php. Du HTML, il ne reste que quelques codes HTML associés en mode scan code 2.

2. Comme le document officiel indique également que le résultat du paiement du mode scan code 2 est une réponse asynchrone et ne renverra pas activement le résultat du paiement, nous utilisons donc javascript pour surveiller le résultat du paiement de temps en temps, puis, en fonction du résultat de la demande, effectuer le rappel de la page suivante. Le code final de l'auteur est le suivant, les amis intéressés peuvent s'y référer :

fichier native.php

<?php
ini_set(&#39;date.timezone&#39;,&#39;Asia/Shanghai&#39;);
//error_reporting(E_ERROR);

require_once "../lib/WxPay.Api.php";
require_once "WxPay.NativePay.php";
require_once &#39;log.php&#39;;

//模式一
/**
 * 流程:
 * 1、组装包含支付信息的url,生成二维码
 * 2、用户扫描二维码,进行支付
 * 3、确定支付之后,微信服务器会回调预先配置的回调地址,在【微信开放平台-微信支付-支付配置】中进行配置
 * 4、在接到回调通知之后,用户进行统一下单支付,并返回支付信息以完成支付(见:native_notify.php)
 * 5、支付完成之后,微信服务器会通知支付成功
 * 6、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php)
 */
$notify = new NativePay();
$url1 = $notify->GetPrePayUrl("123456789");

//模式二
/**
 * 流程:
 * 1、调用统一下单,取得code_url,生成二维码
 * 2、用户扫描二维码,进行支付
 * 3、支付完成之后,微信服务器会通知支付成功
 * 4、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php)
 */
$input = new WxPayUnifiedOrder();
$input->SetBody("1分钱购买何宁");
$input->SetAttach("1分钱购买何宁");
$num=WxPayConfig::MCHID.date("YmdHis");
$input->SetOut_trade_no($num);
$input->SetTotal_fee("1");
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
$input->SetTrade_type("NATIVE");
$input->SetProduct_id("123456789");
$result = $notify->GetPayUrl($input);
$url2 = $result["code_url"];
?>

<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1" /> 
    <title>微信支付样例</title>
</head>
<body>
    <div style="margin-left: 10px;color:#556B2F;font-size:30px;font-weight: bolder;">扫描支付模式二</div><br/>
    <img  src="/static/imghw/default1.png"  data-src="qrcode.php?data=<?php echo urlencode($url2);? alt="Méthode de développement de paiement PHP WeChat de rappel après numérisation du paiement (mode 2)" >"  class="lazy"  alt="模式二扫码支付"    style="max-width:90%"/>
    <div id="myDiv"></div><div id="timer">0</div>
    <script>  
    //设置每隔1000毫秒执行一次load() 方法  
    var myIntval=setInterval(function(){load()},1000);  
    function load(){  
       document.getElementById("timer").innerHTML=parseInt(document.getElementById("timer").innerHTML)+1; 
        var xmlhttp;    
        if (window.XMLHttpRequest){    
            // code for IE7+, Firefox, Chrome, Opera, Safari    
            xmlhttp=new XMLHttpRequest();    
        }else{    
            // code for IE6, IE5    
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");    
        }    
        xmlhttp.onreadystatechange=function(){    
            if (xmlhttp.readyState==4 && xmlhttp.status==200){    
                trade_state=xmlhttp.responseText;  
                if(trade_state==&#39;SUCCESS&#39;){  
                    document.getElementById("myDiv").innerHTML=&#39;支付成功&#39;;  
                    //alert(transaction_id);  
                    //延迟3000毫秒执行tz() 方法
                    clearInterval(myIntval);  
                    setTimeout("location.href=&#39;success.php&#39;",3000);  

                }else if(trade_state==&#39;REFUND&#39;){  
                    document.getElementById("myDiv").innerHTML=&#39;转入退款&#39;; 
                    clearInterval(myIntval); 
                }else if(trade_state==&#39;NOTPAY&#39;){  
                    document.getElementById("myDiv").innerHTML=&#39;请扫码支付&#39;;  
                      
                }else if(trade_state==&#39;CLOSED&#39;){  
                    document.getElementById("myDiv").innerHTML=&#39;已关闭&#39;;  
                    clearInterval(myIntval);
                }else if(trade_state==&#39;REVOKED&#39;){  
                    document.getElementById("myDiv").innerHTML=&#39;已撤销&#39;;  
                    clearInterval(myIntval);
                }else if(trade_state==&#39;USERPAYING&#39;){  
                    document.getElementById("myDiv").innerHTML=&#39;用户支付中&#39;;  
                }else if(trade_state==&#39;PAYERROR&#39;){  
                    document.getElementById("myDiv").innerHTML=&#39;支付失败&#39;; 
                    clearInterval(myIntval); 
                }  
                 
            }    
        }    
        //orderquery.php 文件返回订单状态,通过订单状态确定支付状态  
        xmlhttp.open("POST","orderquery.php",false);    
        //下面这句话必须有    
        //把标签/值对添加到要发送的头文件。    
        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");    
        xmlhttp.send("out_trade_no=<?php echo $num;?>");  
         
        }  
    </script>
    
</body>
</html>
Copier après la connexion

Le code orderquery.php a également été ajusté en conséquence :

<?php
ini_set(&#39;date.timezone&#39;,&#39;Asia/Shanghai&#39;);
error_reporting(E_ERROR);
require_once "../lib/WxPay.Api.php";
require_once &#39;log.php&#39;;
 
//初始化日志
$logHandler= new CLogFileHandler("./logs/".date(&#39;Y-m-d&#39;).&#39;.log&#39;);
$log = Log::Init($logHandler, 15);
 
function printf_info($data)
{
    foreach($data as $key=>$value){
        echo "<font color=&#39;#f00;&#39;>$key</font> : $value <br/>";
    }
}
 
 
if(isset($_REQUEST["transaction_id"]) && $_REQUEST["transaction_id"] != ""){
    $transaction_id = $_REQUEST["transaction_id"];
    $input = new WxPayOrderQuery();
    $input->SetTransaction_id($transaction_id);
    //printf_info(WxPayApi::orderQuery($input));
    $result=WxPayApi::orderQuery($input);
    echo $result[&#39;trade_state&#39;];
    exit();
}
 
if(isset($_REQUEST["out_trade_no"]) && $_REQUEST["out_trade_no"] != ""){
    $out_trade_no = $_REQUEST["out_trade_no"];
    $input = new WxPayOrderQuery();
    $input->SetOut_trade_no($out_trade_no);
    //printf_info(WxPayApi::orderQuery($input));
    $result=WxPayApi::orderQuery($input);
    echo $result[&#39;trade_state&#39;];
    exit();
}
?>
Copier après la connexion

Nouveau fichier success.php :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>微信支付成功</title>
</head>
 
<body>
<br /><br /><br /><br /><br /><br /><br />
<h1 id="微信支付成功">微信支付成功</h1>
</body>
</html>
Copier après la connexion

Ce ci-dessus est le code résumé par l'auteur. Après le débogage, il a été constaté qu'il n'y avait aucun problème. Les amis intéressés peuvent s'y référer.


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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Développement PHP WeChat : Comment implémenter le cryptage et le décryptage des messages Développement PHP WeChat : Comment implémenter le cryptage et le décryptage des messages May 13, 2023 am 11:40 AM

PHP est un langage de script open source largement utilisé dans le développement Web et la programmation côté serveur, notamment dans le développement de WeChat. Aujourd'hui, de plus en plus d'entreprises et de développeurs commencent à utiliser PHP pour le développement de WeChat, car il est devenu un langage de développement vraiment facile à apprendre et à utiliser. Dans le développement de WeChat, le cryptage et le décryptage des messages sont une question très importante car ils impliquent la sécurité des données. Pour les messages sans méthodes de cryptage et de décryptage, les pirates peuvent facilement obtenir les données, ce qui constitue une menace pour les utilisateurs.

Utiliser PHP pour développer des outils de messagerie de masse WeChat Utiliser PHP pour développer des outils de messagerie de masse WeChat May 13, 2023 pm 05:00 PM

Avec la popularité de WeChat, de plus en plus d’entreprises commencent à l’utiliser comme outil marketing. La fonction de messagerie de groupe WeChat est l'un des moyens importants permettant aux entreprises de mener du marketing WeChat. Cependant, si vous comptez uniquement sur l’envoi manuel, il s’agit d’une tâche extrêmement longue et laborieuse pour les spécialistes du marketing. Il est donc particulièrement important de développer un outil de messagerie de masse WeChat. Cet article présentera comment utiliser PHP pour développer des outils d'envoi de masse WeChat. 1. Travail de préparation Pour développer les outils d'envoi de masse WeChat, nous devons maîtriser les points techniques suivants : Connaissance de base du développement de la plateforme publique PHP WeChat Outils de développement : Sub

Développement PHP WeChat : Comment implémenter la gestion des balises utilisateur Développement PHP WeChat : Comment implémenter la gestion des balises utilisateur May 13, 2023 pm 04:31 PM

Dans le développement des comptes publics WeChat, la gestion des balises utilisateur est une fonction très importante, qui permet aux développeurs de mieux comprendre et gérer leurs utilisateurs. Cet article explique comment utiliser PHP pour implémenter la fonction de gestion des balises utilisateur WeChat. 1. Obtenez l'openid de l'utilisateur WeChat Avant d'utiliser la fonction de gestion des balises utilisateur WeChat, nous devons d'abord obtenir l'openid de l'utilisateur. Dans le développement des comptes publics WeChat, il est courant d'obtenir l'openid via l'autorisation de l'utilisateur. Une fois l'autorisation de l'utilisateur terminée, nous pouvons obtenir l'utilisateur via le code suivant

Développement PHP WeChat : Comment implémenter des enregistrements d'envoi de messages de groupe Développement PHP WeChat : Comment implémenter des enregistrements d'envoi de messages de groupe May 13, 2023 pm 04:31 PM

Alors que WeChat devient un outil de communication de plus en plus important dans la vie des gens, sa fonction de messagerie agile est rapidement privilégiée par un grand nombre d'entreprises et de particuliers. Pour les entreprises, développer WeChat en une plate-forme marketing est devenu une tendance, et l'importance du développement de WeChat est progressivement devenue plus importante. Parmi eux, la fonction d'envoi de groupe est encore plus largement utilisée. Alors, en tant que programmeur PHP, comment implémenter des enregistrements d'envoi de messages de groupe ? Ce qui suit vous donnera une brève introduction. 1. Comprendre les connaissances en développement liées aux comptes publics WeChat. Avant de comprendre comment mettre en œuvre des enregistrements d'envoi de messages de groupe, je

Développement PHP WeChat : Comment implémenter la gestion des fenêtres de discussion du service client Développement PHP WeChat : Comment implémenter la gestion des fenêtres de discussion du service client May 13, 2023 pm 05:51 PM

WeChat est actuellement l'une des plateformes sociales comptant la plus grande base d'utilisateurs au monde. Avec la popularité de l'Internet mobile, de plus en plus d'entreprises commencent à prendre conscience de l'importance du marketing WeChat. Lors du marketing WeChat, le service client est un élément crucial. Afin de mieux gérer la fenêtre de discussion du service client, nous pouvons utiliser le langage PHP pour le développement de WeChat. 1. Introduction au développement PHP WeChat PHP est un langage de script open source côté serveur largement utilisé dans le domaine du développement Web. En combinaison avec l'interface de développement fournie par la plateforme publique WeChat, nous pouvons utiliser le langage PHP pour mener WeChat

Développement PHP WeChat : Comment implémenter la fonction de vote Développement PHP WeChat : Comment implémenter la fonction de vote May 14, 2023 am 11:21 AM

Dans le développement des comptes publics WeChat, la fonction de vote est souvent utilisée. La fonction de vote est un excellent moyen pour les utilisateurs de participer rapidement aux interactions, et c'est également un outil important pour organiser des événements et recueillir des opinions. Cet article vous présentera comment utiliser PHP pour implémenter la fonction de vote WeChat. Obtenez l'autorisation du compte officiel WeChat. Tout d'abord, vous devez obtenir l'autorisation du compte officiel WeChat. Sur la plateforme publique WeChat, vous devez configurer l'adresse API du compte public WeChat, le compte officiel et le token correspondant au compte public. Dans le processus de développement en langage PHP, nous devons utiliser le PH officiellement fourni par WeChat

Comment utiliser PHP pour le développement WeChat ? Comment utiliser PHP pour le développement WeChat ? May 21, 2023 am 08:37 AM

Avec le développement d’Internet et des appareils mobiles intelligents, WeChat est devenu un élément indispensable dans les domaines social et marketing. Dans cette ère de plus en plus numérique, la manière d'utiliser PHP pour le développement de WeChat est devenue la préoccupation de nombreux développeurs. Cet article présente principalement les points de connaissances pertinents sur la façon d'utiliser PHP pour le développement WeChat, ainsi que certains conseils et précautions. 1. Préparation de l'environnement de développement Avant de développer WeChat, vous devez d'abord préparer l'environnement de développement correspondant. Plus précisément, vous devez installer l'environnement d'exploitation PHP et la plateforme publique WeChat

Étapes pour mettre en œuvre le développement du compte public WeChat à l'aide de PHP Étapes pour mettre en œuvre le développement du compte public WeChat à l'aide de PHP Jun 27, 2023 pm 12:26 PM

Comment utiliser PHP pour développer des comptes publics WeChat Les comptes publics WeChat sont devenus un canal important de promotion et d'interaction pour de nombreuses entreprises, et PHP, en tant que langage Web couramment utilisé, peut également être utilisé pour développer des comptes publics WeChat. Cet article présentera les étapes spécifiques pour utiliser PHP pour développer des comptes publics WeChat. Étape 1 : Obtenez le compte développeur du compte officiel WeChat. Avant de commencer le développement du compte officiel WeChat, vous devez demander un compte développeur du compte officiel WeChat. Pour le processus d'inscription spécifique, veuillez vous référer au site officiel de la plateforme publique WeChat

See all articles