1. 程式人生 > >微信支付測試返回:access_control:not_allow或system:access_denied

微信支付測試返回:access_control:not_allow或system:access_denied

比如我的測試js支付的頁面是 http://10.10.x.y/test/wxpay 。首先要將“商戶功能”->支付測試 下的“支付測試目錄”改成  http://10.10.x.y/test/。
然後注意這句話“測試域名只能在公眾號會話內測試才有效”。
因此,要完成測試,你需要關注這個公眾賬號,讓公眾賬號回覆你這個連結“ http://10.10.x.y/test/wxpay”。
這時候,你的微信應該會收到這個公眾賬號的資訊(就是這個連結),然後再點選這個連結,就不會報access_control:not_allow這個錯了。

===============================================================================

昨天客戶向我提到,微信支付在IOS上成功,但在Android上會報system:access_denied錯誤。
反覆檢查程式碼,沒有問題。而且因為IOS上成功支付,讓我百思不得其解,為什麼Android上不成功。
後來看到一篇文章http://www.okhjp.com/post/9/wechat-pay-system-access-denied/,反應的問題和我一樣,但是沒有提到解決方法。
各種除錯、各種辦法,沒有解決。
Android總結如下情況:
從微信公眾號介面,直接訪問支付頁面,成功支付。
從微信公眾號介面,跳轉到A域名頁面,再跳轉到B域名頁面,再跳轉到支付授權目錄所在的C域名,不成功,報access_denied錯誤。
同樣的情況,IOS正常。


access_denied錯誤,通常是微信發現來源請求不是支付授權目錄造成的,因此問題應該就是來源目錄請求的問題。而微信支付本身是JS方式的Ajax請求,因此它判斷來路頁面就是支付頁面URL,而這個URL就應該是微信瀏覽器的URL。但是我在支付頁面中通過JS除錯alter(window.location.href)是正常的,真是暈了!


於是向各路大神求救,最終遇到MT同學,給了一個指點,先在此謝過!
因為之前我最後一步跳轉是通過服務端redirect到支付頁面,因此微信瀏覽器可能會無法獲得跳轉的頁面(因為瀏覽器沒有獲得HTTP200返回,不知道頁面已經跳轉,因此URL還是保留老的【至於為什麼JS能獲得window.location.href是最新的URL,這個要問微信瀏覽器了!IOS應該是正常得到了!】),而此時向微信支付請求資訊時,就會有上面的錯誤。
於是按照MT同學的建議,在最後一個頁面跳轉時採用頁面層的JS跳轉,跳轉到支付頁面。
改程式碼,放上去,而後測試,於是天終於晴了!


無奈是微信現在火,只能跟上,但對微信的技術支援實在是......!再次鄙夷微信技術支援,自己的親身體驗,支援服務實在太差,電話打不通,要不沒人接,郵件沒響應,總之真是不爽到了極點。

轉自:http://www.cnblogs.com/yipu/p/3760148.html

http://blog.sina.com.cn/s/blog_63f3e0060102v4xh.html