Rumah >pembangunan bahagian belakang >tutorial php >Cara menggunakan PHP untuk pembangunan WeChat dan penyepaduan aplikasi
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:
$_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;
$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
, $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: 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; }
Selepas melengkapkan pengesahan permintaan, kami boleh memulakan interaksi Mesej pada akaun awam WeChat. Contoh kod khusus adalah seperti berikut:
Terima mesej
$GLOBALS['HTTP_RAW_POST_DATA']
PHP untuk menerima data mesej yang dihantar oleh pengguna. Kodnya adalah seperti berikut: 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; }
Selain interaksi mesej, kami juga boleh menyepadukan pembayaran WeChat melalui PHP. Langkah-langkah khusus adalah seperti berikut:
Dapatkan prepay_id
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!