shish пре 5 година
родитељ
комит
a8b6b71a6b
2 измењених фајлова са 276 додато и 453 уклоњено
  1. 2 167
      app/saas/controllers/MerchantController.php
  2. 274 286
      app/saas/controllers/WxOpenController.php

+ 2 - 167
app/saas/controllers/MerchantController.php

@@ -1,24 +1,16 @@
 <?php
 
 namespace saas\controllers;
-
 use biz\merchant\classes\MerchantClass;
 use biz\merchant\services\MerchantExtendService;
-use biz\wx\classes\WxBaseClass;
-use biz\wx\classes\WxMiniBaseClass;
-use biz\wx\classes\WxOpenClass;
 use Yii;
 use biz\admin\services\AdminService;
 use biz\merchant\services\MerchantService;
 use common\components\util;
-use common\components\wxUtil;
-use common\services\xhMerchantService;
 
 class MerchantController extends BaseController
 {
-	
-	public $withoutLoginAction = ['bind-open'];
-	
+
 	//商家列表 shish 2019.12.20
 	public function actionList()
 	{
@@ -52,164 +44,7 @@ class MerchantController extends BaseController
 		$merchant = MerchantService::getMerchantById(12358);
 		util::success($merchant);
 	}
-	
-	//开放平台设置相关操作 shish 2020.1.18
-	public function actionBindOpen()
-	{
-		$isOpen = Yii::$app->request->get('isOpen', 1);
-		
-		$merchantId = 0;
-		if ($isOpen == 0) {
-			//其它
-			$merchantId = Yii::$app->request->get('account', 0);
-			$merchant = MerchantService::getById($merchantId);
-			if (empty($merchant)) {
-				util::fail('没有找到商家');
-			}
-			$wxAppId = $merchant['wxAppId'];
-			$miniAppId = $merchant['miniAppId'];
-			$openAppId = $merchant['openAppId'];
-		} elseif ($isOpen == 1) {
-			//零售
-			$merchant = WxOpenClass::getWxInfo();
-			$miniAppId = $merchant['miniAppId'];
-			$wxAppId = $merchant['wxAppId'];
-			$openAppId = $merchant['openAppId'];
-		} elseif ($isOpen == 2) {
-			//供货商
-			$merchant = WxOpenClass::getGhsWxInfo();
-			$miniAppId = $merchant['miniAppId'];
-			$wxAppId = $merchant['wxAppId'];
-			$openAppId = $merchant['openAppId'];
-		}
-		echo "<pre>";
-		
-		$id = Yii::$app->request->get('id', 0);
-		
-		//创建平台,并将公众号绑定到平台
-		if ($id == 1) {
-			wxUtil::createOpenAccount($wxAppId, $merchant, $isOpen);
-			$return = wxUtil::getOpenAccount($wxAppId, $merchant, false, $isOpen);
-			print_r($return);
-			if ($return['errcode'] == 0) {
-				$openAppId = $return['open_appid'];
-				if ($isOpen == 0) {
-					xhMerchantService::updateById($merchantId, ['openAppId' => $openAppId]);
-					MerchantExtendService::updateByCondition(['merchantId' => $merchantId], ['openAppId' => $openAppId, 'openAppBind' => 1, 'wxAuth' => 1]);
-				} elseif ($isOpen == 1) {
-					$open = WxOpenClass::getOpen();
-					$wxMiniBaseId = isset($open['wxMiniBaseId']) ? $open['wxMiniBaseId'] : 0;
-					$wxBaseId = isset($open['wxBaseId']) ? $open['wxBaseId'] : 0;
-					WxMiniBaseClass::updateById($wxMiniBaseId, ['openAppId' => $openAppId]);
-					WxBaseClass::updateById($wxBaseId, ['openAppId' => $openAppId]);
-				} elseif ($isOpen == 2) {
-					$open = WxOpenClass::getOpen();
-					$wxMiniBaseId = isset($open['wxGhsMiniBaseId']) ? $open['wxGhsMiniBaseId'] : 0;
-					$wxBaseId = isset($open['wxGhsBaseId']) ? $open['wxGhsBaseId'] : 0;
-					WxMiniBaseClass::updateById($wxMiniBaseId, ['openAppId' => $openAppId]);
-					WxBaseClass::updateById($wxBaseId, ['openAppId' => $openAppId]);
-				}
-			}
-		}
-		//将小程序绑定到平台
-		if ($id == 2) {
-			$openAppId = $merchant['openAppId'];
-			$r = wxUtil::bindOpenAccount($miniAppId, $openAppId, $merchant, true, $isOpen);
-			//MerchantExtendService::updateByCondition(['merchantId' => $merchantId], ['openAppBind' => 3, 'miniAuth' => 1]);
-			print_r($r);
-		}
-		//查询公众号 小程序的绑定情况
-		if ($id == 3) {
-			Yii::info("查询公众号 小程序的绑定情况 wxAppId:{$wxAppId} isOpen:{$isOpen}");
-			$return = wxUtil::getOpenAccount($wxAppId, $merchant, false, $isOpen);
-			echo "公众号绑定情况:<br />";
-			print_r($return);
-			$return = wxUtil::getOpenAccount($miniAppId, $merchant, true, $isOpen);
-			echo "小程序绑定情况:<br />";
-			print_r($return);
-		}
-		
-		//设置小程序服务器域名
-		if ($id == 4) {
-			wxUtil::setDomain($merchant, $isOpen);
-			wxUtil::setWebViewDomain($merchant, $isOpen);
-		}
-		
-		//为授权的小程序帐号上传小程序代码
-		if ($id == 5) {
-			//模板id
-			$tId = Yii::$app->request->get('tId');
-			wxUtil::miniCommit($merchant, $tId, $isOpen);
-		}
-		
-		//获取小程序体验码
-		if ($id == 6) {
-			wxUtil::getExperienceQrCode($merchant, '', $isOpen);
-		}
-		
-		//获取授权小程序帐号已设置的类目
-		if ($id == 7) {
-			wxUtil::getMiniCategory($merchant, $isOpen);
-		}
-		
-		//获取小程序的第三方提交代码的页面配置
-		if ($id == 8) {
-			wxUtil::getMiniPage($merchant, $isOpen);
-		}
-		
-		//将第三方提交的代码包提交审核
-		if ($id == 9) {
-			wxUtil::miniSubmitAudit($merchant, '', $isOpen);
-		}
-		
-		//查询最新一次提交的审核状态
-		if ($id == 10) {
-			wxUtil::miniGetLatestAuditStatus($merchant, $isOpen);
-		}
-		
-		//发布已通过审核的小程序
-		if ($id == 11) {
-			$respond = wxUtil::miniRelease($merchant, $isOpen);
-			dd($respond);
-		}
-		
-		//撤回审核
-		if ($id == 12) {
-			wxUtil::rollbackCheck($merchant, $isOpen);
-		}
-		//生成 申请会员页 的小程序码
-		if ($id == 13) {
-			wxUtil::generateMemberCode($merchant, $isOpen);
-		}
-		//解绑小程序和公众号绑定的平台
-		if ($id == 14) {
-			wxUtil::unbindAccount($merchant, $isOpen);
-			wxUtil::unbindMiniProgram($merchant, $isOpen);
-		}
-		Yii::$app->end();
-		
-		$r = wxUtil::bindOpenAccount($miniAppId, $openAppId, $merchant, true, $isOpen);
-		print_r($r);
-		echo $miniAppId . ' ' . $openAppId . ' ';
-		
-		$return = wxUtil::getOpenAccount($wxAppId, $merchant, false, $isOpen);
-		print_r($return);
-		die;
-		
-		$return = wxUtil::createOpenAccount($wxAppId, $merchant, $isOpen);
-		print_r($return);
-		die;
-		
-		$r = wxUtil::bindOpenAccount($miniAppId, $openAppId, $merchant, false, $isOpen);
-		print_r($r);
-		echo $miniAppId . ' ' . $openAppId . ' ';
-		
-		$return = wxUtil::getOpenAccount($wxAppId, $merchant, false, $isOpen);
-		print_r($return);
-		$return = wxUtil::getOpenAccount($miniAppId, $merchant, false, $isOpen);
-		print_r($return);
-	}
-	
+
 	//平台帐号激活 shish 2020.2.15
 	public function actionAddPlatformMerchant()
 	{

+ 274 - 286
app/saas/controllers/WxOpenController.php

@@ -2,9 +2,7 @@
 
 namespace saas\controllers;
 
-use biz\merchant\services\MerchantExtendService;
 use biz\merchant\services\MerchantService;
-use biz\wx\services\MiniProgramService;
 use biz\wx\services\WxBaseService;
 use biz\wx\services\WxMiniBaseService;
 use common\components\util;
@@ -19,35 +17,231 @@ use common\services\xhMerchantService;
 use common\services\xhInviteService;
 use common\components\configDict;
 use common\services\xhWxOpenService;
+use biz\wx\classes\WxMiniBaseClass;
+use biz\wx\classes\WxOpenClass;
+
 
 class WxOpenController extends PublicController
 {
 
     public $withoutLoginAction = ['bind-open'];
 
-    public function actionBindOpen()
+    //开放平台开始授权 shish 2020.1.16
+    public function actionBeginAuth()
+    {
+        $sjId = Yii::$app->request->get('id', 0);
+        $open = WxOpenService::getOpen();
+        //1只显示公众号 2只显示小程序  3显示公众号和小程序
+        $authType = Yii::$app->request->get('authType', 3);
+        $pre = wxUtil::getPreAuthCode($open);
+        $appId = $open['appId'];
+        $oData = [];
+        $oData['preAuthCodeTime'] = date("Y-m-d H:i:s");
+        //设置预授码过期,让下个用户可以获取新的预授码
+        xhWxOpenService::updateById(1, $oData);
+        $url = Yii::$app->params['saasHost'] . '/wx-open-callback/' . $sjId;
+        echo "<a href='https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid={$appId}&pre_auth_code={$pre}&redirect_uri={$url}&auth_type={$authType}'>授权</a>";
+    }
+
+    //创建平台使用的公众号
+    public function actionCallback()
     {
-        $merchantId = Yii::$app->request->get('merchantId', 0);
-        $isOpen = Yii::$app->request->get('isOpen', 0);
-        if ($isOpen == 1) {
-            $merchant = WxOpenService::getWxInfo();
+        $get = Yii::$app->request->get();
+        if (isset($get['auth_code']) == false) {
+            util::stop('公众号授权回调未成功');
+        }
+        $id = $get['id'] ?? 0;
+
+        $code = $get['auth_code'];
+        //使用授权码换取公众号的接口调用凭据和授权信息
+        $authorize = wxUtil::getAuthorizer($code);
+        if (isset($authorize['authorization_info']) == false) {
+            util::stop('未换取公众号的接口调用凭据和授权信息');
+        }
+        $info = $authorize['authorization_info'];
+        $authorizeAppId = $info['authorizer_appid'];
+        $authorize_access_token = $info['authorizer_access_token'];
+        $expires_in = $info['expires_in'];//7200
+        $authorize_refresh_token = $info['authorizer_refresh_token'];
+        //获取授权方的公众号帐号基本信息
+        $authorizeDetailInfo = wxUtil::getAuthorizerInfo($authorizeAppId);
+        if (isset($authorizeDetailInfo['authorizer_info']) == false) {
+            util::stop('没有获取到公众号帐号基本信息');
+        }
+        $authorize_info = $authorizeDetailInfo['authorizer_info'];
+        //$nick_name = $authorize_info['nick_name'];
+        $head_img = $authorize_info['head_img'];
+        $service_type_info = $authorize_info['service_type_info'];
+        if ($service_type_info['id'] != 2) {
+            if (isset($authorize_info['MiniProgramInfo']) == false || empty($authorize_info['MiniProgramInfo'])) {
+                util::stop('公众号不是服务号');
+            }
+        }
+        $verify_type_info = $authorize_info['verify_type_info'];
+        if ($verify_type_info['id'] != 0) {
+            if (isset($authorize_info['MiniProgramInfo']) == false || empty($authorize_info['MiniProgramInfo'])) {
+                util::stop('公众号还没有认证哦');
+            }
+        }
+        $user_name = $authorize_info['user_name'];
+        $alias = $authorize_info['alias'];
+        $qrCodeUrl = $authorize_info['qrcode_url'];
+        $accessTokenTime = date("Y-m-d H:i:s", (time() + $expires_in - 100));//安全起见,将过期时间设置得比微信里还短100秒
+
+        if ($id == 0) {
+            //这是供货商
+            $sjWxInfo = WxOpenClass::getGhsWxInfo();
+        } elseif ($id == -1) {
+            //这是零售商
+            $sjWxInfo = WxOpenClass::getWxInfo();
         } else {
-            $merchant = MerchantService::getMerchantById($merchantId);
-            if (empty($merchant)) {
-                util::fail('没有找到商家');
+            $sjWxInfo = MerchantExtendClass::getByMerchantId($id);
+        }
+
+        $open = WxOpenService::getOpen();
+
+        //如果授权的是小程序
+        if (isset($authorize_info['MiniProgramInfo']) && !empty($authorize_info['MiniProgramInfo'])) {
+
+            if (isset($sjWxInfo['miniAppId']) && !empty($sjWxInfo['miniAppId'])) {
+                if ($sjWxInfo['miniAppId'] != $authorizeAppId) {
+                    util::stop('授权的小程序与商家已绑定的小程序不一致');
+                }
+            } else {
+                util::stop('数据库请先填写小程序 miniAppId miniAppSecret');
+            }
+
+            $miniData = [
+                'miniAppId' => $authorizeAppId,
+                'miniAuth' => 1,
+                'miniAccessToken' => $authorize_access_token,
+                'miniAccessTokenTime' => $accessTokenTime,
+                'miniRefreshToken' => $authorize_refresh_token,
+            ];
+
+            if ($id <= 0) {
+                $wxMiniBaseId = 0;
+                if ($id == 0) {
+                    //供货商
+                    $wxMiniBaseId = $open['wxGhsMiniBaseId'] ?? 0;
+                } elseif ($id == -1) {
+                    //零售店
+                    $wxMiniBaseId = $open['wxMiniBaseId'] ?? 0;
+                }
+                if (empty($wxMiniBaseId)) {
+                    util::stop('没有小程序信息...');
+                }
+                $miniInfo = WxMiniBaseClass::getById($wxMiniBaseId);
+                if (empty($miniInfo)) {
+                    util::stop('没有小程序信息,请先配置:xhWxMiniBase表 和 xhWxOpen的相关字段');
+                }
+                WxMiniBaseClass::updateById($wxMiniBaseId, $miniData);
+                util::stop('开放平台成功绑定小程序');
+            } else {
+                xhMerchantExtendService::updateByMerchantId($id, $miniData);
+                MerchantService::updateById($id, ['miniAppId' => $authorizeAppId]);
+                Yii::info('小程序信息更新成功:' . json_encode($authorize_info));
+                util::stop("小程序信息更新成功");
+            }
+        } else {
+
+            //如果授权的公众号
+
+            if (isset($sjWxInfo['wxAppId']) && !empty($sjWxInfo['wxAppId'])) {
+                if ($sjWxInfo['wxAppId'] != $authorizeAppId) {
+                    util::stop('授权的公众号与商家已绑定的公众号不一致');
+                }
+            }
+
+            $wxData = [];
+            $appData['wxUserName'] = $user_name;
+            $appData['wxAliasName'] = $alias;
+            //公众号logo
+            $wxData['logo'] = WxBaseClass::saveLogo($head_img, $id);
+            //公众号二维码
+            $wxData['wxQrCodeUrl'] = WxBaseClass::saveQrCode($qrCodeUrl, $id);
+            $wxData['wxAppId'] = $authorizeAppId;
+            $wxData['wxAccessToken'] = $authorize_access_token;
+            $wxData['wxAccessTokenTime'] = $accessTokenTime;
+            $wxData['wxRefreshToken'] = $authorize_refresh_token;
+
+
+            if ($id <= 0) {
+
+                $wxBaseId = 0;
+                $msg = '未知状态';
+                if ($id == 0) {
+                    //供货商公众号
+                    $wxBaseId = $open['wxGhsBaseId'] ?? 0;
+                    $msg = '供货商公众号绑定成功';
+                } elseif ($id == -1) {
+                    //零售商公众号
+                    $wxBaseId = $open['wxBaseId'] ?? 0;
+                    $msg = '零售商公众号绑定成功';
+                } else {
+
+                }
+
+                WxBaseClass::updateById($wxBaseId, [
+                    'wxAccessToken' => $authorize_access_token,
+                    'wxRefreshToken' => $authorize_refresh_token,
+                    'wxAccessTokenTime' => date("Y-m-d H:i:s", (time() + $expires_in - 100))
+                ]);
+                echo $msg;
+                Yii::$app->end();
+            } else {
+
+                $wxData['status'] = 1;//审核通过
+                xhMerchantService::updateById($id, $wxData);
+                MerchantExtendClass::updateByCondition(['merchantId' => $id], ['wxAppId' => $authorizeAppId, 'wxAuth' => 1]);
+
+                //还没有完成初始化先进行初始化
+                if (isset($sjWxInfo['init']) && $sjWxInfo['init'] == 0) {
+                    $data = ['merchantId' => $id];
+                    $producer = Yii::$app->rabbitmq->getProducer('openShopInitProducer');
+                    $msg = serialize($data);
+                    $producer->publish($msg, 'openShopInitExchange', 'openShopInitRoute');
+                }
+                echo 'ok';
             }
         }
 
-        $wxAppId = $merchant['wxAppId'];
-        $miniAppId = $merchant['miniAppId'];
-        $open_appid = $merchant['openAppId'];
+    }
+
+
+    //开放平台设置相关操作 shish 2020.1.18
+    public function actionBindOpen()
+    {
+        $isOpen = Yii::$app->request->get('isOpen', 1);
 
+        $merchantId = 0;
+        if ($isOpen == 0) {
+            //其它
+            $merchantId = Yii::$app->request->get('account', 0);
+            $merchant = MerchantService::getById($merchantId);
+            if (empty($merchant)) {
+                util::fail('没有找到商家');
+            }
+            $wxAppId = $merchant['wxAppId'];
+            $miniAppId = $merchant['miniAppId'];
+            $openAppId = $merchant['openAppId'];
+        } elseif ($isOpen == 1) {
+            //零售
+            $merchant = WxOpenClass::getWxInfo();
+            $miniAppId = $merchant['miniAppId'];
+            $wxAppId = $merchant['wxAppId'];
+            $openAppId = $merchant['openAppId'];
+        } elseif ($isOpen == 2) {
+            //供货商
+            $merchant = WxOpenClass::getGhsWxInfo();
+            $miniAppId = $merchant['miniAppId'];
+            $wxAppId = $merchant['wxAppId'];
+            $openAppId = $merchant['openAppId'];
+        }
         echo "<pre>";
 
-        //小程序入口路径
-        $firstPage = $isOpen == 1 ? "admin/home/console" : "pages/home/index";
+        $id = Yii::$app->request->get('actId', 0);
 
-        $id = Yii::$app->request->get('id', 0);
         //创建平台,并将公众号绑定到平台
         if ($id == 1) {
             wxUtil::createOpenAccount($wxAppId, $merchant, $isOpen);
@@ -55,36 +249,39 @@ class WxOpenController extends PublicController
             print_r($return);
             if ($return['errcode'] == 0) {
                 $openAppId = $return['open_appid'];
-
-                if ($isOpen == 1) {
-                    WxOpenService::updateOpen(['appIdCreated' => $openAppId, 'openAppBind' => 1]);
-                } else {
-                    MerchantService::updateById($merchantId, ['openAppId' => $openAppId]);
+                if ($isOpen == 0) {
+                    xhMerchantService::updateById($merchantId, ['openAppId' => $openAppId]);
                     MerchantExtendService::updateByCondition(['merchantId' => $merchantId], ['openAppId' => $openAppId, 'openAppBind' => 1, 'wxAuth' => 1]);
+                } elseif ($isOpen == 1) {
+                    $open = WxOpenClass::getOpen();
+                    $wxMiniBaseId = isset($open['wxMiniBaseId']) ? $open['wxMiniBaseId'] : 0;
+                    $wxBaseId = isset($open['wxBaseId']) ? $open['wxBaseId'] : 0;
+                    WxMiniBaseClass::updateById($wxMiniBaseId, ['openAppId' => $openAppId]);
+                    WxBaseClass::updateById($wxBaseId, ['openAppId' => $openAppId]);
+                } elseif ($isOpen == 2) {
+                    $open = WxOpenClass::getOpen();
+                    $wxMiniBaseId = isset($open['wxGhsMiniBaseId']) ? $open['wxGhsMiniBaseId'] : 0;
+                    $wxBaseId = isset($open['wxGhsBaseId']) ? $open['wxGhsBaseId'] : 0;
+                    WxMiniBaseClass::updateById($wxMiniBaseId, ['openAppId' => $openAppId]);
+                    WxBaseClass::updateById($wxBaseId, ['openAppId' => $openAppId]);
                 }
-
-
             }
         }
         //将小程序绑定到平台
         if ($id == 2) {
             $openAppId = $merchant['openAppId'];
             $r = wxUtil::bindOpenAccount($miniAppId, $openAppId, $merchant, true, $isOpen);
-
-            if ($isOpen == 1) {
-                WxOpenService::updateOpen(['appIdCreated' => $openAppId, 'openAppBind' => 3]);
-            } else {
-                MerchantExtendService::updateByCondition(['merchantId' => $merchantId], ['openAppBind' => 3, 'miniAuth' => 1]);
-            }
-
-
+            //MerchantExtendService::updateByCondition(['merchantId' => $merchantId], ['openAppBind' => 3, 'miniAuth' => 1]);
             print_r($r);
         }
         //查询公众号 小程序的绑定情况
         if ($id == 3) {
+            Yii::info("查询公众号 小程序的绑定情况 wxAppId:{$wxAppId} isOpen:{$isOpen}");
             $return = wxUtil::getOpenAccount($wxAppId, $merchant, false, $isOpen);
+            echo "公众号绑定情况:<br />";
             print_r($return);
             $return = wxUtil::getOpenAccount($miniAppId, $merchant, true, $isOpen);
+            echo "小程序绑定情况:<br />";
             print_r($return);
         }
 
@@ -96,13 +293,14 @@ class WxOpenController extends PublicController
 
         //为授权的小程序帐号上传小程序代码
         if ($id == 5) {
-            $tId = $_GET['tId'];
+            //模板id
+            $tId = Yii::$app->request->get('tId');
             wxUtil::miniCommit($merchant, $tId, $isOpen);
         }
 
         //获取小程序体验码
         if ($id == 6) {
-            wxUtil::getExperienceQrCode($merchant, $firstPage, $isOpen);
+            wxUtil::getExperienceQrCode($merchant, '', $isOpen);
         }
 
         //获取授权小程序帐号已设置的类目
@@ -117,7 +315,7 @@ class WxOpenController extends PublicController
 
         //将第三方提交的代码包提交审核
         if ($id == 9) {
-            wxUtil::miniSubmitAudit($merchant, $firstPage, $isOpen);
+            wxUtil::miniSubmitAudit($merchant, '', $isOpen);
         }
 
         //查询最新一次提交的审核状态
@@ -127,8 +325,8 @@ class WxOpenController extends PublicController
 
         //发布已通过审核的小程序
         if ($id == 11) {
-            $r = MiniProgramService::release($merchant, $isOpen);
-            print_r($r);
+            $respond = wxUtil::miniRelease($merchant, $isOpen);
+            dd($respond);
         }
 
         //撤回审核
@@ -137,281 +335,37 @@ class WxOpenController extends PublicController
         }
         //生成 申请会员页 的小程序码
         if ($id == 13) {
-            //wxUtil::generateMemberCode($merchant,$shopId ,$isOpen);
+            wxUtil::generateMemberCode($merchant, $isOpen);
         }
         //解绑小程序和公众号绑定的平台
         if ($id == 14) {
             wxUtil::unbindAccount($merchant, $isOpen);
             wxUtil::unbindMiniProgram($merchant, $isOpen);
         }
-
-        if ($id = 15) {
-            //审核单ID
-            $checkId = Yii::$app->request->get('checkId', 0);
-            if (!empty($checkId)) {
-                wxUtil::speedupAudit($merchant, $checkId, $isOpen);
-            }
-        }
-
         Yii::$app->end();
 
-        $r = wxUtil::bindOpenAccount($miniAppId, $open_appid, $merchant, true, $isOpen);
+        $r = wxUtil::bindOpenAccount($miniAppId, $openAppId, $merchant, true, $isOpen);
         print_r($r);
-        echo $miniAppId . ' ' . $open_appid . ' ';
+        echo $miniAppId . ' ' . $openAppId . ' ';
 
         $return = wxUtil::getOpenAccount($wxAppId, $merchant, false, $isOpen);
         print_r($return);
         die;
 
-        $return = wxUtil::createOpenAccount($wxAppId, $merchant);
+        $return = wxUtil::createOpenAccount($wxAppId, $merchant, $isOpen);
         print_r($return);
         die;
 
-        $r = wxUtil::bindOpenAccount($miniAppId, $open_appid, $merchant, false, $isOpen);
+        $r = wxUtil::bindOpenAccount($miniAppId, $openAppId, $merchant, false, $isOpen);
         print_r($r);
-        echo $miniAppId . ' ' . $open_appid . ' ';
+        echo $miniAppId . ' ' . $openAppId . ' ';
 
         $return = wxUtil::getOpenAccount($wxAppId, $merchant, false, $isOpen);
         print_r($return);
         $return = wxUtil::getOpenAccount($miniAppId, $merchant, false, $isOpen);
         print_r($return);
-        die;
-
-        if ($return['errcode'] == 0) {
-            $open_appid = isset($return['open_appid']) ? $return['open_appid'] : '';
-        } else {
-            $return = wxUtil::createOpenAccount($wxAppId, $merchant);
-            if ($return['errcode'] == 0) {
-                $open_appid = isset($return['open_appid']) ? $return['open_appid'] : '';
-            }
-        }
-        echo "<br />open_appid:" . $open_appid . "<br />";
-        if (!empty($open_appid)) {
-            xhMerchantService::updateById($merchantId, ['openAppId' => $open_appid]);
-            MerchantExtendService::updateByCondition(['merchantId' => $merchantId], ['openAppId' => $open_appid, 'openAppBind' => 3, 'miniAuth' => 1]);
-            $r = wxUtil::bindOpenAccount($miniAppId, $open_appid, $merchant, false, $isOpen);
-            echo "绑定小程序结果:<br />";
-            print_r($r);
-        }
-        echo "<br /><br />";
-        $return = wxUtil::getOpenAccount($wxAppId, $merchant, false, $isOpen);
-        echo "微信appId:{$wxAppId}<br />";
-        print_r($return);
-        $return = wxUtil::getOpenAccount($miniAppId, $merchant, false, $isOpen);
-        echo "<br />小程序appId:{$miniAppId}<br />";
-        print_r($return);
-    }
-
-    //开放平台开始授权 shish 2020.1.16
-    public function actionBeginAuth()
-    {
-        $merchantId = Yii::$app->request->get('id', 0);
-        $open = WxOpenService::getOpen();
-        //1只显示公众号 2只显示小程序  3显示公众号和小程序
-        $authType = Yii::$app->request->get('authType', 3);
-        $pre = wxUtil::getPreAuthCode($open);
-        $appId = $open['appId'];
-        $oData = [];
-        $oData['preAuthCodeTime'] = date("Y-m-d H:i:s");
-        //设置预授码过期,让下个用户可以获取新的预授码
-        xhWxOpenService::updateById(1, $oData);
-        $url = Yii::$app->params['saasHost'] . '/wx-open-callback/' . $merchantId;
-        echo "<a href='https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid={$appId}&pre_auth_code={$pre}&redirect_uri={$url}&auth_type={$authType}'>授权</a>";
     }
 
-    //平台没有绑定商家公众号时初始化一个商家 shish 2020.2.11
-    public function actionAddMerchant()
-    {
-        AdClass::initAdd(12362);
-        $return = MerchantService::initOpenMerchant();
-        dd($return);
-    }
-
-    public function actionCheckMerchantName()
-    {
-        $get = Yii::$app->request->get();
-        $merchantName = isset($get['merchantName']) ? $get['merchantName'] : '';
-        $m = xhMerchantService::getByMerchantName($merchantName);
-        if (!empty($m)) {
-            util::fail('公众号名称已经使用');
-        }
-        util::complete();
-    }
-
-    /**
-     * 下载微信里的图片到服务器
-     */
-    public function actionDownloadWxImg()
-    {
-        $get = Yii::$app->request->get();
-        $mediaId = isset($get['mediaId']) ? $get['mediaId'] : '';
-        $imgList = wxUtil::downloadmediaIdImg($this->merchant, $mediaId);
-        if (!empty($imgList)) {
-            util::success($imgList);
-        }
-        util::fail();
-    }
-
-    //创建平台使用的公众号
-    public function actionCallback()
-    {
-        $get = Yii::$app->request->get();
-        if (isset($get['auth_code']) == false) {
-            util::stop('公众号授权回调未成功');
-        }
-        $id = isset($get['id']) ? $get['id'] : 0;
-        $code = $get['auth_code'];
-        //使用授权码换取公众号的接口调用凭据和授权信息
-        $authorize = wxUtil::getAuthorizer($code);
-        if (isset($authorize['authorization_info']) == false) {
-            util::stop('未换取公众号的接口调用凭据和授权信息');
-        }
-        $info = $authorize['authorization_info'];
-        $authorizeAppId = $info['authorizer_appid'];
-        $authorize_access_token = $info['authorizer_access_token'];
-        $expires_in = $info['expires_in'];//7200
-        $authorize_refresh_token = $info['authorizer_refresh_token'];
-        //获取授权方的公众号帐号基本信息
-        $authorizeDetailInfo = wxUtil::getAuthorizerInfo($authorizeAppId);
-        if (isset($authorizeDetailInfo['authorizer_info']) == false) {
-            util::stop('没有获取到公众号帐号基本信息');
-        }
-        $authorize_info = $authorizeDetailInfo['authorizer_info'];
-        //$nick_name = $authorize_info['nick_name'];
-        $head_img = $authorize_info['head_img'];
-        $service_type_info = $authorize_info['service_type_info'];
-        if ($service_type_info['id'] != 2) {
-            if (isset($authorize_info['MiniProgramInfo']) == false || empty($authorize_info['MiniProgramInfo'])) {
-                util::stop('公众号不是服务号');
-            }
-        }
-        $verify_type_info = $authorize_info['verify_type_info'];
-        if ($verify_type_info['id'] != 0) {
-            if (isset($authorize_info['MiniProgramInfo']) == false || empty($authorize_info['MiniProgramInfo'])) {
-                util::stop('公众号还没有认证哦');
-            }
-        }
-        $user_name = $authorize_info['user_name'];
-        $alias = $authorize_info['alias'];
-        $qrCodeUrl = $authorize_info['qrcode_url'];
-        $accessTokenTime = date("Y-m-d H:i:s", (time() + $expires_in - 100));//安全起见,将过期时间设置得比微信里还短100秒
-
-        $extend = MerchantExtendClass::getByMerchantId($id);
-
-        $open = WxOpenService::getOpen();
-        $time = time();
-
-        //小程序
-        if (isset($authorize_info['MiniProgramInfo']) && !empty($authorize_info['MiniProgramInfo'])) {
-            $miniData = [
-                'miniAppId' => $authorizeAppId,
-                'miniAuth' => 1,
-                'miniAccessToken' => $authorize_access_token,
-                'miniAccessTokenTime' => $accessTokenTime,
-                'miniRefreshToken' => $authorize_refresh_token,
-            ];
-
-            //开放平台没有小程序先绑定开放平台要用的小程序
-            if (isset($open['wxMiniBaseId']) == false || empty($open['wxMiniBaseId'])) {
-                $miniData['addTime'] = $time;
-
-                //花卉宝
-                $miniAppSecret = 'f1ae43c87080da21ac631609b0dbb147';
-                if (getenv('YII_ENV') == 'dev') {
-                    //花美玲
-                    $miniAppSecret = '12f90039b1245ba6abf2e4184462fb30';
-                } elseif (getenv('YII_ENV') == 'test') {
-                    //花掌柜
-                    $miniAppSecret = 'fd21ef3ebbc70e89d5c3a5a3c013edb6';
-                } else {
-
-                }
-                $miniData['miniAppSecret'] = $miniAppSecret;
-
-                $wxMiniBaseRespond = WxMiniBaseService::add($miniData);
-                $wxMiniBaseId = $wxMiniBaseRespond['id'];
-                WxOpenService::updateOpen(['wxMiniBaseId' => $wxMiniBaseId]);
-                util::stop('开放平台成功绑定小程序');
-            }
-
-
-            if (isset($extend['miniAppId']) && !empty($extend['miniAppId'])) {
-                if ($extend['miniAppId'] != $authorizeAppId) {
-                    util::stop('授权的小程序与商家已绑定的小程序不一致');
-                }
-            } else {
-                util::stop('数据库请先填写小程序 miniAppId miniAppSecret');
-            }
-
-            xhMerchantExtendService::updateByMerchantId($id, $miniData);
-            MerchantService::updateById($id, ['miniAppId' => $authorizeAppId]);
-            Yii::info('小程序信息更新成功:' . json_encode($authorize_info));
-            util::stop("小程序信息更新成功");
-
-        } else {
-            if (isset($extend['wxAppId']) && !empty($extend['wxAppId'])) {
-                if ($extend['wxAppId'] != $authorizeAppId) {
-                    util::stop('授权的公众号与商家已绑定的公众号不一致');
-                }
-            }
-        }
-
-        $wxData = [];
-        $appData['wxUserName'] = $user_name;
-        $appData['wxAliasName'] = $alias;
-        //公众号logo
-        $wxData['logo'] = WxBaseClass::saveLogo($head_img, $id);
-        //公众号二维码
-        $wxData['wxQrCodeUrl'] = WxBaseClass::saveQrCode($qrCodeUrl, $id);
-        $wxData['wxAppId'] = $authorizeAppId;
-        $wxData['wxAccessToken'] = $authorize_access_token;
-        $wxData['wxAccessTokenTime'] = $accessTokenTime;
-        $wxData['wxRefreshToken'] = $authorize_refresh_token;
-        //开放平台还没有公众号先绑定开放平台的公众号
-        if (isset($open['wxBaseId']) == false || empty($open['wxBaseId'])) {
-            $wxData['addTime'] = $time;
-            $wxBaseRespond = WxBaseService::add($wxData);
-            $wxBaseId = $wxBaseRespond['id'];
-            WxOpenService::updateOpen(['wxBaseId' => $wxBaseId]);
-            util::stop('开放平台成功绑定公众号');
-        }
-
-
-        //查询是否零售或供货商使用的公众号
-        $hasChange = false;
-        $wxBase = WxBaseClass::getAllByCondition(['id>' => 0], null, '*');
-        if (!empty($wxBase)) {
-            foreach ($wxBase as $wx) {
-                if (isset($wx['wxAppId']) && $wx['wxAppId'] == $authorizeAppId) {
-                    $id = $wx['id'];
-                    WxBaseClass::updateById($id, [
-                        'wxAccessToken' => $authorize_access_token,
-                        'wxRefreshToken' => $authorize_refresh_token,
-                        'wxAccessTokenTime' => date("Y-m-d H:i:s", (time() + $expires_in - 100))
-                    ]);
-                    $hasChange = true;
-                }
-            }
-            if ($hasChange) {
-                echo 'ok';
-                Yii::$app->end();
-            }
-        }
-
-
-        $wxData['status'] = 1;//审核通过
-        xhMerchantService::updateById($id, $wxData);
-        MerchantExtendClass::updateByCondition(['merchantId' => $id], ['wxAppId' => $authorizeAppId, 'wxAuth' => 1]);
-
-        //还没有完成初始化先进行初始化
-        if (isset($extend['init']) && $extend['init'] == 0) {
-            $data = ['merchantId' => $id];
-            $producer = Yii::$app->rabbitmq->getProducer('openShopInitProducer');
-            $msg = serialize($data);
-            $producer->publish($msg, 'openShopInitExchange', 'openShopInitRoute');
-        }
-        echo 'ok';
-    }
 
     public function actionResult()
     {
@@ -591,4 +545,38 @@ class WxOpenController extends PublicController
         util::success($open);
     }
 
+
+    //平台没有绑定商家公众号时初始化一个商家 shish 2020.2.11
+    public function actionAddMerchant()
+    {
+        AdClass::initAdd(12362);
+        $return = MerchantService::initOpenMerchant();
+        dd($return);
+    }
+
+    public function actionCheckMerchantName()
+    {
+        $get = Yii::$app->request->get();
+        $merchantName = isset($get['merchantName']) ? $get['merchantName'] : '';
+        $m = xhMerchantService::getByMerchantName($merchantName);
+        if (!empty($m)) {
+            util::fail('公众号名称已经使用');
+        }
+        util::complete();
+    }
+
+    /**
+     * 下载微信里的图片到服务器
+     */
+    public function actionDownloadWxImg()
+    {
+        $get = Yii::$app->request->get();
+        $mediaId = isset($get['mediaId']) ? $get['mediaId'] : '';
+        $imgList = wxUtil::downloadmediaIdImg($this->merchant, $mediaId);
+        if (!empty($imgList)) {
+            util::success($imgList);
+        }
+        util::fail();
+    }
+
 }