1. 程式人生 > >呼叫微信JSSDK

呼叫微信JSSDK

1定義一個微信jssdk 類

<?php
class JSSDK {
  private $appId;
  private $appSecret;

  public function __construct($appId, $appSecret) {
    $this->appId = $appId;
    $this->appSecret = $appSecret;
  }

  public function getSignPackage() {
    $jsapiTicket = $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]";

    $timestamp = time();
    $nonceStr = $this->createNonceStr();

    // 這裡引數的順序要按照 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;
  }

  private function getJsApiTicket() {
    // jsapi_ticket 應該全域性儲存與更新,以下程式碼以寫入到檔案中做示例
    $data = json_decode(file_get_contents("wxjs/jsapi_ticket.json"));   
    if ($data->expire_time < time()) {
      $accessToken = $this->getAccessToken();     
      // 如果是企業號用以下 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?type=jsapi&access_token=$accessToken";
      $res = json_decode($this->httpGet($url));
      $ticket = $res->ticket;
      if ($ticket) {
        $data->expire_time = time() + 7000;
        $data->jsapi_ticket = $ticket;
        $fp = fopen("wxjs/jsapi_ticket.json", "w");
        fwrite($fp, json_encode($data));
        fclose($fp);
      }
    } else {
      $ticket = $data->jsapi_ticket;
    }

    return $ticket;
  }

  private function getAccessToken() {
    // access_token 應該全域性儲存與更新,以下程式碼以寫入到檔案中做示例
    $data = json_decode(file_get_contents("wxjs/access_token.json"));   
    if ($data->expire_time < time()) {
      // 如果是企業號用以下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 = json_decode($this->httpGet($url));
      $access_token = $res->access_token;
      if ($access_token) {
        $data->expire_time = time() + 7000;
        $data->access_token = $access_token;
        $fp = fopen("wxjs/access_token.json", "w");
        fwrite($fp, json_encode($data));
        fclose($fp);
      }
    } else {
      $access_token = $data->access_token;
    }
    return $access_token;
  }

  private function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_URL, $url);
    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }
}


相關推薦

呼叫JSSDK實現分享功能

最近遇到一個專案是基於微擎框架做一個分享功能的,微擎本身是自帶分享功能的,只是這次想要實現自定義分享內容,故進行了以下程式碼處理 * $_W[‘account’][‘jssdkconfig’]是微擎封裝好的jssdk簽名包的內容 * php頁面程式碼 <?php if

呼叫JSSDK介面,實現自定義分享功能

1,你需有一個公眾號,沒有不用談自定義分享內容了; 2,公眾號上把你的域名增加到“JS介面安全域名”: 3,我這功能是基於thinkphp3.1實現的,按下圖上網下包放在對應該目錄下: 4,修改核心公共檔案:functions.php 加入程式碼: /*

呼叫JSSDK

1定義一個微信jssdk 類 <?php class JSSDK { private $appId; private $appSecret; public function __construct($appId, $appSecret) { $t

Java呼叫JSSDK那些坑

最近公司專案要求自定義微信分享樣式,我就接手了這個微信JSSDK的介面呼叫。首先你要有一個公眾號。然後需要在公眾號的設定-公眾號設定-功能設定設定我們的安全域名。我們把檔案下載下來,然後放到我們填寫的域名,注意:一定要放在你要呼叫微信的介面的路徑下一,只能是域名後跟一個目錄,

ios 呼叫JSSDK 簽名失敗解決方法

用SPA做微信h5,呼叫微信jssdk的頁面,安卓微信上木有問題,ios微信報當前url未註冊 經過除錯,是ios微信版本問題導致頁面跳轉url未變化,導致驗籤失敗 所以我們大致的思想就是:在ios微信環境中(判斷瀏覽器環境請參考我的另一篇文章–js判斷瀏覽

JSSDK呼叫原生的功能上傳圖片儲存到自己的伺服器中

第一件事首先是微信的選擇圖片功能,就是微信發朋友圈選擇圖片的時候那個介面 //呼叫微信拍照功能 wx.chooseImage({ count: 1,

利用JSSDK呼叫掃一掃功能

1. 確保有 調起微信掃一掃介面 許可權,測試號可能不行; 2. 匯入相關JS <script type="text/javascript" http://test.com/zepto_touch.js"></script> <script t

開發獲取Accesstoken和jsapi_ticket配置jssdk,呼叫掃一掃

public static String[] getSign(String jsapi_ticket) throws NoSuchAlgorithmException { String[] data= new String[10]; Long timestamp= System.current

JSSDK開發,呼叫掃一掃 JAVA & jsp前端 & js實現

// 微信JSSDK的AccessToken請求URL地址 ublic final static String weixin_jssdk_acceToken_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type

ASP.NET MVC做的WEBAPP中調用JSSDK掃一掃

lis qrc 頁面 edr 唯一標識 文件夾 tty 手機攝像頭 客戶端 今天做一個項目,是在微信上用的,微信WEB APP,裏面用到了調用手機攝像頭掃一掃二維碼的功能,記得以前某個項目裏寫有的,但是找不到之前那個項目源碼了,想復制粘貼也復制不了了,只好對著微信的那個開發

使用JSSDK自定義分享標題、描述、和圖標

工具包 on() 包括 images 定義 能力 實現 手機 2.0 最近做一個項目的時候用到微信的分享 ,實現定義分享標題,圖片,了解到微信在發布JSSDK後,把包括自定義分享在內的眾多網頁服務接口進行了統一。如果要想自定義分享自己的網頁信息給好友或朋友圈,就最好使用這個

JSSDK分享--挖坑填坑之小結

file com 附錄 success 成功 文檔 -i 是把 n)   最近參與微信服務號小項目的開發,關於微信分享,我是只知其功能,並沒深入了解其中的彎彎道道。雖然項目中不是我負責微信分享這一塊(因為我也不太會),但是團隊在這個功能上,那可是說多了都是淚,耗費了超級多的

jssdk上傳圖片,一張一張的上傳 和 一次性傳好幾張

pla can 參數錯誤 其他 屬性 使用 down pop menu //html模板 <div class="zhaopin_3_2"> <div id="bbb"></div> &

jssdk上傳圖片asp程序源碼

scale 計算 ssh form 指定 javascrip title ice dia 微信jssdk上傳圖片asp程序源碼 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!--#include file="sha

配置jssdk自定義分享

執行 app $.ajax brush bug timeline 打開 相關 mage 前段時間做這個功能的時候遇到這個問題,之前的話是微信自動抓取界面第一張圖,現在微信更新api,必須自行配置,接入jssdk,才能實現該功能。 詳細可以查看微信的jssdk文檔 微信官方開

TP5調用JSSDK 教程

extend 圖片 raw top eve 動態獲取 namespace lose mes 前提:必需了解TP5的全局配置,擴展目錄,composer,依賴註入的概念; 第一步:首先配置加載官方JSSDK類 "autoload": { "f

jssdk圖片、語音開發記錄(二)

後臺 pid for item esc 音頻 locals 動態 clas 接著上篇說的,在使用jssdk之前,需要先驗簽,也就是獲取簽名,而獲取簽名就需要幾個參數,時間戳,隨機數,token等,而token一天的獲取次數是有限的, 所以需要在項目中保存獲取到的token,

thinkphp調用jssdk開發

ready 否支持 ans out ushare https rpi conf 安裝 一:準備文件,並將文件置於網站根目錄下 access_token.json {"access_token":"","expire_time":0}   

jssdk的使用

頁面 文件 網頁開發 必須 組件 分享 鏈式 能力 微信js-sdk 什麽是微信JS-SDK 微信JS-SDK是微信公眾平臺面向網頁開發者提供的基於微信內的網頁開發工具包。通過調用微信JS-SDK的api,來高效的實現拍照、選圖、語音、位置等調用原生手機系統的功能,同時可以

jssdk分享功能開發

獲取地理位置 開放平臺 ont 1.3 千萬 sage hide ict gbk 先理解下分享:    在app端 ,經常能看見 分享按鈕的功能,(分享給朋友,分享到朋友圈,分享到QQ空間等等); https://open.weixin.qq.com/(微信開發平臺),這需