ProgressMiniForm.php 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\alliance\models\third\wechat;
  8. use app\events\OrderEvent;
  9. use app\models\AggregateQrcode;
  10. use app\models\MerchantInfo;
  11. use app\models\Store;
  12. use app\models\StoreMini;
  13. use app\models\StoreSchedule;
  14. class ProgressMiniForm extends BaseForm
  15. {
  16. //小程序Model
  17. public $store_mini;
  18. public $mini_id;
  19. public $qrcode_id;
  20. public function __construct($config = [])
  21. {
  22. parent::__construct($config);
  23. }
  24. public function rules()
  25. {
  26. return [
  27. [['store_id', 'mini_id'], 'integer'],
  28. ]; // TODO: Change the autogenerated stub
  29. }
  30. /**
  31. * 获取微信进度信息
  32. */
  33. public function getProgressStatus()
  34. {
  35. /**
  36. * status = 0 没有注册小程序
  37. * status = 1 小程序快速注册审核中
  38. * status = 2 小程序已经注册,但token信息失效
  39. */
  40. try {
  41. $store_id = $this->store_id;
  42. //微信小程序model
  43. $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one();
  44. $store = Store::find()->where(['id' => $store_id])->select('business_model')->one();
  45. if ((int)$store->business_model !== 1) {
  46. goto Register;
  47. }
  48. //申请店铺进件信息
  49. // $store_schedule = StoreSchedule::find()->where(['store_id' => $store_id])->asArray()->one();
  50. // //获取注册信息
  51. // $merchant_info = json_decode($store_schedule['merchant_info'], true);
  52. // //获取营业执照信息
  53. // $license_info = $merchant_info['subject_info']['business_license_info'];
  54. //注册小程序信息
  55. $data = [
  56. "name" => $store_mini->name ?: '',
  57. "code" => $store_mini->code ?: '',
  58. "code_type" => $store_mini->code_type ?: 1,
  59. "legal_persona_wechat" => $store_mini->legal_persona_wechat,
  60. "legal_persona_name" => $store_mini->legal_persona_name ?: '',
  61. "license_pic" => $store_mini->license_pic ?: '',
  62. ];
  63. if (empty($store_mini)) {
  64. return [
  65. 'code' => 0,
  66. 'msg' => "没有注册小程序",
  67. 'data' => [
  68. 'status' => 0,
  69. 'data' => $data,
  70. 'progress' => 0,
  71. 'bind_store_id' => $store_id
  72. ]
  73. ];
  74. }
  75. //判断是快速注册的小程序,且
  76. if (!empty($store_mini->code)) {
  77. $form = new RegisterMiniForm();
  78. $form->store_id = $store_id;
  79. //快速注册审核中
  80. if ($store_mini->status == -1) {
  81. //获取审核状态
  82. //调用查询快速注册状态,查询进度信息
  83. $result = $form->getFastRegisterStatus();
  84. if ($result['code'] !== 0) {
  85. return [
  86. 'code' => 0,
  87. 'msg' => $result['msg'],
  88. 'data' => [
  89. 'status' => 1,
  90. 'data' => $data,
  91. 'progress' => 0,
  92. 'bind_store_id' => $store_id,
  93. 'mini_id' => $store_mini->id
  94. ]
  95. ];
  96. }
  97. }
  98. //如果状态是已经注册,判断是否存在appid/token/refresh_token,不存在则调用接口拿取信息
  99. if ($store_mini->status == 1) {
  100. if (empty($store_mini->appid) || empty($store_mini->authorizer_access_token) || empty($store_mini->authorizer_refresh_token)) {
  101. $result = $form->getToken();
  102. if ($result['code'] !== 0) {
  103. return [
  104. 'code' => 0,
  105. 'msg' => $result['msg'],
  106. 'data' => [
  107. 'status' => 2,
  108. 'data' => $data,
  109. 'progress' => 0,
  110. 'bind_store_id' => $store_id,
  111. 'mini_id' => $store_mini->id
  112. ]
  113. ];
  114. }
  115. }
  116. }
  117. }
  118. Register:
  119. //获取完善小程序状态
  120. return $this->getPerfectStatus();
  121. } catch (\Exception $e) {
  122. return [
  123. 'code' => 1,
  124. 'msg' => $e->getMessage()
  125. ];
  126. }
  127. }
  128. //完善小程序
  129. public function getPerfectStatus()
  130. {
  131. try {
  132. $store_id = $this->store_id;
  133. $store = Store::findOne($store_id);
  134. if ((int)$store->business_model !== 1) {
  135. goto Register;
  136. }
  137. //微信小程序model
  138. $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one();
  139. /**
  140. * 进度:完善小程序
  141. * status = 0 完善小程序名称
  142. * status = 1 开始审核,等待微信返回结果(没有审核单ID)
  143. * status = 2 开始审核,查询申请单信息错误
  144. * status = 3 小程序名称审核失败
  145. * status = 4 需要上传头像
  146. * status = 5 分类参数错误
  147. * status = 6 需要上传类目信息
  148. * status = 7 需要添加简介信息
  149. **/
  150. $form = new PerfectMiniForm();
  151. $form->store_id = $store_id;
  152. if (empty($store_mini->mini_nickname)) {
  153. return [
  154. 'code' => 0,
  155. 'msg' => "需要完善小程序名称",
  156. 'data' => [
  157. 'status' => 0,
  158. 'progress' => 1,
  159. 'bind_store_id' => $store_id,
  160. 'data' => [
  161. 'name' => $store->name,
  162. ],
  163. 'mini_id' => $store_mini->id
  164. ]
  165. ];
  166. }
  167. //如果审核名称
  168. if ($store_mini->apply_name_status == 1) {
  169. if (empty($store_mini->nickname_audit_id)) {
  170. return [
  171. 'code' => 0,
  172. 'msg' => "参数错误,没有审核单ID,等待系统推送审核结果",
  173. 'data' => [
  174. 'status' => 1,
  175. 'progress' => 1,
  176. 'bind_store_id' => $store_id,
  177. 'data' => [
  178. 'name' => $store_mini->mini_nickname,
  179. ],
  180. 'mini_id' => $store_mini->id
  181. ]
  182. ];
  183. }
  184. //获取名称审核信息
  185. $result = $form->getMiniStatus();
  186. //请求错误信息返回
  187. if ($result['code'] !== 0) {
  188. return [
  189. 'code' => 0,
  190. 'msg' => $result['msg'],
  191. 'data' => [
  192. 'status' => 1,
  193. 'progress' => 1,
  194. 'bind_store_id' => $store_id,
  195. 'data' => [
  196. 'name' => $store_mini->mini_nickname,
  197. ],
  198. 'mini_id' => $store_mini->id
  199. ]
  200. ];
  201. }
  202. if ($result['status'] == 1) {
  203. return [
  204. 'code' => 0,
  205. 'msg' => "小程序信息审核中",
  206. 'data' => [
  207. 'status' => 2,
  208. 'progress' => 1,
  209. 'bind_store_id' => $store_id,
  210. 'data' => [
  211. 'name' => $store_mini->mini_nickname,
  212. ],
  213. 'mini_id' => $store_mini->id
  214. ]
  215. ];
  216. }
  217. }
  218. //名称审核失败
  219. if ($store_mini->apply_name_status == 2) {
  220. return [
  221. 'code' => 0,
  222. 'msg' => "名称审核失败:" . $store_mini->apply_name_error,
  223. 'data' => [
  224. 'status' => 3,
  225. 'progress' => 1,
  226. 'bind_store_id' => $store_id,
  227. 'data' => [
  228. 'name' => $store_mini->mini_nickname,
  229. ],
  230. 'mini_id' => $store_mini->id
  231. ]
  232. ];
  233. }
  234. //名称审核成功
  235. if (empty($store_mini->mini_url)) {
  236. return [
  237. 'code' => 0,
  238. 'msg' => "需要上传头像",
  239. 'data' => [
  240. 'status' => 4,
  241. 'progress' => 1,
  242. 'bind_store_id' => $store_id,
  243. 'data' => [
  244. 'mini_url' => $store->logo
  245. ],
  246. 'mini_id' => $store_mini->id
  247. ]
  248. ];
  249. }
  250. //判断简介是否为空
  251. if (empty($store_mini->signature)) {
  252. return [
  253. 'code' => 0,
  254. 'msg' => "需要添加简介信息",
  255. 'data' => [
  256. 'status' => 7,
  257. 'progress' => 1,
  258. 'bind_store_id' => $store_id,
  259. 'mini_id' => $store_mini->id,
  260. 'data' => [
  261. ],
  262. ]
  263. ];
  264. }
  265. //配置隐私
  266. $result = $form->setPrivacyForm();
  267. //输出信息
  268. $file_name = \Yii::$app->runtimePath . '/logs/app_wechat.log';
  269. file_put_contents($file_name, "\r\n" . '[配置隐私][' . date('Y-m-d H:i:s') . $store_mini->id . ']' . json_encode($result), FILE_APPEND);
  270. //配置业务域名
  271. $result = $form->setDomainName();
  272. //输出信息
  273. file_put_contents($file_name, "\r\n" . '[配置业务域名][' . date('Y-m-d H:i:s') . ']' . json_encode($result), FILE_APPEND);
  274. //配置服务器域名
  275. $result = $form->setWebviewDomain();
  276. //输出信息
  277. file_put_contents($file_name, "\r\n" . '[配置服务器域名][' . date('Y-m-d H:i:s') . ']' . json_encode($result), FILE_APPEND);
  278. Register:
  279. //获取小程序提交状态
  280. return $this->getSubmitStatus();
  281. } catch (\Exception $e) {
  282. return [
  283. 'code' => 1,
  284. 'msg' => $e->getMessage()
  285. ];
  286. }
  287. }
  288. public function getSubmitStatus()
  289. {
  290. try {
  291. /**
  292. * 进度:提交上传小程序
  293. * status = 0 需要上传模板
  294. * status = 1 已经更新模板
  295. * status = 2 已经提交审核,等待微信返回结果
  296. * status = 3 获取审核状态时错误
  297. * status = 4 审核中
  298. * status = 5 审核不通过
  299. * status = 6 审核延期
  300. * status = 7 小程序发布完成
  301. */
  302. $store_id = $this->store_id;
  303. //微信小程序model
  304. $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one();
  305. $form = new SubmitMiniForm();
  306. $store = Store::findOne($store_id);
  307. if ((int)$store->business_model !== 1) {
  308. goto Register;
  309. }
  310. $form->store_id = $store_id;
  311. //判断是否需要上传模板
  312. if ($store_mini->mini_up == 0) {
  313. return [
  314. 'code' => 0,
  315. 'msg' => "需要上传模板",
  316. 'data' => [
  317. 'status' => 0,
  318. 'progress' => 2,
  319. 'bind_store_id' => $store_id,
  320. 'mini_id' => $store_mini->id,
  321. 'business_model' => $store->business_model
  322. ]
  323. ];
  324. }
  325. //已经上传模板
  326. if ($store_mini->mini_up == -1) {
  327. return [
  328. 'code' => 0,
  329. 'msg' => "需要提交审核",
  330. 'data' => [
  331. 'status' => 1,
  332. 'progress' => 2,
  333. 'bind_store_id' => $store_id,
  334. 'mini_id' => $store_mini->id,
  335. 'business_model' => $store->business_model
  336. ]
  337. ];
  338. }
  339. //已经提交审核
  340. //获取审核状态
  341. if ($store_mini->mini_up == 1 && !empty($store_mini->audit_id)) {
  342. $result = $form->getSubmitAuditStatus();
  343. if ($result['code'] != 0) {
  344. return [
  345. 'code' => 0,
  346. 'msg' => $result['msg'],
  347. 'data' => [
  348. 'status' => 3,
  349. 'progress' => 2,
  350. 'bind_store_id' => $store_id,
  351. 'mini_id' => $store_mini->id,
  352. 'business_model' => $store->business_model
  353. ]
  354. ];
  355. }
  356. }
  357. //审核中
  358. if ($store_mini->mini_up == 1) {
  359. return [
  360. 'code' => 0,
  361. 'msg' => "小程序审核中",
  362. 'data' => [
  363. 'status' => 3,
  364. 'progress' => 2,
  365. 'bind_store_id' => $store_id,
  366. 'mini_id' => $store_mini->id,
  367. 'business_model' => $store->business_model
  368. ]
  369. ];
  370. }
  371. //审核不通过
  372. if ($store_mini->mini_up == 3) {
  373. return [
  374. 'code' => 0,
  375. 'msg' => "小程序审核不通过 : " . $store_mini->mini_up_error,
  376. 'data' => [
  377. 'status' => 1,
  378. 'progress' => 2,
  379. 'bind_store_id' => $store_id,
  380. 'mini_id' => $store_mini->id,
  381. 'business_model' => $store->business_model
  382. ]
  383. ];
  384. }
  385. //审核延期
  386. if ($store_mini->mini_up == 4) {
  387. return [
  388. 'code' => 0,
  389. 'msg' => "审核延期",
  390. 'data' => [
  391. 'status' => 3,
  392. 'reason' => "审核延期,请耐心等候",
  393. 'progress' => 2,
  394. 'bind_store_id' => $store_id,
  395. 'mini_id' => $store_mini->id,
  396. 'business_model' => $store->business_model
  397. ]
  398. ];
  399. }
  400. //发布
  401. if ($store_mini->mini_up == 2) {
  402. return [
  403. 'code' => 0,
  404. 'msg' => "小程序需要发布",
  405. 'data' => [
  406. 'status' => 2,
  407. 'progress' => 2,
  408. 'bind_store_id' => $store_id,
  409. 'mini_id' => $store_mini->id,
  410. 'business_model' => $store->business_model
  411. ]
  412. ];
  413. }
  414. //上传完成
  415. if ($store_mini->mini_up == 5) {
  416. Register:
  417. return $this->getWechatPayStatus();
  418. }
  419. } catch (\Exception $e) {
  420. return [
  421. 'code' => 1,
  422. 'msg' => $e->getMessage()
  423. ];
  424. }
  425. }
  426. //支付进件进度信息
  427. public function getWechatPayStatus()
  428. {
  429. try {
  430. /**
  431. * 微信支付进件
  432. * status = 0 没有申请微信进件信息
  433. * status = 1 进件信息待审核
  434. * status = 2 进件信息审核中
  435. * status = 3 进件信息已经被驳回
  436. * status = 4 进件已完成
  437. */
  438. //获取商城ID
  439. $store_id = $this->store_id;
  440. //申请店铺进件信息
  441. $merchant_info = MerchantInfo::find()->where(['bind_store_id' => $store_id, 'is_delete' => 0])->asArray()->one();
  442. $store = Store::findOne($store_id);
  443. //申请店铺信息
  444. // $store_schedule = StoreSchedule::find()->where(['store_id' => $store_id])->asArray()->one();
  445. // $store_schedule = json_decode($store_schedule['merchant_info'], true);
  446. $data = [
  447. //超管信息
  448. 'contact_info' => json_decode($merchant_info['contact_info'], true) ?: [
  449. 'contact_name' => '',
  450. 'contact_id_number' => '',
  451. 'mobile_phone' => '',
  452. 'contact_email' => ''
  453. ],
  454. //主体信息
  455. 'subject_info' => json_decode($merchant_info['subject_info'], true) ?: [
  456. 'subject_type' => 'SUBJECT_TYPE_ENTERPRISE',
  457. 'business_license_info' => [
  458. 'license_copy' => '',
  459. 'license_number' => '',
  460. 'merchant_name' => '',
  461. 'legal_person' => ''
  462. ],
  463. 'certificate_info' => [
  464. 'is_long' => '',
  465. 'cert_copy' => '',
  466. 'cert_type' => '',
  467. 'cert_number' => '',
  468. 'merchant_name' => '',
  469. 'company_address' => '',
  470. 'legal_person' => '',
  471. 'period_begin' => '',
  472. 'period_end' => '',
  473. ],
  474. 'organization_info' => [
  475. 'is_composite' => 1,
  476. 'organization_copy' => '',
  477. 'organization_code' => '',
  478. 'org_period_begin' => '',
  479. 'org_period_end' => '',
  480. 'is_long' => 0
  481. ],
  482. 'identity_info' => [
  483. 'is_long' => 0,
  484. 'id_doc_type' => 'IDENTIFICATION_TYPE_IDCARD',
  485. 'id_card_info' => [
  486. 'id_card_copy' => '',
  487. 'id_card_national' => '',
  488. 'id_card_name' => '',
  489. 'id_card_number' => '',
  490. 'card_period_begin' => '',
  491. 'card_period_end' => ''
  492. ],
  493. 'id_doc_info' => [
  494. 'id_doc_copy' => '',
  495. 'id_doc_name' => '',
  496. 'id_doc_number' => '',
  497. 'doc_period_begin' => '',
  498. 'doc_period_end' => ''
  499. ],
  500. 'owner' => true
  501. ]
  502. ],
  503. //经营信息
  504. 'business_info' => json_decode($merchant_info['business_info'], true) ?: [
  505. 'merchant_shortname' => '',
  506. 'service_phone' => '',
  507. 'sales_info' => [
  508. 'sales_scenes_type' => [
  509. ''
  510. ],
  511. 'mini_program_info' => [
  512. 'mini_program_appid' => ''
  513. ]
  514. ]
  515. ],
  516. //结算银行账户信息
  517. 'bank_account_info' => json_decode($merchant_info['bank_account_info'], true) ?: [
  518. 'bank_account_type' => '',
  519. 'account_name' => '',
  520. 'account_bank' => '',
  521. 'bank_address_code' => '',
  522. 'account_number' => '',
  523. 'code_list' => [
  524. ],
  525. 'address_list' => [
  526. ]
  527. ],
  528. ];
  529. if ($store->business_model === 1) {
  530. //微信小程序model
  531. $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one();
  532. if (empty($store_mini->appid)) {
  533. throw new \Exception("获取不到小程序信息");
  534. }
  535. }
  536. if (empty($merchant_info)) {
  537. return [
  538. 'code' => 0,
  539. 'msg' => "没有申请微信进件信息",
  540. 'data' => [
  541. 'status' => 0,
  542. 'merchant' => $data,
  543. 'progress' => 3,
  544. 'bind_store_id' => $store_id,
  545. 'mini_id' => $store_mini->id ?? 0,
  546. 'business_model' => $store->business_model
  547. ]
  548. ];
  549. }
  550. if ($merchant_info['status'] == 0) {
  551. return [
  552. 'code' => 0,
  553. 'msg' => "进件信息未提交",
  554. 'data' => [
  555. 'status' => 1,
  556. 'merchant' => $data,
  557. 'progress' => 3,
  558. 'bind_store_id' => $store_id,
  559. 'mini_id' => $store_mini->id ?? 0,
  560. 'business_model' => $store->business_model
  561. ]
  562. ];
  563. }
  564. if ($merchant_info['state'] == 'APPLYMENT_STATE_TO_BE_SIGNED' && !empty($merchant_info['sign_url'])) {
  565. $sign_url = json_decode($merchant_info['sign_url'], true);
  566. return [
  567. 'code' => 0,
  568. 'msg' => $sign_url['applyment_state_msg'] . '<br/> <img width="50" height="50" src="' .$sign_url['sign_url']. '"/>',
  569. 'data' => [
  570. 'status' => 2,
  571. 'merchant' => $data,
  572. 'progress' => 3,
  573. 'bind_store_id' => $store_id,
  574. 'mini_id' => $store_mini->id ?? 0,
  575. 'business_model' => $store->business_model
  576. ]
  577. ];
  578. }
  579. if ($merchant_info['status'] == 1) {
  580. return [
  581. 'code' => 0,
  582. 'msg' => "进件信息审核中",
  583. 'data' => [
  584. 'status' => 2,
  585. 'merchant' => $data,
  586. 'progress' => 3,
  587. 'bind_store_id' => $store_id,
  588. 'mini_id' => $store_mini->id ?? 0,
  589. 'business_model' => $store->business_model
  590. ]
  591. ];
  592. }
  593. if ($merchant_info['status'] == 2) {
  594. return [
  595. 'code' => 0,
  596. 'msg' => "进件信息已经被驳回 : " . $merchant_info['refuse_desc'],
  597. 'data' => [
  598. 'status' => 3,
  599. 'merchant' => $data,
  600. 'reason' => $merchant_info['refuse_desc'],
  601. 'progress' => 3,
  602. 'bind_store_id' => $store_id,
  603. 'mini_id' => $store_mini->id ?? 0,
  604. 'business_model' => $store->business_model
  605. ]
  606. ];
  607. }
  608. if ($merchant_info['status'] == 3) {
  609. return $this->bindQrcodeStatus();
  610. }
  611. } catch (\Exception $e) {
  612. return [
  613. 'code' => 1,
  614. 'msg' => $e->getMessage()
  615. ];
  616. }
  617. }
  618. //支付进件进度信息 (单店铺)
  619. public function getWechatPayStatusBySingle()
  620. {
  621. try {
  622. /**
  623. * 微信支付进件
  624. * status = 0 没有申请微信进件信息
  625. * status = 1 进件信息待审核
  626. * status = 2 进件信息审核中
  627. * status = 3 进件信息已经被驳回
  628. * status = 4 进件已完成
  629. */
  630. //获取商城ID
  631. $store_id = $this->store_id;
  632. //申请店铺进件信息
  633. $merchant_info = MerchantInfo::find()->where(['bind_store_id' => $store_id, 'is_delete' => 0])->asArray()->one();
  634. $store = Store::findOne($store_id);
  635. //申请店铺信息
  636. // $store_schedule = StoreSchedule::find()->where(['store_id' => $store_id])->asArray()->one();
  637. // $store_schedule = json_decode($store_schedule['merchant_info'], true);
  638. $data = [
  639. //超管信息
  640. 'contact_info' => json_decode($merchant_info['contact_info'], true) ?: [
  641. 'contact_name' => '',
  642. 'contact_id_number' => '',
  643. 'mobile_phone' => '',
  644. 'contact_email' => ''
  645. ],
  646. //主体信息
  647. 'subject_info' => json_decode($merchant_info['subject_info'], true) ?: [
  648. 'subject_type' => 'SUBJECT_TYPE_ENTERPRISE',
  649. 'business_license_info' => [
  650. 'license_copy' => '',
  651. 'license_number' => '',
  652. 'merchant_name' => '',
  653. 'legal_person' => '',
  654. 'period_begin' => '',
  655. 'is_long' => 0
  656. ],
  657. 'certificate_info' => [
  658. 'is_long' => '',
  659. 'cert_copy' => '',
  660. 'cert_type' => '',
  661. 'cert_number' => '',
  662. 'merchant_name' => '',
  663. 'company_address' => '',
  664. 'legal_person' => '',
  665. 'period_begin' => '',
  666. 'period_end' => '',
  667. ],
  668. 'organization_info' => [
  669. 'is_composite' => 1,
  670. 'organization_copy' => '',
  671. 'organization_code' => '',
  672. 'org_period_begin' => '',
  673. 'org_period_end' => '',
  674. 'is_long' => 0
  675. ],
  676. 'identity_info' => [
  677. 'is_long' => 0,
  678. 'id_doc_type' => 'IDENTIFICATION_TYPE_IDCARD',
  679. 'id_card_info' => [
  680. 'id_card_copy' => '',
  681. 'id_card_national' => '',
  682. 'id_card_name' => '',
  683. 'id_card_number' => '',
  684. 'card_period_begin' => '',
  685. 'card_period_end' => ''
  686. ],
  687. 'id_doc_info' => [
  688. 'id_doc_copy' => '',
  689. 'id_doc_name' => '',
  690. 'id_doc_number' => '',
  691. 'doc_period_begin' => '',
  692. 'doc_period_end' => ''
  693. ],
  694. 'owner' => true
  695. ]
  696. ],
  697. //经营信息
  698. 'business_info' => json_decode($merchant_info['business_info'], true) ?: [
  699. 'merchant_shortname' => '',
  700. 'service_phone' => '',
  701. 'sales_info' => [
  702. 'sales_scenes_type' => [
  703. ''
  704. ],
  705. 'mini_program_info' => [
  706. 'mini_program_appid' => ''
  707. ]
  708. ]
  709. ],
  710. //结算银行账户信息
  711. 'bank_account_info' => json_decode($merchant_info['bank_account_info'], true) ?: [
  712. 'bank_account_type' => '',
  713. 'account_name' => '',
  714. 'account_bank' => '',
  715. 'bank_address_code' => '',
  716. 'account_number' => '',
  717. 'code_list' => [
  718. ],
  719. 'address_list' => [
  720. ]
  721. ],
  722. ];
  723. if (empty($merchant_info)) {
  724. return [
  725. 'code' => 0,
  726. 'msg' => "没有申请微信进件信息",
  727. 'data' => [
  728. 'status' => 0,
  729. 'merchant' => $data,
  730. 'progress' => 3,
  731. 'bind_store_id' => $store_id,
  732. 'mini_id' => 0,
  733. 'business_model' => $store->business_model
  734. ]
  735. ];
  736. }
  737. if ($merchant_info['status'] == 0) {
  738. return [
  739. 'code' => 0,
  740. 'msg' => "进件信息未提交",
  741. 'data' => [
  742. 'status' => 1,
  743. 'merchant' => $data,
  744. 'progress' => 3,
  745. 'bind_store_id' => $store_id,
  746. 'mini_id' => 0,
  747. 'business_model' => $store->business_model
  748. ]
  749. ];
  750. }
  751. if ($merchant_info['state'] == 'APPLYMENT_STATE_TO_BE_SIGNED' && !empty($merchant_info['sign_url'])) {
  752. $sign_url = json_decode($merchant_info['sign_url'], true);
  753. return [
  754. 'code' => 0,
  755. 'msg' => $sign_url['applyment_state_msg'] . '<br/> <img width="50" height="50" src="' .$sign_url['sign_url']. '"/>',
  756. 'data' => [
  757. 'status' => 2,
  758. 'merchant' => $data,
  759. 'progress' => 3,
  760. 'bind_store_id' => $store_id,
  761. 'mini_id' => 0,
  762. 'business_model' => $store->business_model
  763. ]
  764. ];
  765. }
  766. if ($merchant_info['status'] == 1) {
  767. return [
  768. 'code' => 0,
  769. 'msg' => "进件信息审核中",
  770. 'data' => [
  771. 'status' => 2,
  772. 'merchant' => $data,
  773. 'progress' => 3,
  774. 'bind_store_id' => $store_id,
  775. 'mini_id' => 0,
  776. 'business_model' => $store->business_model
  777. ]
  778. ];
  779. }
  780. if ($merchant_info['status'] == 2) {
  781. return [
  782. 'code' => 0,
  783. 'msg' => "进件信息已经被驳回 : " . $merchant_info['refuse_desc'],
  784. 'data' => [
  785. 'status' => 3,
  786. 'merchant' => $data,
  787. 'reason' => $merchant_info['refuse_desc'],
  788. 'progress' => 3,
  789. 'bind_store_id' => $store_id,
  790. 'mini_id' => 0,
  791. 'business_model' => $store->business_model
  792. ]
  793. ];
  794. }
  795. } catch (\Exception $e) {
  796. return [
  797. 'code' => 1,
  798. 'msg' => $e->getMessage()
  799. ];
  800. }
  801. }
  802. //聚合码信息
  803. public function bindQrcodeStatus()
  804. {
  805. try {
  806. //商城ID
  807. $store_id = $this->store_id;
  808. $store = Store::findOne($store_id);
  809. $qrcode_id = $this->qrcode_id;
  810. if ((int)$store->business_model !== 1) {
  811. goto Register;
  812. }
  813. if (!empty($qrcode_id)) {
  814. $qrcode = AggregateQrcode::find()->where(['id' => $qrcode_id])->one();
  815. } else {
  816. $qrcode = AggregateQrcode::find()->where(['store_id' => $store_id])->one();
  817. }
  818. //微信小程序model
  819. $store_mini = StoreMini::find()->where(['store_id' => $store_id])->orderBy('id desc')->one();
  820. if (empty($store_mini->appid)) {
  821. throw new \Exception("获取不到小程序信息");
  822. }
  823. if (empty($qrcode)) {
  824. return [
  825. 'code' => 0,
  826. 'msg' => "需要绑定二维码信息",
  827. 'data' => [
  828. 'status' => 0,
  829. 'progress' => 4,
  830. 'bind_store_id' => $store_id,
  831. 'mini_id' => $store_mini->id,
  832. 'qrcode_id' => $qrcode->id,
  833. 'business_model' => $store->business_model
  834. ]
  835. ];
  836. }
  837. if ($qrcode->wx_status == 0) {
  838. return [
  839. 'code' => 0,
  840. 'msg' => "没有绑定小程序",
  841. 'data' => [
  842. 'status' => 1,
  843. 'progress' => 4,
  844. 'bind_store_id' => $store_id,
  845. 'mini_id' => $store_mini->id,
  846. 'qrcode_id' => $qrcode->id,
  847. 'business_model' => $store->business_model
  848. ]
  849. ];
  850. }
  851. if ($qrcode->wx_status == 1) {
  852. Register:
  853. $merchant_info = MerchantInfo::findOne(['bind_store_id' => $store_id, 'is_delete' => 0]);
  854. if (!empty($merchant_info->app_status)) {
  855. $app_status = $merchant_info->app_status;
  856. $app_status = str_replace('1,', '', $app_status);
  857. $merchant_info->app_status = $app_status;
  858. $merchant_info->save();
  859. }
  860. return [
  861. 'code' => 0,
  862. 'msg' => "绑定小程序完成",
  863. 'data' => [
  864. 'status' => 2,
  865. 'progress' => 5,
  866. 'bind_store_id' => $store_id,
  867. 'mini_id' => $store_mini->id ?? 0,
  868. 'qrcode_id' => $qrcode->id ?? 0,
  869. 'business_model' => $store->business_model
  870. ]
  871. ];
  872. }
  873. throw new \Exception("数据错误");
  874. } catch (\Exception $e) {
  875. return [
  876. 'code' => 1,
  877. 'msg' => $e->getMessage()
  878. ];
  879. }
  880. }
  881. }