Maison >développement back-end >tutoriel php >Comment utiliser PHP pour le développement et l'intégration d'applications WeChat

Comment utiliser PHP pour le développement et l'intégration d'applications WeChat

王林
王林original
2023-08-03 22:40:441428parcourir

Titre : Comment utiliser PHP pour le développement et l'intégration d'applications WeChat

Introduction :
Avec le développement rapide de l'Internet mobile, WeChat est devenu un élément important de la vie quotidienne des gens. Grâce au développement des comptes publics WeChat, nous pouvons réaliser des fonctions telles que l'interaction avec les utilisateurs, la transmission d'informations et le paiement. Cet article expliquera comment utiliser PHP pour le développement et l'intégration d'applications WeChat afin d'aider les lecteurs à démarrer rapidement.

1. Créer un compte public WeChat
Tout d'abord, nous devons avoir un compte public WeChat, qui peut être appliqué via la plateforme publique WeChat. Une fois l'application réussie, nous obtiendrons un AppID et un AppSecret pour les travaux de développement et d'intégration ultérieurs.

2. Préparation de l'environnement PHP
Avant de commencer le développement de WeChat, nous devons nous assurer que l'environnement PHP a été configuré sur le serveur. Nous pouvons confirmer si l'environnement PHP est normal grâce à la commande suivante :

php -v

Si les informations de version PHP peuvent s'afficher correctement, cela signifie que l'environnement PHP est prêt.

3. Vérification de la demande WeChat
Avant d'interagir avec le compte officiel WeChat, nous devons d'abord vérifier la demande WeChat. Les étapes de vérification spécifiques sont les suivantes :

  1. Recevoir la demande
    Nous utilisons la variable globale $_GET de PHP pour recevoir les paramètres de la demande de WeChat. Le code spécifique est le suivant : $_GET全局变量来接收来自微信的请求参数。具体的代码如下:
$signature = $_GET['signature'];
$timestamp = $_GET['timestamp'];
$nonce = $_GET['nonce'];
$echostr = $_GET['echostr'];

// 此处可以进行其他业务逻辑的处理

echo $echostr;
  1. 验证签名
    将接收到的$timestamp$nonceAppToken进行字典排序,然后使用SHA1算法生成签名,与微信传来的$signature进行比对,判断请求的合法性:
$token = 'YourAppToken'; // 替换为你的AppToken

$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);

if ($tmpStr == $signature) {
    // 验证通过,返回true
    return true;
} else {
    // 验证失败,返回false
    return false;
}

四、微信消息交互
在完成请求验证之后,我们可以开始进行微信公众号的消息交互。具体的代码示例如下:

  1. 接收消息
    我们使用PHP的$GLOBALS['HTTP_RAW_POST_DATA']
  2. $postData = $GLOBALS['HTTP_RAW_POST_DATA'];
    
    if (!empty($postData)) {
        $postObj = simplexml_load_string($postData, 'SimpleXMLElement', LIBXML_NOCDATA);
    
        $msgType = $postObj->MsgType;
        $content = $postObj->Content;
    
        // 在这里可以根据不同的消息类型进行相应的逻辑处理
    }
    Vérifier la signature
  1. Le dictionnaire trie le $timestamp, le $nonce et le AppToken reçus, puis Utilisez l'algorithme SHA1 pour générer une signature et comparez-la avec le $signature envoyé depuis WeChat pour déterminer la légitimité de la demande :
  2. function replyTextMessage($fromUsername, $toUsername, $content) {
        $time = time();
    
        $response = sprintf(
            '<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[text]]></MsgType>
                <Content><![CDATA[%s]]></Content>
            </xml>',
            $toUsername,
            $fromUsername,
            $time,
            $content
        );
    
        echo $response;
    }
4. Interaction avec le message WeChat

Après avoir terminé la vérification de la demande, nous peut démarrer l'interaction des messages sur les comptes publics WeChat. L'exemple de code spécifique est le suivant :


Recevoir des messages

Nous utilisons la variable globale $GLOBALS['HTTP_RAW_POST_DATA'] de PHP pour recevoir les données du message envoyé par l'utilisateur. Le code est le suivant :
  1. function getPrepayId($outTradeNo, $totalFee, $notifyUrl) {
        $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
        $data = array(
            'appid' => 'YourAppID', // 替换为你的AppID
            'mch_id' => 'YourMchID', // 替换为你的MchID
            'nonce_str' => str_shuffle('abcdefghijklmnopqrstuvwxyz1234567890'),
            'body' => '订单支付',
            'out_trade_no' => $outTradeNo,
            'total_fee' => $totalFee,
            'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],
            'notify_url' => $notifyUrl,
            'trade_type' => 'JSAPI',
            'openid' => 'UserOpenID' // 替换为用户的OpenID
        );
    
        // 计算签名
        ksort($data);
        $string = http_build_query($data) . '&key=YourKey'; // 替换为你的Key
        $data['sign'] = strtoupper(md5($string));
    
        // 发送请求
        $xml = '<xml>';
        foreach ($data as $key => $value) {
            $xml .= sprintf('<%s>%s</%s>', $key, $value, $key);
        }
        $xml .= '</xml>';
    
        $response = file_get_contents($url, false, stream_context_create(array(
            'http' => array(
                'method' => 'POST',
                'header' => 'Content-Type: text/xml',
                'content' => $xml
            )
        )));
    
        // 解析结果
        $responseObj = simplexml_load_string($response, 'SimpleXMLElement', LIBXML_NOCDATA);
    
        return $responseObj->prepay_id;
    }

  2. Répondre au message
Selon les besoins, nous pouvons utiliser les données au format XML correspondantes pour répondre au message de l'utilisateur. L'exemple de code est le suivant :
  1. function getPaySign($prepayId, $appId, $timeStamp, $nonceStr) {
        $data = array(
            'appId' => $appId,
            'timeStamp' => $timeStamp,
            'nonceStr' => $nonceStr,
            'package' => 'prepay_id=' . $prepayId,
            'signType' => 'MD5'
        );
    
        // 计算签名
        ksort($data);
        $string = http_build_query($data) . '&key=YourKey'; // 替换为你的Key
        $sign = strtoupper(md5($string));
    
        return $sign;
    }

    Ce qui précède est un simple processus d'interaction avec les messages WeChat, qui peut être étendu et optimisé en fonction des besoins réels.
5. Intégration du paiement WeChat

En plus de l'interaction par message, nous pouvons également intégrer le paiement WeChat via PHP. Les étapes spécifiques sont les suivantes :


Obtenir le prepay_id

Nous devons envoyer des données XML contenant les informations de commande à l'interface de paiement WeChat pour obtenir le prepay_id. L'exemple de code est le suivant : 🎜🎜rrreee🎜🎜Signature de paiement JSAPI🎜Après avoir obtenu les informations relatives au paiement via prepay_id, nous devons également utiliser ces informations pour effectuer la signature de paiement JSAPI. L'exemple de code est le suivant : 🎜🎜rrreee🎜Grâce au code ci-dessus, nous avons implémenté les fonctions d'interaction de message et d'intégration de paiement du compte officiel WeChat. Les lecteurs peuvent étendre et optimiser en fonction de besoins spécifiques pour obtenir des fonctions plus intéressantes. 🎜🎜Conclusion : 🎜Grâce à l'introduction de cet article, nous avons appris le processus de base d'utilisation de PHP pour le développement et l'intégration d'applications WeChat. J'espère que les lecteurs pourront approfondir leur compréhension du développement de WeChat par la pratique et l'appliquer de manière flexible dans des projets réels. Je vous souhaite à tous plus de succès dans votre parcours de développement WeChat ! 🎜

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

Articles Liés

Voir plus