In diesem Artikel werden hauptsächlich die relevanten Methoden zum Erhalten von JSAPI_TICKET in der WeChat-Entwicklung vorgestellt. Interessierte Freunde können sich darauf beziehen
1. Beschaffungsprozess
1. Access_token erhalten
2. Access_token gegen jsapi_ticket austauschen
3. Signaturerstellungsregeln sind wie folgt: Die an der Signatur beteiligten Felder umfassen noncestr (zufällige Zeichenfolge), gültiges jsapi_ticket, Zeitstempel (Zeitstempel), URL (URL der aktuellen Webseite, ohne # und die folgenden Teile). Nachdem Sie alle zu signierenden Parameter entsprechend dem ASCII-Code des Feldnamens von klein nach groß (lexikografische Reihenfolge) sortiert haben, verwenden Sie das URL-Schlüssel-Wert-Paarformat (d. h. Schlüssel1=Wert1&Schlüssel2=Wert2...), um sie zu a zu verketten Zeichenfolge Zeichenfolge1. Dabei ist zu beachten, dass alle Parameternamen Kleinbuchstaben sind. Führen Sie die SHA1-Verschlüsselung für Zeichenfolge1 durch, verwenden Sie Originalwerte für Feldnamen und Feldwerte und führen Sie kein URL-Escape durch.
2. Spezifische Implementierungsmethode1. Erhalten Sie den Zugriffstoken
/** * [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; }
Signieren Sie string1 mit sha1, um die Signatur zu erhalten:
Hinweise:
/** * [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; }
1. Der für die Signatur verwendete Noncestr und Zeitstempel muss mit dem NonceStr und dem Zeitstempel in wx.config übereinstimmen.
2. Die für die Signatur verwendete URL muss die vollständige URL der Seite sein, die die JS-Schnittstelle aufruft.
3. Aus Sicherheitsgründen müssen Entwickler die Signaturlogik serverseitig implementieren.
/** * [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; }
Verwandte Empfehlungen:
Über WeChat Holen Sie sich jsapi_ticket während der Entwicklung Instanz-Tutorial zum Abrufen von jsapi_ticket für die WeChat-EntwicklungWeChat jsapi für die WeChat-Entwicklung wählt Bilder aus und lädt Bilder hoch , Vorschau und Download von Bildern Methode
Das obige ist der detaillierte Inhalt vonBeispielfreigabe der WeChat-Entwicklung, um ein JSAPI-TICKET zu erhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!