第三方平台批量代替小程序申请插件

文档:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Mini_Programs/Plug-ins_Management.html

场景:每当要客户的小程序操作些啥都要客户扫码,如果客户一多,是真的烦,客户爱答不理,简直就是浪费生命啊!既然是平台开发是获得了客户的授权的,那么就可以利用第三方的接口直接操作了!实现的效果是:既可以批量搬客户操作,又可以单独商户操作,爽吧!

 

//商户申请插件 (申请最近插件)
    public function actionStorePluginsBinding()
    {
        //获取插件模版APPID
        $version_info = Plugins::find()->where(['store_id' => \Yii::$app->request->post('store_id')])->orderBy(' id desc ')->one();
        $store_id = array_column(Store::find()->alias('s')->where([
            'AND',
            ['!=', 's.admin_id', \Yii::$app->admin->id],
            ['s.is_delete' => 0],
            ['s.id' =>\Yii::$app->request->post('store_id')],
            ['a.is_delete' => 0],
            ['!=','w.app_id','0'],
            ['!=','w.app_brand_user_name','0'],
        ])->leftJoin(['a' => Admin::tableName()], 's.admin_id=a.id')->leftJoin(['w' => WechatApp::tableName()], 's.wechat_app_id=w.id')->select('s.id')->asArray()->all(),'id');
        $errArr = [
            '-1' => '系统繁忙,请等待修复',
            '89236' => '该插件不能申请',
            '89237' => '已经添加该插件',
            '89238' => '申请或使用的插件已经达到上限',
            '89239' => '该插件不存在(或已删除)',
            '89243' => '该申请为“待确认”状态,不可删除',
            '89244' => '不存在该插件 appid',
            '89256' => 'token 信息有误',
            '89257' => '该插件版本不支持快速更新',
            '89258' => '当前小程序帐号存在灰度发布中的版本,不可操作快速更新',
            '41001'=>'access_token missing hints'
        ];

        $arr = is_array($store_id) ? $store_id : [$store_id];
        $code = 0;
        $msg = '';
        for ($i = 0; $i < count($arr); $i++) {
            $this->getStore($arr[$i]);
            //插件绑定
            $audit = StorePlugins::find()->where(['store_id' => $arr[$i], 'plugin_app_id' => $version_info['app_id']]);
            $audit->andWhere(['or', 'status=1','status=2']);  //状态1申请中,2成功,-1默认
            $audit = $audit->orderBy('id desc')->one();
            if ($audit) {
                $code = 1;
                $msg .= '【' . $this->store->name . '】已提交过申请<br/>';
                continue;
            }
            $wechatApi = new WechatApi($this->getAccessToken());
            $data = $wechatApi->postPluginsConfig('apply',$version_info['app_id']);
            //记录绑定日志
            if ($data['errcode'] == 0) {
                $storePlugins = new StorePlugins();
                $storePlugins->store_id = $arr[$i];
                $storePlugins->plugin_app_id = $version_info['app_id'];
                $storePlugins->addtime = time();
                $storePlugins->status=1;
                $storePlugins->errcode='申请成功';
                $storePlugins->save();
            } else {
                $code = $data['errmsg'];
                $errmsg = $errArr[$data['errcode']];
                $msg .= '【' . $this->store->name . '】' . $errmsg . '<br/>';
                if($data['errcode']=='89237'){
                    $storePlugins = new StorePlugins();
                    $storePlugins->store_id = $arr[$i];
                    $storePlugins->plugin_app_id = $version_info['app_id'];
                    $storePlugins->addtime = time();
                    $storePlugins->errcode = $errmsg;
                    $storePlugins->status=2;
                    $storePlugins->save();
                }else{
                    $storePlugins = new StorePlugins();
                    $storePlugins->store_id = $arr[$i];
                    $storePlugins->plugin_app_id = $version_info['app_id'];
                    $storePlugins->addtime = time();
                    $storePlugins->errcode = $errmsg;
                    $storePlugins->status=0;
                    $storePlugins->save();
                }
            }
        }
        return [
            'code' => $code,
            'msg' => $msg ?: '已经申请插件请等待生效'
        ];
    }
 public function postPluginsConfig($action, $plugin_appid = null)
    {
        $url = self::WX_PLUGINS_URL . "?access_token={$this->access_token}";
        $data = ['action' => $action, 'plugin_appid' => $plugin_appid];
        $curl = new CurlHelper();
        $res = json_decode($curl->post($url, json_encode($data)), true);
        return $res;
    }

access_token是客户小程序的access_token;具体接入请看文档;这里只介绍了思路!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值