store_id;
//微信小程序model
$store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one();
$store = Store::find()->where(['id' => $store_id])->select('business_model')->one();
if ((int)$store->business_model !== 1) {
goto Register;
}
//申请店铺进件信息
// $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
]
];
}
}
}
}
Register:
//获取完善小程序状态
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);
if ((int)$store->business_model !== 1) {
goto Register;
}
//微信小程序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);
Register:
//获取小程序提交状态
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();
$store = Store::findOne($store_id);
if ((int)$store->business_model !== 1) {
goto Register;
}
$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,
'business_model' => $store->business_model
]
];
}
//已经上传模板
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,
'business_model' => $store->business_model
]
];
}
//已经提交审核
//获取审核状态
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,
'business_model' => $store->business_model
]
];
}
}
//审核中
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,
'business_model' => $store->business_model
]
];
}
//审核不通过
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,
'business_model' => $store->business_model
]
];
}
//审核延期
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,
'business_model' => $store->business_model
]
];
}
//发布
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,
'business_model' => $store->business_model
]
];
}
//上传完成
if ($store_mini->mini_up == 5) {
Register:
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 = Store::findOne($store_id);
//申请店铺信息
// $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) ?: [
'contact_name' => '',
'contact_id_number' => '',
'mobile_phone' => '',
'contact_email' => ''
],
//主体信息
'subject_info' => json_decode($merchant_info['subject_info'], true) ?: [
'subject_type' => 'SUBJECT_TYPE_ENTERPRISE',
'business_license_info' => [
'license_copy' => '',
'license_number' => '',
'merchant_name' => '',
'legal_person' => ''
],
'certificate_info' => [
'is_long' => '',
'cert_copy' => '',
'cert_type' => '',
'cert_number' => '',
'merchant_name' => '',
'company_address' => '',
'legal_person' => '',
'period_begin' => '',
'period_end' => '',
],
'organization_info' => [
'is_composite' => 1,
'organization_copy' => '',
'organization_code' => '',
'org_period_begin' => '',
'org_period_end' => '',
'is_long' => 0
],
'identity_info' => [
'is_long' => 0,
'id_doc_type' => 'IDENTIFICATION_TYPE_IDCARD',
'id_card_info' => [
'id_card_copy' => '',
'id_card_national' => '',
'id_card_name' => '',
'id_card_number' => '',
'card_period_begin' => '',
'card_period_end' => ''
],
'id_doc_info' => [
'id_doc_copy' => '',
'id_doc_name' => '',
'id_doc_number' => '',
'doc_period_begin' => '',
'doc_period_end' => ''
],
'owner' => true
]
],
//经营信息
'business_info' => json_decode($merchant_info['business_info'], true) ?: [
'merchant_shortname' => '',
'service_phone' => '',
'sales_info' => [
'sales_scenes_type' => [
''
],
'mini_program_info' => [
'mini_program_appid' => ''
]
]
],
//结算银行账户信息
'bank_account_info' => json_decode($merchant_info['bank_account_info'], true) ?: [
'bank_account_type' => '',
'account_name' => '',
'account_bank' => '',
'bank_address_code' => '',
'account_number' => '',
'code_list' => [
],
'address_list' => [
]
],
];
if ($store->business_model === 1) {
//微信小程序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 ?? 0,
'business_model' => $store->business_model
]
];
}
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,
'business_model' => $store->business_model
]
];
}
if ($merchant_info['state'] == 'APPLYMENT_STATE_TO_BE_SIGNED' && !empty($merchant_info['sign_url'])) {
$sign_url = json_decode($merchant_info['sign_url'], true);
return [
'code' => 0,
'msg' => $sign_url['applyment_state_msg'] . '
',
'data' => [
'status' => 2,
'merchant' => $data,
'progress' => 3,
'bind_store_id' => $store_id,
'mini_id' => $store_mini->id ?? 0,
'business_model' => $store->business_model
]
];
}
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,
'business_model' => $store->business_model
]
];
}
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,
'business_model' => $store->business_model
]
];
}
if ($merchant_info['status'] == 3) {
return $this->bindQrcodeStatus();
}
} catch (\Exception $e) {
return [
'code' => 1,
'msg' => $e->getMessage()
];
}
}
//支付进件进度信息 (单店铺)
public function getWechatPayStatusBySingle()
{
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 = Store::findOne($store_id);
//申请店铺信息
// $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) ?: [
'contact_name' => '',
'contact_id_number' => '',
'mobile_phone' => '',
'contact_email' => ''
],
//主体信息
'subject_info' => json_decode($merchant_info['subject_info'], true) ?: [
'subject_type' => 'SUBJECT_TYPE_ENTERPRISE',
'business_license_info' => [
'license_copy' => '',
'license_number' => '',
'merchant_name' => '',
'legal_person' => '',
'period_begin' => '',
'is_long' => 0
],
'certificate_info' => [
'is_long' => '',
'cert_copy' => '',
'cert_type' => '',
'cert_number' => '',
'merchant_name' => '',
'company_address' => '',
'legal_person' => '',
'period_begin' => '',
'period_end' => '',
],
'organization_info' => [
'is_composite' => 1,
'organization_copy' => '',
'organization_code' => '',
'org_period_begin' => '',
'org_period_end' => '',
'is_long' => 0
],
'identity_info' => [
'is_long' => 0,
'id_doc_type' => 'IDENTIFICATION_TYPE_IDCARD',
'id_card_info' => [
'id_card_copy' => '',
'id_card_national' => '',
'id_card_name' => '',
'id_card_number' => '',
'card_period_begin' => '',
'card_period_end' => ''
],
'id_doc_info' => [
'id_doc_copy' => '',
'id_doc_name' => '',
'id_doc_number' => '',
'doc_period_begin' => '',
'doc_period_end' => ''
],
'owner' => true
]
],
//经营信息
'business_info' => json_decode($merchant_info['business_info'], true) ?: [
'merchant_shortname' => '',
'service_phone' => '',
'sales_info' => [
'sales_scenes_type' => [
''
],
'mini_program_info' => [
'mini_program_appid' => ''
]
]
],
//结算银行账户信息
'bank_account_info' => json_decode($merchant_info['bank_account_info'], true) ?: [
'bank_account_type' => '',
'account_name' => '',
'account_bank' => '',
'bank_address_code' => '',
'account_number' => '',
'code_list' => [
],
'address_list' => [
]
],
];
if (empty($merchant_info)) {
return [
'code' => 0,
'msg' => "没有申请微信进件信息",
'data' => [
'status' => 0,
'merchant' => $data,
'progress' => 3,
'bind_store_id' => $store_id,
'mini_id' => 0,
'business_model' => $store->business_model
]
];
}
if ($merchant_info['status'] == 0) {
return [
'code' => 0,
'msg' => "进件信息未提交",
'data' => [
'status' => 1,
'merchant' => $data,
'progress' => 3,
'bind_store_id' => $store_id,
'mini_id' => 0,
'business_model' => $store->business_model
]
];
}
if ($merchant_info['state'] == 'APPLYMENT_STATE_TO_BE_SIGNED' && !empty($merchant_info['sign_url'])) {
$sign_url = json_decode($merchant_info['sign_url'], true);
return [
'code' => 0,
'msg' => $sign_url['applyment_state_msg'] . '
',
'data' => [
'status' => 2,
'merchant' => $data,
'progress' => 3,
'bind_store_id' => $store_id,
'mini_id' => 0,
'business_model' => $store->business_model
]
];
}
if ($merchant_info['status'] == 1) {
return [
'code' => 0,
'msg' => "进件信息审核中",
'data' => [
'status' => 2,
'merchant' => $data,
'progress' => 3,
'bind_store_id' => $store_id,
'mini_id' => 0,
'business_model' => $store->business_model
]
];
}
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' => 0,
'business_model' => $store->business_model
]
];
}
} catch (\Exception $e) {
return [
'code' => 1,
'msg' => $e->getMessage()
];
}
}
//聚合码信息
public function bindQrcodeStatus()
{
try {
//商城ID
$store_id = $this->store_id;
$store = Store::findOne($store_id);
$qrcode_id = $this->qrcode_id;
if ((int)$store->business_model !== 1) {
goto Register;
}
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,
'business_model' => $store->business_model
]
];
}
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,
'business_model' => $store->business_model
]
];
}
if ($qrcode->wx_status == 1) {
Register:
$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,
'business_model' => $store->business_model
]
];
}
throw new \Exception("数据错误");
} catch (\Exception $e) {
return [
'code' => 1,
'msg' => $e->getMessage()
];
}
}
}