微信支付:支付過期時間問題、302 問題、code 、openid
連續兩天折騰微信支付,一直拿官方提供的sdk ,然後加以新增和改造,發現微信支付獲取code 的時候,一直重定向的問題。我原以為用ajax 在靜態頁面去處理獲取支付訂單資料,發現除錯很艱難,一方面是完全對php沒基礎,然後一行行程式碼通過列印日誌返回發現ajax 去post 過去的時候 總算髮現了程式碼是丟擲了錯誤,然而ajax 完全不曉得什麼錯誤 一直是支付不到。
1 這兩天一直拿不到code 和 openid 是本身設計的問題。當時採用OAuth2.0 獲取code 然後去獲取accsess_token 或者 openid
這兩天卡住的原因是ajax 去post 請求php 一個頁面,然後除錯一直是重定向問題,一直處理不了,後來想了一個辦法,先獲取openid 通過session 儲存下來,這樣子快取下來就可以直接在支付的時候將這個引數傳過去。
這裡我看了幾種方案,一種session 儲存openid 一種是cookie 儲存,各有各的優缺點。有的人擔心每一個都儲存session 對空間造成壓力。其實也沒有必要擔心。反正會有更好辦法。
我一直犯錯的地方就是ajax - post 去授權獲取code,發現授權重定向一直無法返回code,出現了302的問題, 而我ajax 也沒有資料返回為什麼。之前採用直接跳轉的生成的支付頁面方式是沒有問題。一度懷疑php header 的問題。
後來處理了這個openid 後就沒有事了
這裡有爭議,明天繼續寫
1.官方一分錢的支付案例
針對官方的一分錢的支付demo,發現好多不足,但又能滿足支付功能。除了拼寫錯誤本身sdk 的問題,一分錢支付這個案例並不是特別好,為什麼?因為 他很多資料都是寫死了,如果我想傳遞一些資料,訂單,商品號,好像完全寫死。大部分案例都是寫死為主,很少涉及到傳遞引數,然後去完全一些從0開始的人和開發者。
JSSDK 可以滿足很多開發了。
授權,通過code去換取openid ,重定向 是我最近遇到的問題。我一直好奇為什麼微信這個案例會跳轉到一個單獨的頁面,然後讓這個php頁面進行重定向獲取code ,再去換取openid ,因為針對了幾個版本的sdk 都是採取這樣的做法,然而我當時以為直接通過ajax 提交一個價錢和 商品數 就誤以為是ok,重定向就一直髮現不到這個code ,ajax 也沒有回撥。這個時候,很坑自己,連續除錯了很久, 一行行程式碼除錯,然後採取跳轉到一個支付頁面。這樣就沒有事情了。支付有兩種當時採取的不是jssdk,發現了有一些不同的情況。針對支付,微信要到微信內部開啟瀏覽器才能呼叫哪個API。