Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie PHP für die WeChat-Entwicklung und Anwendungsintegration

So verwenden Sie PHP für die WeChat-Entwicklung und Anwendungsintegration

王林
王林Original
2023-08-03 22:40:441346Durchsuche

Titel: So verwenden Sie PHP für die WeChat-Entwicklung und Anwendungsintegration

Einleitung:
Mit der rasanten Entwicklung des mobilen Internets ist WeChat zu einem wichtigen Bestandteil des täglichen Lebens der Menschen geworden. Durch die Entwicklung öffentlicher WeChat-Konten können wir Funktionen wie Interaktion mit Benutzern, Informationsübermittlung und Zahlung realisieren. In diesem Artikel wird die Verwendung von PHP für die WeChat-Entwicklung und Anwendungsintegration vorgestellt, um den Lesern einen schnellen Einstieg zu erleichtern.

1. Erstellen Sie ein öffentliches WeChat-Konto
Zuerst benötigen wir ein öffentliches WeChat-Konto, das über die öffentliche WeChat-Plattform angewendet werden kann. Nach erfolgreicher Bewerbung erhalten wir eine AppID und ein AppSecret für nachfolgende Entwicklungs- und Integrationsarbeiten.

2. Vorbereitung der PHP-Umgebung
Bevor wir mit der WeChat-Entwicklung fortfahren, müssen wir sicherstellen, dass die PHP-Umgebung auf dem Server konfiguriert wurde. Mit dem folgenden Befehl können wir bestätigen, ob die PHP-Umgebung normal ist:

php -v

Wenn die PHP-Versionsinformationen korrekt angezeigt werden können, bedeutet dies, dass die PHP-Umgebung bereit ist.

3. Überprüfung der WeChat-Anfrage
Bevor wir mit dem offiziellen WeChat-Konto interagieren, müssen wir zunächst die WeChat-Anfrage überprüfen. Die spezifischen Verifizierungsschritte sind wie folgt:

  1. Anfrage empfangen
    Wir verwenden die globale Variable $_GET von PHP, um Anfrageparameter von WeChat zu empfangen. Der spezifische Code lautet wie folgt: $_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;
    
        // 在这里可以根据不同的消息类型进行相应的逻辑处理
    }
    Signatur überprüfen
  1. Sortieren Sie den empfangenen $timestamp, $nonce und AppToken im Wörterbuch und dann Verwenden Sie den SHA1-Algorithmus, um eine Signatur zu generieren und diese mit der von WeChat gesendeten $signatur zu vergleichen, um die Legitimität der Anfrage zu bestimmen:
  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. WeChat-Nachrichteninteraktion

Nach Abschluss der Anfrageüberprüfung haben wir kann die Nachrichteninteraktion auf öffentlichen WeChat-Konten starten. Das spezifische Codebeispiel lautet wie folgt:


Nachrichten empfangen

Wir verwenden die globale Variable $GLOBALS['HTTP_RAW_POST_DATA'] von PHP, um die vom Benutzer gesendeten Nachrichtendaten zu empfangen. Der Code lautet wie folgt:
  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. Auf Nachricht antworten
Je nach Anforderung können wir die entsprechenden XML-Formatdaten verwenden, um auf die Nachricht des Benutzers zu antworten. Das Codebeispiel lautet wie folgt:
  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;
    }

    Das Obige ist ein einfacher WeChat-Nachrichteninteraktionsprozess, der entsprechend den tatsächlichen Anforderungen erweitert und optimiert werden kann.
5. WeChat-Zahlungsintegration

Zusätzlich zur Nachrichteninteraktion können wir auch WeChat-Zahlungen über PHP integrieren. Die spezifischen Schritte sind wie folgt:


Prepay_id abrufen

Wir müssen XML-Daten mit Bestellinformationen an die WeChat-Zahlungsschnittstelle senden, um die prepay_id zu erhalten. Das Codebeispiel lautet wie folgt: 🎜🎜rrreee🎜🎜JSAPI-Zahlungssignatur🎜Nachdem wir die zahlungsbezogenen Informationen über prepay_id erhalten haben, müssen wir diese Informationen auch verwenden, um eine JSAPI-Zahlungssignatur durchzuführen. Das Codebeispiel lautet wie folgt: 🎜🎜rrreee🎜Mit dem obigen Code haben wir die Nachrichteninteraktions- und Zahlungsintegrationsfunktionen des offiziellen WeChat-Kontos implementiert. Leser können je nach Bedarf erweitern und optimieren, um interessantere Funktionen zu erreichen. 🎜🎜Fazit: 🎜Durch die Einleitung dieses Artikels haben wir den grundlegenden Prozess zur Verwendung von PHP für die WeChat-Entwicklung und Anwendungsintegration kennengelernt. Ich hoffe, dass die Leser ihr Verständnis der WeChat-Entwicklung durch die Praxis vertiefen und sie flexibel in tatsächlichen Projekten anwenden können. Ich wünsche Ihnen allen mehr Erfolg bei der WeChat-Entwicklung! 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP für die WeChat-Entwicklung und Anwendungsintegration. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn