Cet article présente principalement en détail les méthodes pertinentes pour obtenir JSAPI_TICKET dans le développement WeChat. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
1. 1. Obtenez access_token
2. Échangez access_token contre jsapi_ticket
3. Algorithme de signature
Les règles de génération de signature sont les suivantes : Les champs impliqués dans la signature incluent. noncestr (chaîne aléatoire), jsapi_ticket valide, timestamp (horodatage), url (URL de la page Web actuelle, à l'exclusion de # et de ses parties suivantes). Après avoir trié tous les paramètres à signer selon le code ASCII du nom du champ de petit à grand (ordre lexicographique), utilisez le format de paire clé-valeur d'URL (c'est-à-dire clé1=valeur1&clé2=valeur2...) pour les concaténer en un chaîne chaîne1. Il convient de noter ici que tous les noms de paramètres sont en minuscules. Effectuez le cryptage sha1 sur string1, utilisez les valeurs d'origine pour les noms de champs et les valeurs de champ et n'effectuez pas d'échappement d'URL.
2. Méthode de mise en œuvre spécifique1. Obtenir access_token
/** * [getAccessToken description] 获取access_token * @return [type] [description] */private function getAccessToken() { $data = $this->getFile($this->accessTokenFile); if(time() - $data['time'] > 0){ $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appID}&secret={$this->appsecret}"; $re = $this->httpGet($url); $access_token = $re['access_token']; if(isset($access_token)){ $data['access_token'] = $access_token; $data['time'] = time() + 7200; $this->setFile($this->accessTokenFile,json_encode($data)); } }else{ $access_token = $data['access_token']; } return $access_token; }
2 Obtenez jsapi_ticket
/** * [getJsapiTicket description] 获取jsapi_ticket * @return [type] [description] */private function getJsapiTicket() { $access_token = $this->getAccessToken(); $jsapi_ticket = $this->getFile($this->jsapiTicketFile); if(time() - $jsapi_ticket['time'] > 0) { $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$access_token}&type=jsapi"; $re = $this->httpGet($url); $this->preArr($re); $jsapi_ticket = $re['ticket']; if(isset($jsapi_ticket)){ $data['jsapi_ticket'] = $jsapi_ticket; $data['time'] = time() + 7200; $this->setFile($this->jsapiTicketFile, json_encode($data)); } }else{ $jsapi_ticket = $jsapi_ticket['jsapi_ticket']; } return $jsapi_ticket; }
3 Générer une signature
/** * [getSignpackage description] 获取签名 * @return [type] [description] */public function getSignpackage(){ $jsapi_ticket = $this->getJsapiTicket(); // 注意 URL 一定要动态获取,不能 hardcode. $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $noncestr = $this->createNonceStr(); $timestamp = time(); $string1 = "jsapi_ticket={$jsapi_ticket}&noncestr={$noncestr}×tamp={$timestamp}&url={$url}"; $signature = sha1($string1); $signPackage = array( 'appId' => $this->appID, 'nonceStr' => $noncestr, 'timestamp' => $timestamp, 'signature' => $signature, ); return $signPackage; }
use Le format de la paire clé-valeur de l'URL (c'est-à-dire key1=value1&key2=value2...) est épissé dans la chaîne string1 :
Signez la chaîne1 avec sha1 pour obtenir la signature :
Notes :1. Le noncestr et l'horodatage utilisés pour la signature doivent être les mêmes que le nonceStr et l'horodatage dans wx.config.
2. L'URL utilisée pour la signature doit être l'URL complète de la page appelant l'interface JS.
3. Pour des raisons de sécurité, les développeurs doivent implémenter une logique de signature côté serveur.
Pour plus de détails, veuillez vous référer à : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
Recommandations associées :
À propos de WeChat Obtenez jsapi_ticket pendant le développementTutoriel d'instance pour obtenir jsapi_ticket pour le développement de WeChatWeChat jsapi pour le développement de WeChat sélectionne des images, télécharge des images , prévisualise et télécharge des images MéthodeCe 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!