1. 程式人生 > >微信開發中踩過的坑

微信開發中踩過的坑

1、spa單頁模式不適合微信開發

        所有需要使用JS-SDK的頁面必須先注入配置資訊,否則將無法呼叫(同一個url僅需呼叫一次,對於變化url的SPA的web app可在每次url變化時進行呼叫,目前Android微信客戶端不支援pushState的H5新特性,所以使用pushState來實現web app的頁面會導致簽名失敗,此問題會在Android6.2中修復)。

        採用微信鑑權的url中會附加額外的引數,會干擾spa對hash的正常解析,從而影響頁面跳轉。

        建議:採用傳統的單頁面開發模式。

2、微信分享介面不支援hash傳遞。

        帶有hash的url分享朋友圈的時候,跳轉資訊中 不包含hash資訊。例如:

        view/guide/home.php#share/service/detail/

        只能得到:

        view/guide/home.php

        建議:分享的時候不要帶hash資訊。如果一定要帶附加資訊,可以轉為:

        view/guide/home.php?share/service/detail/。

3、微信分享介面中,分享資訊有字數限制。

分享標題、分享描述、分享連結有字數限制,不能傳太長的字元。否則可能出現分享連結無法跳轉的問題。

建議:分享的時候檢查分享資訊長度。

4、oauth2鑑權不支援hash傳遞。

        帶有hash的url進行oauth2鑑權時,跳轉資訊中不包含hash資訊。例如:

        https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx& redirect_uri=view/guide/home.php#share/service/detail/)

        只能得到:

        view/guide/home.php

        建議:鑑權時不要帶hash資訊。如果一定要帶附加資訊,可以轉為:

        view/guide/home.php?share/service/detail/

5、ios環境下,document.title不會生效。

        在ios環境下,通過document.title無法改變微信瀏覽器的標題。

        建議:通過iframe hack,如下:

title: function (_t) {
      var $body = $('body');
      document.title = _t;
      var src = URL_CLIENT + 'favicon.png';
      var $iframe = $('<iframe src="' + src + '" style="display:none"></iframe>').on('load', function () {
        setTimeout(function () {
          $iframe.off('load').remove();
        }, 0)
      }).appendTo($body);
    }

6、ios中鎖屏狀態下,定時器失效。

        手機鎖屏後,iphone、ipad進入休眠狀態後,會殺死js定時器程序。所以無法進行倒計時。


        建議:如果要做倒計時,時間由服務端同步。

7、微信中,onbeforeunload無法阻止頁面後退。

        Js中的onbeoreunload事件在微信中無法阻止頁面後退。

        建議:不要實現回退確認功能。

8、oauth2鑑權很耗時

        採用oauth2很耗時,嚴重影響使用者體驗。

        建議:只對需要的頁面使用鑑權。首頁不要用oauth2鑑權。

9、支付授權目錄一定要配置

        不配或配錯,都會導致支付控制元件打不開。提示no permission。

        建議:每次釋出完後,檢查支付授權目錄。

10、弱網情況下,支付控制元件打不開。

        弱網情況下,支付控制元件有可能打不開。

        建議:確保網路不能太差。開啟控制元件前要給使用者合理的提示。

11、微信中,navigator.onLine不靠譜。

        通過navigator.onLine屬性獲取網路狀態不可靠。

        建議:不要用navigator.onLine判斷是否線上。

12、部分品牌手機中,wx.closeWindow無法關閉支付介面。

        部分小米、華為手機中,wx.closeWindow無法關閉支付介面。應該跟版本有關係。

        建議:彈出的支付介面無法用js關閉,不應該通過關閉支付流程阻止使用者支付,應該通過退款流程實現。

        13、支付介面中timeStamp欄位是字串,不是整數。

        呼叫getBrandWCPayRequest介面時,傳入的timeStamp必須是字串型別,否則會出錯。

        建議:timeStamp轉為字串,如下:


14、支付介面url不能帶hash

        Hash中的/會被微信認為是一個目錄,導致url與授權目錄不一致,無法開啟支付介面。

        建議:支付頁面獨立成一個頁面,引數採用本地儲存的方式傳遞,不在url中體現。

15、微信去除"防欺詐盜號請勿支付"或"輸入qq密碼以及防欺詐或盜號,請不要輸入qq密碼"的方法

16、微信中單頁跳轉,頁面URL地址不變

        點選複製連結,URL地址還是原來進入頁面的URL。

17、更改微信公眾號選單,無法即時生效

        目前,微信公眾號選單更改,路徑中不要帶版本號,避免每個迭代都要修改選單的連結地址。

相關推薦

開發

1、spa單頁模式不適合微信開發         所有需要使用JS-SDK的頁面必須先注入配置資訊,否則將無法呼叫(同一個url僅需呼叫一次,對於變化url的SPA的web app可在每次url變化時進行呼叫,目前Android微信客戶端不支援pushState的H5新特性

記錄開發(1)

做了三年多的程式設計開發,偶爾還是會踩坑,記錄一下 現在工作是維護一個五六年的老專案,例行維護,每個月都有一些新需求,對原有的一些功能做修改,或者是對某部分功能程式碼進行重構。同時一般每2-3個月上一個大的版本,主要是增加一些新功能,由於程式碼邏輯複雜,確認需求後一般開發三個星期左右,這幾週一般

iOS開發-iOS多執行緒開發-GCD的特性-NSOperation執行緒依賴-iOS多執行緒小結

本期內容: iOS開發中從其他執行緒回到主執行緒的方法 dispatch_group_create 組的概念 dispatch_sync同步排程主執行緒會死鎖的原因 專案中什麼時候選擇GCD什麼時候選擇NSOperation NSOperation 執行緒依賴

記錄自己開發的一些

如題,進以此來記錄日常開發中遇到的一些坑,近期抽空整理一下並長期更新~~ 排名不分先後,隨踩隨記~ 1.部分手機App喚起第三方支付(微信/支付寶)不成功 以支付寶為例,環境為華為Mate7 EMUI4.0(Android6.0)系統,體驗發現

vue專案開發

一、路由 這兩天移動端的同事在研究vue,跟我說看著我的專案做的,子路由訪問的時候是空白的,我第一反應是,不會模組沒載入進來吧,還是。。。。此處省略一千字。。。 廢話不多說上程式碼 路由程式碼 { path: '/list', name: '列表', component:

開發

記開發中踩過的坑 內外網問題,內網測試沒問題,外網上無法訪問 js setTimeOut 呼叫函式必須加引號,否則延時不生效,若函式裡面有引數,就在外層用 function 包起來,不要用引號 不要輕易合併祖傳程式碼中重複的程式碼,坑太多 呼叫

開發遇到的access_token ,access_token失效和重新整理

這真是一個巨大的坑,為了避免以後踩到同樣的坑和幫助剛接觸這塊的同學快速脫坑,我花了些時間研究問題的來龍去脈,提供了一個不太完美的解決方案,以及未來規劃的完美解決方案。問題現象在開發微信jssdk的影象介面功能時,測試環境和迴歸環境都ok。但是更新到預釋出環境後,功能就異常了,

nuxt開發

新開的專案需要相容IE,並且還需要SEO。在JQ和SSR二者中,選擇了嘗試一下新技術。(真的作死) 下面是個人在這半個月使用nuxt框架遇到的一些問題,記錄一下: 1,首先一個是關於nuxt.config.js的配置問題,在plugins引入一些第三方外掛的時候,如果不需

開發網頁授權access_token與基礎支持的access_token異同

amp api ken 獲取 use 有效期 公眾號 分享 什麽 問題1:網頁授權access_token與分享的jssdk中的access_token一樣嗎?答:不一樣。網頁授權access_token 是一次性的,而基礎支持的access_token的是有時間限制的:7

開發access_token,js_ticket,時間戳,簽名生成工具

移動開發 微信開發 1. Access_token生成工具工具地址:https://mp.weixin.qq.com/debug這個工具主要用來驗證和生成微信公眾號access_token,主要有正確的app_id和app_secret就可以生成access_token,界面比較簡單,如下圖:其實這個

開發的一些神

code AS valid pro 開發 也不會 但是 菜單 book 微信自定義菜單接口權限問題 最近在開發一個微信第三方平臺,在開發自定義菜單接口的時候遇到一個坑。發送的json數據明明是正確的,因為已經與官方文檔的示例一一對比過了。但是依舊返回40119錯誤,意思是b

PHP實現開發提現功能(企業付款到使用者零錢)

一.實現該功能目的     這幾天在小程式裡要實現使用者從系統中提現到零錢的功能,查了一下文件可以使用 企業付款到使用者零錢 來實現;  官方文件:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapt

企業開發建立人員失敗 no privilege to...

最近在企業微信開發過程中 建立人員時發現 no privilege to access/modify contact/party/agent 失敗 , 原因是沒有通訊錄編輯許可權. 操作如下: 在管理工具—進入通訊錄同步 在許可權裡 點選編輯裡選編輯通

開發引起的跨域問題

什麼是跨域請求 跨域是瀏覽器的一個同源策略的問題而衍生的需求,跨域請求是指伺服器A的頁面去請求伺服器B的資源,而伺服器A.B之間只要域名、埠號、IP不同都屬於跨域 而瀏覽器沒有對SCRIPT,IMG等包含SRC屬性的標籤做同源策略的限制,因此有了一個JSONP的非

Java公眾平臺開發(六)--開發的token獲取

轉自:http://www.cuiyongzhi.com/post/44.html (一)token的介紹 引用:access_token是公眾號的全域性唯一票據,公眾號呼叫各介面時都需使用access_token。開發者需要進行妥善儲存。access_token的儲存至少要保留512個字元空間。acce

開發訪問介面限制次數的問題

最近在做的一個專案,微信開發過程中遇到了一個問題 專案描述:微信公眾號中玩遊戲送紅包,分享給自己的好友,可以額外贏取一次機會 問題:最開始寫程式時沒有考慮到微信介面的一個限制,就是單日微信公眾號獲得分享token的驗籤次數是2000次,而我為了保持session的長連線

開發form表單提交引數為空

今天在做微信公眾號開發時,發現有一個form表單的資料傳到後臺總是空,使用pc端的chrome除錯卻可以將引數傳到後臺,最後懷疑是微信瀏覽器的問題。上網找答案,果然大家都在吐槽這個坑。出現問題的程式碼片

Java公眾平臺開發(六)——開發的token獲取

(一)token的介紹 引用:access_token是公眾號的全域性唯一票據,公眾號呼叫各介面時都需使用access_token。開發者需要進行妥善儲存。access_token的儲存至少要保留512個字元空間。access_token的有效期目前為2個小時,需定時重新整理,重複獲取將導致

開發使用curl忽略https證書

http://blog.csdn.net/ljh504429906/article/details/51103519 微信開發中需要使用http及https的post與get請求實現api的呼叫。 每次要使用curl的時候,總要查一堆資料。   現在將常用的幾句儲存下

開發使用JSSDK和使用URL.createObjectURL上傳預覽圖片的不同處理對比

在做微信公眾號或者企業微信開發業務應用的時候,我們常常會涉及到圖片預覽、上傳等的處理,往往業務需求不止一張圖片,因此相對來說,需要考慮的全面一些,使用者還需要對圖片進行預覽和相應的處理,在開始的時候我使用JSSDK方式,使用微信的SDK介面進行圖片的上傳、預覽操作,後來發現通過URL.createObject