store_id; //微信小程序model $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one(); //申请店铺进件信息 // $store_schedule = StoreSchedule::find()->where(['store_id' => $store_id])->asArray()->one(); // //获取注册信息 // $merchant_info = json_decode($store_schedule['merchant_info'], true); // //获取营业执照信息 // $license_info = $merchant_info['subject_info']['business_license_info']; //注册小程序信息 $data = [ "name" => $store_mini->name ?: '', "code" => $store_mini->code ?: '', "code_type" => $store_mini->code_type ?: 1, "legal_persona_wechat" => $store_mini->legal_persona_wechat, "legal_persona_name" => $store_mini->legal_persona_name ?: '', "license_pic" => $store_mini->license_pic ?: '', ]; if (empty($store_mini)) { return [ 'code' => 0, 'msg' => "没有注册小程序", 'data' => [ 'status' => 0, 'data' => $data, 'progress' => 0, 'bind_store_id' => $store_id ] ]; } //判断是快速注册的小程序,且 if (!empty($store_mini->code)) { $form = new RegisterMiniForm(); $form->store_id = $store_id; //快速注册审核中 if ($store_mini->status == -1) { //获取审核状态 //调用查询快速注册状态,查询进度信息 $result = $form->getFastRegisterStatus(); if ($result['code'] !== 0) { return [ 'code' => 0, 'msg' => $result['msg'], 'data' => [ 'status' => 1, 'data' => $data, 'progress' => 0, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } } //如果状态是已经注册,判断是否存在appid/token/refresh_token,不存在则调用接口拿取信息 if ($store_mini->status == 1) { if (empty($store_mini->appid) || empty($store_mini->authorizer_access_token) || empty($store_mini->authorizer_refresh_token)) { $result = $form->getToken(); if ($result['code'] !== 0) { return [ 'code' => 0, 'msg' => $result['msg'], 'data' => [ 'status' => 2, 'data' => $data, 'progress' => 0, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } } } } //获取完善小程序状态 return $this->getPerfectStatus(); } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //完善小程序 public function getPerfectStatus() { try { $store_id = $this->store_id; $store = Store::findOne($store_id); //微信小程序model $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one(); /** * 进度:完善小程序 * status = 0 完善小程序名称 * status = 1 开始审核,等待微信返回结果(没有审核单ID) * status = 2 开始审核,查询申请单信息错误 * status = 3 小程序名称审核失败 * status = 4 需要上传头像 * status = 5 分类参数错误 * status = 6 需要上传类目信息 * status = 7 需要添加简介信息 **/ $form = new PerfectMiniForm(); $form->store_id = $store_id; if (empty($store_mini->mini_nickname)) { return [ 'code' => 0, 'msg' => "需要完善小程序名称", 'data' => [ 'status' => 0, 'progress' => 1, 'bind_store_id' => $store_id, 'data' => [ 'name' => $store->name, ], 'mini_id' => $store_mini->id ] ]; } //如果审核名称 if ($store_mini->apply_name_status == 1) { if (empty($store_mini->nickname_audit_id)) { return [ 'code' => 0, 'msg' => "参数错误,没有审核单ID,等待系统推送审核结果", 'data' => [ 'status' => 1, 'progress' => 1, 'bind_store_id' => $store_id, 'data' => [ 'name' => $store_mini->mini_nickname, ], 'mini_id' => $store_mini->id ] ]; } //获取名称审核信息 $result = $form->getMiniStatus(); //请求错误信息返回 if ($result['code'] !== 0) { return [ 'code' => 0, 'msg' => $result['msg'], 'data' => [ 'status' => 1, 'progress' => 1, 'bind_store_id' => $store_id, 'data' => [ 'name' => $store_mini->mini_nickname, ], 'mini_id' => $store_mini->id ] ]; } if ($result['status'] == 1) { return [ 'code' => 0, 'msg' => "小程序信息审核中", 'data' => [ 'status' => 2, 'progress' => 1, 'bind_store_id' => $store_id, 'data' => [ 'name' => $store_mini->mini_nickname, ], 'mini_id' => $store_mini->id ] ]; } } //名称审核失败 if ($store_mini->apply_name_status == 2) { return [ 'code' => 0, 'msg' => "名称审核失败:" . $store_mini->apply_name_error, 'data' => [ 'status' => 3, 'progress' => 1, 'bind_store_id' => $store_id, 'data' => [ 'name' => $store_mini->mini_nickname, ], 'mini_id' => $store_mini->id ] ]; } //名称审核成功 if (empty($store_mini->mini_url)) { return [ 'code' => 0, 'msg' => "需要上传头像", 'data' => [ 'status' => 4, 'progress' => 1, 'bind_store_id' => $store_id, 'data' => [ 'mini_url' => $store->logo ], 'mini_id' => $store_mini->id ] ]; } //判断简介是否为空 if (empty($store_mini->signature)) { return [ 'code' => 0, 'msg' => "需要添加简介信息", 'data' => [ 'status' => 7, 'progress' => 1, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id, 'data' => [ ], ] ]; } //配置隐私 $result = $form->setPrivacyForm(); //输出信息 $file_name = \Yii::$app->runtimePath . '/logs/app_wechat.log'; file_put_contents($file_name, "\r\n" . '[配置隐私][' . date('Y-m-d H:i:s') . $store_mini->id . ']' . json_encode($result), FILE_APPEND); //配置业务域名 $result = $form->setDomainName(); //输出信息 file_put_contents($file_name, "\r\n" . '[配置业务域名][' . date('Y-m-d H:i:s') . ']' . json_encode($result), FILE_APPEND); //配置服务器域名 $result = $form->setWebviewDomain(); //输出信息 file_put_contents($file_name, "\r\n" . '[配置服务器域名][' . date('Y-m-d H:i:s') . ']' . json_encode($result), FILE_APPEND); //获取小程序提交状态 return $this->getSubmitStatus(); } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } public function getSubmitStatus() { try { /** * 进度:提交上传小程序 * status = 0 需要上传模板 * status = 1 已经更新模板 * status = 2 已经提交审核,等待微信返回结果 * status = 3 获取审核状态时错误 * status = 4 审核中 * status = 5 审核不通过 * status = 6 审核延期 * status = 7 小程序发布完成 */ $store_id = $this->store_id; //微信小程序model $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one(); $form = new SubmitMiniForm(); $form->store_id = $store_id; //判断是否需要上传模板 if ($store_mini->mini_up == 0) { return [ 'code' => 0, 'msg' => "需要上传模板", 'data' => [ 'status' => 0, 'progress' => 2, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } //已经上传模板 if ($store_mini->mini_up == -1) { return [ 'code' => 0, 'msg' => "需要提交审核", 'data' => [ 'status' => 1, 'progress' => 2, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } //已经提交审核 //获取审核状态 if ($store_mini->mini_up == 1 && !empty($store_mini->audit_id)) { $result = $form->getSubmitAuditStatus(); if ($result['code'] != 0) { return [ 'code' => 0, 'msg' => $result['msg'], 'data' => [ 'status' => 3, 'progress' => 2, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } } //审核中 if ($store_mini->mini_up == 1) { return [ 'code' => 0, 'msg' => "小程序审核中", 'data' => [ 'status' => 3, 'progress' => 2, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } //审核不通过 if ($store_mini->mini_up == 3) { return [ 'code' => 0, 'msg' => "小程序审核不通过 : " . $store_mini->mini_up_error, 'data' => [ 'status' => 1, 'progress' => 2, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } //审核延期 if ($store_mini->mini_up == 4) { return [ 'code' => 0, 'msg' => "审核延期", 'data' => [ 'status' => 3, 'reason' => "审核延期,请耐心等候", 'progress' => 2, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } //发布 if ($store_mini->mini_up == 2) { return [ 'code' => 0, 'msg' => "小程序需要发布", 'data' => [ 'status' => 2, 'progress' => 2, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } //上传完成 if ($store_mini->mini_up == 5) { return $this->getWechatPayStatus(); } } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //支付进件进度信息 public function getWechatPayStatus() { try { /** * 微信支付进件 * status = 0 没有申请微信进件信息 * status = 1 进件信息待审核 * status = 2 进件信息审核中 * status = 3 进件信息已经被驳回 * status = 4 进件已完成 */ //获取商城ID $store_id = $this->store_id; //申请店铺进件信息 $merchant_info = MerchantInfo::find()->where(['bind_store_id' => $store_id, 'is_delete' => 0])->asArray()->one(); //申请店铺信息 // $store_schedule = StoreSchedule::find()->where(['store_id' => $store_id])->asArray()->one(); // $store_schedule = json_decode($store_schedule['merchant_info'], true); $data = [ //超管信息 'contact_info' => json_decode($merchant_info['contact_info'], true) ?: [], //主体信息 'subject_info' => json_decode($merchant_info['subject_info'], true) ?: [], //经营信息 'business_info' => json_decode($merchant_info['business_info'], true) ?: [], //结算银行账户信息 'bank_account_info' => json_decode($merchant_info['bank_account_info'], true) ?: [], ]; //微信小程序model $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one(); if (empty($store_mini->appid)) { throw new \Exception("获取不到小程序信息"); } if (empty($merchant_info)) { return [ 'code' => 0, 'msg' => "没有申请微信进件信息", 'data' => [ 'status' => 0, 'merchant' => $data, 'progress' => 3, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ] ]; } if ($merchant_info['status'] == 0) { return [ 'code' => 0, 'msg' => "进件信息未提交", 'data' => [ 'status' => 1, 'merchant' => $data, 'progress' => 3, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ?? 0, ] ]; } if ($merchant_info['state'] == 'APPLYMENT_STATE_TO_BE_SIGNED' && !empty($merchant_info['sign_url'])) { return [ 'code' => 0, 'msg' => $merchant_info['sign_url'], 'data' => [ 'status' => 2, 'merchant' => $data, 'progress' => 3, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ?? 0, ] ]; } if ($merchant_info['status'] == 1) { return [ 'code' => 0, 'msg' => "进件信息审核中", 'data' => [ 'status' => 2, 'merchant' => $data, 'progress' => 3, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ?? 0, ] ]; } if ($merchant_info['status'] == 2) { return [ 'code' => 0, 'msg' => "进件信息已经被驳回 : " . $merchant_info['refuse_desc'], 'data' => [ 'status' => 3, 'merchant' => $data, 'reason' => $merchant_info['refuse_desc'], 'progress' => 3, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ?? 0, ] ]; } if ($merchant_info['status'] == 3) { return $this->bindQrcodeStatus(); } } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } //聚合码信息 public function bindQrcodeStatus() { try { //商城ID $store_id = $this->store_id; $qrcode_id = $this->qrcode_id; if (!empty($qrcode_id)) { $qrcode = AggregateQrcode::find()->where(['id' => $qrcode_id])->one(); } else { $qrcode = AggregateQrcode::find()->where(['store_id' => $store_id])->one(); } //微信小程序model $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one(); if (empty($store_mini->appid)) { throw new \Exception("获取不到小程序信息"); } if (empty($qrcode)) { return [ 'code' => 0, 'msg' => "需要绑定二维码信息", 'data' => [ 'status' => 0, 'progress' => 4, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id, 'qrcode_id' => $qrcode->id ] ]; } if ($qrcode->wx_status == 0) { return [ 'code' => 0, 'msg' => "没有绑定小程序", 'data' => [ 'status' => 1, 'progress' => 4, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id, 'qrcode_id' => $qrcode->id ] ]; } if ($qrcode->wx_status == 1) { $merchant_info = MerchantInfo::findOne(['bind_store_id' => $store_id, 'is_delete' => 0]); if (!empty($merchant_info->app_status)) { $app_status = $merchant_info->app_status; $app_status = str_replace('1,', '', $app_status); $merchant_info->app_status = $app_status; $merchant_info->save(); } return [ 'code' => 0, 'msg' => "绑定小程序完成", 'data' => [ 'status' => 2, 'progress' => 5, 'bind_store_id' => $store_id, 'mini_id' => $store_mini->id ?? 0, 'qrcode_id' => $qrcode->id ?? 0, ] ]; } throw new \Exception("数据错误"); } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } }