最近給公司調了個bug,涉及到微信支付的相關介面。所以有幾個問題在這裡記錄一下,希望能幫到其他人。
商戶號
微信公眾號管理面板中,有個微信支付選單欄,進去以後,第一個標籤中有可能會有兩個序號,其中一個是本公司作為普通商家時的序號。還有一個序號後面會標註著服務商字樣,這個是本公司作為服務商時所使用的序號。普通商家,就是微信用戶直接將錢轉賬給你;服務商,是一群普通商家的代理商,你可以管理一群在你的H5應用中賣貨的商家,這時微信用戶將錢轉給商家,經過你作為代理。
由於這裡的功能並不是我開發,所以有些程式碼細節也不是很確定。在這個文件中呼叫統一下單介面時,如果傳入了本公司的普通商家號,則認為是轉帳給一般商家。如果需要轉給本公司代理的某個商戶,那麼需要同時傳入本公司服務商戶號碼和子商戶號。如果錯誤的將公司的服務商戶號當做普通商戶號使用,而沒有傳入子商戶號,會報一個需要傳入sub_mch_id的錯誤.
支付url未授權
微信支付會涉及到一個回調url,這個url是在呼叫微信介面的同時傳入的。然而這個傳入的url,如果需要帶參數,一定不要用問號和&連接符,否則url會被誤識別,例如:index.php?g=mobile&m=payment,最好轉換成thinkphp中也很常用的'/'方式,如/mobile/payment/order_id/111。
在微信支付接入選單中,有個開發設定tab,裡面有設定回呼url。不在這裡設定的url一概沒有回呼權限,會報錯支付url未授權。設定回調url的權限有兩步驟:
需要下載一個txt授權碼文件,放置在web伺服器根目錄下,www.foobar.com/xxxxx.txt,如果你在自己的網域下能這樣存取自己的授權碼文件,就沒問題了。
設定url的時候,如果需要傳入一個支付單號的id,例如/mobile/payment/order_id/111,那麼回調url中必須設定為www.foobar.com/mobile/payment/order_id/作為授權url ,也就是說url最多只支援一級分隔符號。