<dd id="fl4gs"></dd>
<button id="fl4gs"><acronym id="fl4gs"></acronym></button>

    <dd id="fl4gs"><track id="fl4gs"></track></dd>
    <em id="fl4gs"><tr id="fl4gs"></tr></em>
    <span id="fl4gs"><track id="fl4gs"></track></span>
    1. <tbody id="fl4gs"></tbody>
      <th id="fl4gs"><track id="fl4gs"></track></th>
    2. |
      |
      51CTO旗下網站
      |
      |
      移動端

      微信JS-SDK接口列表及問題詳解

      微信JS-SDK是微信公眾平臺面向網頁開發者提供的基于微信內的網頁開發工具包。

      作者:佚名來源:|2015-02-12 17:48

      所有JS接口列表

      版本1.0.0接口

      onMenuShareTimeline

      onMenuShareAppMessage

      onMenuShareQQ

      onMenuShareWeibo

      startRecord

      stopRecord

      onVoiceRecordEnd

      playVoice

      pauseVoice

      stopVoice

      onVoicePlayEnd

      uploadVoice

      downloadVoice

      chooseImage

      previewImage

      uploadImage

      downloadImage

      translateVoice

      getNetworkType

      openLocation

      getLocation

      hideOptionMenu

      showOptionMenu

      hideMenuItems

      showMenuItems

      hideAllNonBaseMenuItem

      showAllNonBaseMenuItem

      closeWindow

      scanQRCode

      chooseWXPay

      openProductSpecificView

      addCard

      chooseCard

      openCard

      所有菜單項列表

      基本類

      舉報: "menuItem:exposeArticle"

      調整字體: "menuItem:setFont"

      日間模式: "menuItem:dayMode"

      夜間模式: "menuItem:nightMode"

      刷新: "menuItem:refresh"

      查看公眾號(已添加): "menuItem:profile"

      查看公眾號(未添加): "menuItem:addContact"

      傳播類

      發送給朋友: "menuItem:share:appMessage"

      分享到朋友圈: "menuItem:share:timeline"

      分享到QQ: "menuItem:share:qq"

      分享到Weibo: "menuItem:share:weiboApp"

      收藏: "menuItem:favorite"

      分享到FB: "menuItem:share:facebook"

      保護類

      調試: "menuItem:jsDebug"

      編輯標簽: "menuItem:editTag"

      刪除: "menuItem:delete"

      復制鏈接: "menuItem:copyUrl"

      原網頁: "menuItem:originPage"

      閱讀模式: "menuItem:readMode"

      在QQ瀏覽器中打開: "menuItem:openWithQQBrowser"

      在Safari中打開: "menuItem:openWithSafari"

      郵件: "menuItem:share:email"

      一些特殊公眾號: "menuItem:share:brand"

      卡券擴展字段及簽名生成算法

      卡券 api_ticket

      卡券 api_ticket 是用于調用卡券相關接口的臨時票據,有效期為 7200 秒,通過 access_token 來獲取。這里要注意與 jsapi_ticket 區分開來。由于獲取卡券 api_ticket 的 api 調用次數非常有限,頻繁刷新卡券 api_ticket 會導致 api 調用受限,影響自身業務,開發者必須在自己的服務全局緩存卡券 api_ticket 。

      參考以下文檔獲取access_token(有效期7200秒,開發者必須在自己的服務全局緩存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html

      用***步拿到的access_token 采用http GET方式請求獲得卡券 api_ticket(有效期7200秒,開發者必須在自己的服務全局緩存卡券 api_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card

      卡券擴展字段cardExt說明

      cardExt本身是一個JSON字符串,是商戶為該張卡券分配的唯一性信息,包含以下字段:

      字段 是否必填 說明
      code 指定的卡券code碼,只能被領一次。use_custom_code字段為true的卡券必須填寫,非自定義code不必填寫
      openid 指定領取者的openid,只有該用戶能領取。bind_openid字段為true的卡券必須填寫,非自定義openid不必填寫
      timestamp 時間戳,商戶生成從1970年1月1日00:00:00至今的秒數,即當前的時間,且最終需要轉換為字符串形式;

      由商戶生成后傳入。

      signature 簽名,商戶將接口列表中的參數按照指定方式進行簽名,簽名方式使用SHA1,具體簽名方案參見下文;由商戶按照規范簽名后傳入。
      balance 紅包余額,以分為單位。紅包類型必填(LUCKY_MONEY),其他卡券類型不填

      簽名說明

      將 api_ticket(特別說明:api_ticket 相較 appsecret 安全性更高,同時兼容老版本文檔中使用的 appsecret 作為簽名憑證。)、timestamp、card_id、code、openid、balance的value值進行字符串的字典序排序。

      將所有參數字符串拼接成一個字符串進行sha1加密,得到signature。

      signature中的timestamp和card_ext中的timestamp必須保持一致。

      假如數據示例中code=23456,timestamp=141231233,card_id=345667,api_ticket=45678則signature=sha1(14123123323456345667456789)=4F76593A4245644FAE4E1BC940F6422A0C3EC03E。

      卡券簽名cardSign說明

      將 api_ticket(特別說明:api_ticket 相較 appsecret 安全性更高,同時兼容老版本文檔中使用的 appsecret 作為簽名憑證。)、app_id、location_id、times_tamp、nonce_str、card_id、card_type的value值進行字符串的字典序排序。

      將所有參數字符串拼接成一個字符串進行sha1加密,得到cardSign。

      附錄5-常見錯誤及解決方法

      調用config 接口的時候傳入參數 debug: true 可以開啟debug模式,頁面會alert出錯誤信息。以下為常見錯誤及解決方法:

      invalid url domain當前頁面所在域名與使用的appid沒有綁定,請確認正確填寫綁定的域名,如果使用了端口號,則配置的綁定域名也要加上端口號(一個appid可以綁定三個有效域名,見 目錄1.1.1)。

      invalid signature簽名錯誤。建議按如下順序檢查:

      確認簽名算法正確,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 頁面工具進行校驗。

      確認config中nonceStr(js中駝峰標準大寫S), timestamp與用以簽名中的對應noncestr, timestamp一致。

      確認url是頁面完整的url(請在當前頁面alert(location.href.split('#')[0])確認),包括'http(s)://'部分,以及'?'后面的GET參數部分,但不包括'#'hash后面的部分。

      確認 config 中的 appid 與用來獲取 jsapi_ticket 的 appid 一致。

      確保一定緩存access_token和jsapi_ticket。

      確保你獲取用來簽名的url是動態獲取的,動態頁面可參見實例代碼中php的實現方式。如果是html的靜態頁面在前端通過ajax將url傳到后臺簽名,前端需要用js獲取當前頁面除去'#'hash部分的鏈接(可用location.href.split('#')[0]獲取),因為頁面一旦分享,微信客戶端會在你的鏈接末尾加入其它參數,如果不是動態獲取當前鏈接,將導致分享后的頁面簽名失敗。

      the permission value is offline verifying這個錯誤是因為config沒有正確執行,或者是調用的JSAPI沒有傳入config的jsApiList參數中。建議按如下順序檢查:

      確認config正確通過。

      如果是在頁面加載好時就調用了JSAPI,則必須寫在wx.ready的回調中。

      確認config的jsApiList參數包含了這個JSAPI。

      permission denied該公眾號沒有權限使用這個JSAPI(部分接口需要認證之后才能使用)。

      function not exist當前客戶端版本不支持該接口,請升級到新版體驗。

      為什么6.0.1版本config:ok,但是6.0.2版本之后不ok(因為6.0.2版本之前沒有做權限驗證,所以config都是ok,但這并不意味著你config中的簽名是OK的,請在6.0.2檢驗是否生成正確的簽名以保證config在高版本中也ok。)

      Android用戶已取消分享朋友圈,但仍返回分享成功(微信團隊已修復此問題,已在Android6.1版本上線)

      在iOS和Android都無法分享(請確認公眾號已經認證,只有認證的公眾號才具有分享相關接口權限,如果確實已經認證,則要檢查監聽接口是否在wx.ready回調函數中觸發)

      Android6.0.2部分客戶端無法使用監聽分享接口(Android6.0.2之前以及6.0.2.58以后的版本都不會有問題,請從官網weixin.qq.com下載***版本體驗)

      服務上線之后無法獲取jsapi_ticket,自己測試時沒問題。(因為access_token和jsapi_ticket必須要在自己的服務器緩存,否則上線后會觸發頻率限制。請確保一定對token和ticket做緩存以減少2次服務器請求,不僅可以避免觸發頻率限制,還加快你們自己的服務速度。目前為了方便測試提供了1w的獲取量,超過閥值后,服務將不再可用,請確保在服務上線前一定全局緩存access_token和jsapi_ticket,兩者有效期均為7200秒,否則一旦上線觸發頻率限制,服務將不再可用)。

      Android部分版本上傳圖片接口偶爾卡住(早期的Android6.0.2版本存在此問題,官方已修復,6.0.2.58之后的版本都支持,請從官網下載***版本體驗)

      uploadImage怎么傳多圖(目前只支持一次上傳一張,多張圖片需等前一張圖片上傳之后再調用該接口)

      沒法對本地選擇的圖片進行預覽(chooseImage接口本身就支持預覽,不需要額外支持)

      通過a鏈接(例如先通過微信授權登錄)跳轉到b鏈接,invalid signature簽名失敗(后臺生成簽名的鏈接為使用jssdk的當前鏈接,也就是跳轉后的b鏈接,請不要用微信登錄的授權鏈接進行簽名計算,后臺簽名的url一定是使用jssdk的當前頁面的完整url除去'#'部分)

      出現config:fail錯誤(這是由于傳入的config參數不全導致,請確保傳入正確的appId、timestamp、nonceStr、signature和需要使用的jsApiList)

      如何把jsapi上傳到微信的多媒體資源下載到自己的服務器(請參見文檔中uploadVoice和uploadImage接口的備注說明)

      在Android中通過其他設備上傳的serverId,能下載成功但無法播放(微信團隊已經確認此問題,已在Android6.1版本中修復)

      Android通過jssdk上傳到微信服務器,第三方再從微信下載到自己的服務器,會出現雜音(微信團隊已經修復此問題,目前后臺已優化上線)

      綁定父級域名,是否其子域名也是可用的(是的,合法的子域名在綁定父域名之后是完全支持的)

      在Android中通過掃一掃打開頁面,再調用scanQRCode并返回數據給第三方,會直接退出當前頁(微信團隊已經確認此問題,已在Android6.1版本中修復)

      在iOS微信6.1版本中,分享的圖片外鏈不顯示,只能顯示公眾號頁面內鏈的圖片或者微信服務器的圖片(微信團隊已經確認此問題,會在6.2中修復)

      是否需要對低版本自己做兼容(jssdk都是兼容低版本的,不需要第三方自己額外做更多工作,但有的接口是6.0.2新引入的,只有新版才可調用)

      該公眾號支付簽名無效,無法發起該筆交易(請確保你使用的jweixin.js是官方線上版本,不僅可以減少用戶流量,還有可能對某些bug進行修復,拷貝到第三方服務器中使用,官方將不對其出現的任何問題提供保障,具體支付簽名算法可參考 JSSDK微信支付一欄)

      之前微信jssdk語音接口上傳的文件類型為speex,第三方在自己的網頁無法直接播放(微信團隊確認了該問題,并已在本周上線解決了此問題,第三方可以通過多媒體接口下載得到標準的amr音頻文件)

      目前Android微信客戶端不支持pushState的H5新特性,所以使用pushState來實現web app的頁面會導致簽名失敗,此問題會在Android6.2中修復

      【責任編輯:chenqingxiang TEL:(010)68476606】

      點贊 0
      分享:
      大家都在看
      猜你喜歡

      訂閱專欄+更多

      16招輕松掌握PPT技巧

      16招輕松掌握PPT技巧

      GET職場加薪技能
      共16章 | 曬書包

      289人訂閱學習

      20個局域網建設改造案例

      20個局域網建設改造案例

      網絡搭建技巧
      共20章 | 捷哥CCIE

      645人訂閱學習

      WOT2019全球人工智能技術峰會

      WOT2019全球人工智能技術峰會

      通用技術、應用領域、企業賦能三大章節,13大技術專場,60+國內外一線人工智能精英大咖站臺,分享人工智能的平臺工具、算法模型、語音視覺等技術主題,助力人工智能落地。
      共50章 | WOT峰會

      0人訂閱學習

      讀 書 +更多

      XML案例解析教程

      本書對開發XML應用程序給予了詳細指導,其中一些應用程序甚至對于您來說是完全陌生的。這些應用程序包括XML 1.0,以及與XSLT、XQuery和XPat...

      訂閱51CTO郵刊

      點擊這里查看樣刊

      訂閱51CTO郵刊

      51CTO服務號

      51CTO播客

      日韩大片