2018-05-10
最近遇到一个项目,商户申请了十几个小程序APPID,小程序的程序逻辑实际是一样,调用的接口也一样,只是界面上有差异,因此这些小程序都对应了一个统一的后端(要是搞十几个后端就崩溃了)。
那么问题来了,一个后端对应多个小程序前端,APPID如何切换呢?
最后想到的方案是,前后端统一制定一个规则,由前端小程序在调用后端接口的时候传参(参数规则为:cur_appid = 序号+APPID前几位)告诉后端当前用的是哪个APPID,后端维护一个固定的数组,保存所有APPID相关信息,键名即为序号+APPID前几位
然后在接口的公共父控制器里判断是否传递了此参数,如果传递了就获取数组对应的值并更新微信官方SDK中的配置文件WxPay.Config.php(因为官方SDK都是从这个配置文件取值的),
这种方式的改动量是最小,但是还是遇到了一个问题,就是WxPay.Config.php中的APPID等配置都是const常量,常量是没办法动态修改的,所以只能改成static静态变量
同时相应的WxPayApi.php中的变量引用方式也要改变,有好多处,我是统一替换的
至此,基本大功告成,不过在具体的接口控制器中最好还是判断一下是否传了APPID,避免父控制器漏过去~