


Partagez une expérience de développement PHP WeChat. Parfois, lorsqu'un projet ou un projet doit être partagé sur WeChat pour réaliser une série d'événements, nous devons alors obtenir l'action de partage WeChat, ce qui signifie que nous savons déjà que l'élément en cours a été activé. a été partagé, il n'est évidemment pas possible d'utiliser le partage par défaut de WeChat. Nous devons configurer nous-mêmes le partage WeChat. Lorsque les utilisateurs partagent, ils suivent nos procédures prédéterminées, afin que nous puissions facilement réaliser ce qu'ils font après le partage.
C?té page, il y a principalement un js comme suit :
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> wx.config({ debug: false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來(lái),若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會(huì)通過log打出,僅在pc端時(shí)才會(huì)打印。 appId: '{$appid}', // 必填,公眾號(hào)的唯一標(biāo)識(shí) timestamp:{$timestamp} , // 必填,生成簽名的時(shí)間戳 nonceStr: '{$nonceStr}', // 必填,生成簽名的隨機(jī)串 signature: '{$signature}',// 必填,簽名,見附錄1 jsApiList: ['onMenuShareAppMessage','onMenuShareTimeline'] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2 }); wx.ready(function(){ //分享給朋友 wx.onMenuShareAppMessage({ title: {$title}, // 分享標(biāo)題 此處$title可在控制器端傳遞也可在頁(yè)面?zhèn)鬟f 頁(yè)面?zhèn)鬟f講解在下面哦 desc: {$desc}, //分享描述 link: {$link}, // 分享鏈接 imgUrl: {$imgurl}, // 分享圖標(biāo) type: '', // 分享類型,music、video或link,不填默認(rèn)為link dataUrl: '', // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認(rèn)為空 success: function () { alert('分享成功'); }, cancel: function () { // 用戶取消分享后執(zhí)行的回調(diào)函數(shù) // alert('取消分享'); } }); //分享到朋友圈 wx.onMenuShareTimeline({ title: {$title}, // 分享標(biāo)題 desc: {$desc}, // 分享描述 link: {$link}, // 分享鏈接 imgUrl: {$imgurl}, // 分享圖標(biāo) success: function () { // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù) }, cancel: function () { // 用戶取消分享后執(zhí)行的回調(diào)函數(shù) } }); }); </script>
Lorsque wx.config est configuré, le programme procédera au partage suivant Vous pouvez changer false en true. pour le débogage ici. S'il est configuré, ok et d'autres informations appara?tront normalement. S'il n'est pas configuré, le changer en true n'aura aucun effet pop-up
wx.config nécessite quatre paramètres. le contr?leur, à savoir appId, timestamp, nonceStr et signature ; Le code du contr?leur est le suivant?:
<?php $jssdk = new \Home\Util\JSSDK(C('APPID'), C('SECRET'));//此處C里面的東西為你所使用的公眾號(hào)的appid和secret,這倆個(gè)東西可在微信公眾平臺(tái)獲取到 不詳細(xì)解釋 找不到追加評(píng)論(講解) JSSDK文件代碼在下 $signPackage = $jssdk->GetSignPackage(); $this->assign('appid',$signPackage["appId"]); $this->assign('timestamp',$signPackage["timestamp"]); $this->assign('nonceStr',$signPackage["nonceStr"]); $this->assign('signature',$signPackage["signature"]);
Le wx.config est configuré ici, et vous pouvez également transmettre le titre et d'autres informations. Voici un exemple
$this->assign( 'title',$title);
Code du fichier JSSDK?:
<?php namespace Home\Util; use Think\Controller; class JSSDK{ private $appId; private $appSecret; public function __construct($appId, $appSecret) { $this->appId = $appId; $this->appSecret = $appSecret; } public function getSignPackage() { $jsapiTicket = $this->getJsApiTicket(); // 注意 URL 一定要?jiǎng)討B(tài)獲取,不能 hardcode. $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $timestamp = time(); $nonceStr = $this->createNonceStr(); // 這里參數(shù)的順序要按照 key 值 ASCII 碼升序排序 $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url"; $signature = sha1($string); $signPackage = array( "appId" => $this->appId, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "url" => $url, "signature" => $signature, "rawString" => $string ); return $signPackage; } private function createNonceStr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } public function getJsApiTicket() { // jsapi_ticket 應(yīng)該全局存儲(chǔ)與更新,以下代碼以寫入到文件中做示例 $data = json_decode($this->get_php_file("jsapi_ticket.php")); if ($data->expire_time < time()) { $accessToken = $this->getAccessToken(); // 如果是企業(yè)號(hào)用以下 URL 獲取 ticket // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken"; $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$accessToken&type=jsapi"; $res = json_decode($this->httpGet($url)); $ticket = $res->ticket; // var_dump($url); if ($ticket) { $data->expire_time = time() + 7000; $data->jsapi_ticket = $ticket; $this->set_php_file("jsapi_ticket.php", json_encode($data)); } } else { $ticket = $data->jsapi_ticket; } return $ticket; } public function getAccessToken() { // access_token 應(yīng)該全局存儲(chǔ)與更新,以下代碼以寫入到文件中做示例 $data = json_decode($this->get_php_file("access_token.php")); if ($data->expire_time < time()) { // 如果是企業(yè)號(hào)用以下URL獲取access_token // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret"; $res = $this->getJson($url); $access_token = $res['access_token']; // var_dump($res); if ($access_token) { $data->expire_time = time() + 7000; $data->access_token = $access_token; $this->set_php_file("access_token.php", json_encode($data)); } } else { $access_token = $data->access_token; } return $access_token; // $aa = $access_token; // var_dump($aa); } //獲取access_token public function getJson($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); // var_dump(json_decode($output, true)); return json_decode($output, true); } //獲取ticket private function httpGet($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl_setopt($curl, CURLOPT_TIMEOUT, 500); // 為保證第三方服務(wù)器與微信服務(wù)器之間數(shù)據(jù)傳輸?shù)陌踩裕形⑿沤涌诓捎胔ttps方式調(diào)用,必須使用下面2行代碼打開ssl安全校驗(yàn)。 // 如果在部署過程中代碼在此處驗(yàn)證失敗,請(qǐng)到 http://curl.haxx.se/ca/cacert.pem 下載新的證書判別文件。 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); $res = curl_exec($curl); // var_dump($res); curl_close($curl); return $res; } private function get_php_file($filename) { return trim(substr(file_get_contents($filename), 15)); // echo trim(substr(file_get_contents($filename), 15));die; // $aa = trim(substr(file_get_contents($filename), 15)); } private function set_php_file($filename, $content) { $fp = fopen($filename, "w"); fwrite($fp, "<?php exit();?>" . $content); fclose($fp); } }
à ce stade, le partage WeChat arrive à sa fin, mais il y a des défauts. Que faire si nous voulons transmettre des paramètres dynamiquement ? Que devons-nous faire si nous voulons soudainement réaffecter des informations variables telles que $title après la configuration des informations de la page wx.config ?
Nous pouvons écrire le partage dans une méthode comme suit (code approximatif)?:
<script> var zl= function (title,link,imgurl,desc){ wx.ready(function(){ //分享給朋友 wx.onMenuShareAppMessage({ title: title, // 分享標(biāo)題 desc: desc, //分享描述 link: link, // 分享鏈接 imgUrl: imgurl, // 分享圖標(biāo) type: '', // 分享類型,music、video或link,不填默認(rèn)為link dataUrl: '', // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認(rèn)為空 success: function () { alert('分享成功'); }, cancel: function () { // 用戶取消分享后執(zhí)行的回調(diào)函數(shù) // alert('取消分享'); } }); //分享到朋友圈 wx.onMenuShareTimeline({ title: title, // 分享標(biāo)題 desc: desc, // 分享描述 link: link, // 分享鏈接 imgUrl: imgurl, // 分享圖標(biāo) success: function () { // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù) }, cancel: function () { // 用戶取消分享后執(zhí)行的回調(diào)函數(shù) // alert('已取消分享'); } }); }); }; </script>
Expliquez que le titre et les autres informations du partage ont été configurés à partir du contr?leur. , je veux redonner la valeur du titre sur la page, c'est donc la méthode Le code de copie de la page est le suivant
<script> zl(title,link,imgurl,desc); </script>
facile les amis, si vous voulez en savoir plus. à propos de cette fonction sur WeChat et d'autres fonctions, veuillez vous référer au manuel
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun, et j'espère également que tout le monde prendra en charge PHP. Site chinois.
Pour des articles plus détaillés sur le partage et le développement de PHP WeChat, veuillez faire attention au site Web PHP chinois?!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)