Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan PHP untuk pembangunan WeChat dan penyepaduan aplikasi

Cara menggunakan PHP untuk pembangunan WeChat dan penyepaduan aplikasi

王林
王林asal
2023-08-03 22:40:441345semak imbas

Tajuk: Cara menggunakan PHP untuk pembangunan WeChat dan integrasi aplikasi

Pengenalan:
Dengan perkembangan pesat Internet mudah alih, WeChat telah menjadi bahagian penting dalam kehidupan harian orang ramai. Melalui pembangunan akaun awam WeChat, kami boleh merealisasikan fungsi seperti interaksi dengan pengguna, dorongan maklumat dan pembayaran. Artikel ini akan memperkenalkan cara menggunakan PHP untuk pembangunan WeChat dan penyepaduan aplikasi untuk membantu pembaca bermula dengan cepat.

1. Cipta akaun awam WeChat
Pertama, kita perlu mempunyai akaun awam WeChat, yang boleh digunakan melalui platform awam WeChat. Selepas aplikasi berjaya, kami akan mendapatkan AppID dan AppSecret untuk kerja pembangunan dan penyepaduan seterusnya.

2. Penyediaan persekitaran PHP
Sebelum meneruskan pembangunan WeChat, kami perlu memastikan bahawa persekitaran PHP telah dikonfigurasikan pada pelayan. Kami boleh mengesahkan sama ada persekitaran PHP adalah normal melalui arahan berikut:

php -v

Jika maklumat versi PHP boleh dipaparkan dengan betul, ini bermakna persekitaran PHP sudah sedia.

3. WeChat meminta pengesahan
Sebelum berinteraksi dengan akaun rasmi WeChat, kami perlu mengesahkan permintaan WeChat terlebih dahulu. Langkah pengesahan khusus adalah seperti berikut:

  1. Terima permintaan
    Kami menggunakan pembolehubah global $_GET PHP untuk menerima parameter permintaan daripada WeChat. Kod khusus adalah seperti berikut: $_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;
    
        // 在这里可以根据不同的消息类型进行相应的逻辑处理
    }
    Sahkan tandatangan
  1. Kamus mengisih $timestamp, $nonce dan AppToken yang diterima, dan kemudian Gunakan algoritma SHA1 untuk menjana tandatangan dan membandingkannya dengan $signature yang dihantar daripada WeChat untuk menentukan kesahihan permintaan:
  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 interaksi mesej WeChat

Selepas melengkapkan pengesahan permintaan, kami boleh memulakan interaksi Mesej pada akaun awam WeChat. Contoh kod khusus adalah seperti berikut:


Terima mesej

Kami menggunakan pembolehubah global $GLOBALS['HTTP_RAW_POST_DATA'] PHP untuk menerima data mesej yang dihantar oleh pengguna. Kodnya adalah seperti berikut:
  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. Balas mesej
Mengikut keperluan, kami boleh menggunakan data format XML yang sepadan untuk membalas mesej pengguna. Contoh kod adalah seperti berikut:
  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;
    }

    Di atas adalah proses interaksi mesej WeChat yang mudah, yang boleh dikembangkan dan dioptimumkan mengikut keperluan sebenar.
5. Penyepaduan pembayaran WeChat

Selain interaksi mesej, kami juga boleh menyepadukan pembayaran WeChat melalui PHP. Langkah-langkah khusus adalah seperti berikut:


Dapatkan prepay_id

Kami perlu menghantar data XML yang mengandungi maklumat pesanan ke antara muka pembayaran WeChat untuk mendapatkan prepay_id. Contoh kod adalah seperti berikut: 🎜🎜rrreee🎜🎜Tandatangan pembayaran JSAPI🎜Selepas mendapatkan maklumat berkaitan pembayaran melalui prepay_id, kami juga perlu menggunakan maklumat ini untuk melaksanakan tandatangan pembayaran JSAPI. Contoh kod adalah seperti berikut: 🎜🎜rrreee🎜Melalui kod di atas, kami telah melaksanakan fungsi interaksi mesej dan penyepaduan pembayaran akaun rasmi WeChat. Pembaca boleh mengembangkan dan mengoptimumkan mengikut keperluan khusus untuk mencapai fungsi yang lebih menarik. 🎜🎜Kesimpulan: 🎜Melalui pengenalan artikel ini, kami telah mempelajari proses asas cara menggunakan PHP untuk pembangunan WeChat dan integrasi aplikasi. Saya berharap pembaca dapat mendalami pemahaman mereka tentang pembangunan WeChat melalui amalan dan secara fleksibel menerapkannya dalam projek sebenar. Saya doakan anda semua lebih berjaya dalam perjalanan pembangunan WeChat anda! 🎜

Atas ialah kandungan terperinci Cara menggunakan PHP untuk pembangunan WeChat dan penyepaduan aplikasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn