我沒有用到微信JS-SDK或者接口都正確返回預支付id都正確, 爲何會報這個錯呢?
答: 微信內置瀏覽器會有WeixinJSBridge ,可是須要必定的加載時間。php
我使用了微信JS-SDK, 可是爲何會出錯呢?
答: 微信webview注入鉤子有時序問題:在WeixinJSBridge 還未注入以前,就已經成功注入其它依賴於WeixinJSBridge 的其它XX模塊。在XX模塊中調用WeixinJSBridge 就會失敗。html
若是你開發一款移動應用,必不可少要考慮分享到微信的功能;若是你開發網頁,那麼用戶之間的分享更多的也是經過微信。那麼這個問題到底有多嚴重,如何解決也變得相當重要。java
若是網頁中未使用微信JS-SDK, 用戶在微信中打開網站可能會觸發這個錯誤,目前看來只有忽略。由於是微信JS-SDK自身的問題,咱們也沒法控制。git
關於微信支付github
方法一: 改成監聽ready事件以後再進行下一步操做web
if (typeof window.WeixinJSBridge == "undefined"){segmentfault
方法二: 直接使用JS-SDK文檔中的支付代碼,不要使用公衆號支付文檔裏面的代碼。參考: 微信支付瀏覽器
後記: 關於這個問題的帖子從2014年開始就有了,然而到如今依然存在,可見一直沒有修復好!微信
[1]微信支付: https://mp.weixin.qq.com/wiki...
[2] Uncaught ReferenceError: WeixinJSBridge is not defined: http://www.henkuai.com/forum....
[3] Uncaught ReferenceError: WeixinJSBridge is not defined問題: http://www.henkuai.com/thread...
[4] 微信支付問題:Uncaught ReferenceError: WeixinJSBridge is not defined: http://www.java-bbs.com/threa...
[5] 傳說中的WeixinJSBridge和微信rest接口: http://bbs.blueidea.com/threa...
[6] 監聽wxbridge加載後再喚起微信支付: https://github.com/whq731/mob... ide