2018-05-10php
最近遇到一個項目,商戶申請了十幾個小程序APPID,小程序的程序邏輯實際是同樣,調用的接口也同樣,只是界面上有差別,所以這些小程序都對應了一個統一的後端(要是搞十幾個後端就崩潰了)。前端
那麼問題來了,一個後端對應多個小程序前端,APPID如何切換呢?小程序
最後想到的方案是,先後端統一制定一個規則,由前端小程序在調用後端接口的時候傳參(參數規則爲:cur_appid = 序號+APPID前幾位)告訴後端當前用的是哪一個APPID,後端維護一個固定的數組,保存全部APPID相關信息,鍵名即爲序號+APPID前幾位後端
而後在接口的公共父控制器裏判斷是否傳遞了此參數,若是傳遞了就獲取數組對應的值並更新微信官方SDK中的配置文件WxPay.Config.php(由於官方SDK都是從這個配置文件取值的),數組
這種方式的改動量是最小,可是仍是遇到了一個問題,就是WxPay.Config.php中的APPID等配置都是const常量,常量是沒辦法動態修改的,因此只能改爲static靜態變量微信
同時相應的WxPayApi.php中的變量引用方式也要改變,有好多處,我是統一替換的app
至此,基本大功告成,不過在具體的接口控制器中最好仍是判斷一下是否傳了APPID,避免父控制器漏過去~spa