Maison >développement back-end >tutoriel php >Comment utiliser PHP pour le développement et l'intégration d'applications WeChat
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 :
$_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;
$timestamp
、$nonce
和AppToken
进行字典排序,然后使用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; }
四、微信消息交互
在完成请求验证之后,我们可以开始进行微信公众号的消息交互。具体的代码示例如下:
$GLOBALS['HTTP_RAW_POST_DATA']
$postData = $GLOBALS['HTTP_RAW_POST_DATA']; if (!empty($postData)) { $postObj = simplexml_load_string($postData, 'SimpleXMLElement', LIBXML_NOCDATA); $msgType = $postObj->MsgType; $content = $postObj->Content; // 在这里可以根据不同的消息类型进行相应的逻辑处理 }
$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 : 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; }
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
$GLOBALS['HTTP_RAW_POST_DATA']
de PHP pour recevoir les données du message envoyé par l'utilisateur. Le code est le suivant : 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; }
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; }
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
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!