最近在一個(gè)項(xiàng)目中遇到了微信支付的一些問題,順便寫篇筆記記錄一下。
1、errcode:48001 api unauthorized
這個(gè)問題屬實(shí)很坑,剛剛收到這個(gè)錯(cuò)誤的時(shí)候我百度了一下,網(wǎng)上很多網(wǎng)友都說是scope的原因,具體不再重復(fù),參考鏈接:https://blog.csdn.net/xgocn/article/details/100082900
然后花了兩天時(shí)間排查,直到我拿到前端傳過來的code,通過微信官方的調(diào)試工具依然報(bào)錯(cuò)時(shí)才問前端你這code從那里獲得的。前端說通過wx.login組件。
我們這個(gè)項(xiàng)目微信公眾號、小程序、APP是統(tǒng)一的賬號系統(tǒng),但是不同的端口調(diào)用的接口不一樣。wx.login屬于小程序登錄組件,獲取到的code只能通過code2session接口獲取openid。
至此問題得以解決。
當(dāng)然如果是公眾號授權(quán)的話,大家參考上述鏈接內(nèi)容就可以解決問題了。小程序中獲得code有兩個(gè)組件,要注意區(qū)分。
2、微信total_fee下單時(shí)要精確到分。
我們經(jīng)常用的金錢單位是元,因此商品的價(jià)格常常是類似10.01這樣的格式,微信total_fee單位是分,在下單時(shí)我們需要乘以100,具體報(bào)的錯(cuò)誤忘了,但必須注意這個(gè)細(xì)節(jié)。
而支付寶的金額單位是元。注意區(qū)分微信和支付寶。
3、JSAPI缺少參數(shù)total_fee。
發(fā)生這種問題首先要檢查接口返回?cái)?shù)據(jù)與官方是否一致,可以將相關(guān)數(shù)據(jù)打印輸出。
其次是訂單編號重復(fù)時(shí)也會在前端報(bào)這個(gè)錯(cuò)誤。有時(shí)候用戶對于一個(gè)訂單發(fā)起了支付,但是并未支付,第二次再次發(fā)起支付的時(shí)候,訂單中任何內(nèi)容發(fā)生變更都會報(bào)訂單重復(fù)的錯(cuò)誤。
遇到訂單重復(fù)的時(shí)候網(wǎng)友們建議的方法是修改訂單號。
4、預(yù)支付ID
預(yù)支付ID的有效期為兩個(gè)小時(shí),預(yù)支付ID為空的時(shí)候往往會發(fā)生以下三種情形:
①金額為空
②訂單編號重復(fù)
③訂單編號為空
5、微信獲取Openid的所有文檔。
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_4