Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielfreigabe der WeChat-Entwicklung, um ein JSAPI-TICKET zu erhalten

Beispielfreigabe der WeChat-Entwicklung, um ein JSAPI-TICKET zu erhalten

小云云
小云云Original
2018-02-08 14:08:591932Durchsuche

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 Implementierungsmethode

1. Erhalten Sie den Zugriffstoken


Die gültige Zeit des Zugriffstokens ist 7200s, sodass Sie es durch Dateispeicherung speichern können, um mehrere Anfragen zu vermeiden , die Gültigkeitsdauer beträgt ebenfalls 7200s; Verwenden Sie das Format des URL-Schlüssel-Wert-Paares (d. h. key1=value1&key2=value2...) wird in die Zeichenfolge string1 gespleißt:
/**
 * [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.

Einzelheiten finden Sie unter: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
/**
 * [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}&timestamp={$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-Entwicklung

WeChat 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn