input('contact_info'); $contact_info = json_decode($contact_info,1); $err_msg = $this->checkContactInfo($contact_info); if ($err_msg) return $this->failure($err_msg); //主体资料 $subject_info = $request->input('subject_info'); $subject_info = json_decode($subject_info,1); $err_msg = $this->checkSubjectInfo($subject_info); if ($err_msg) return $this->failure($err_msg); $business_info = $request->input('business_info'); $business_info = json_decode($business_info,1); $err_msg = $this->checkBusinessInfo($business_info); if ($err_msg) return $this->failure($err_msg); $settlement_info = $request->input('settlement_info'); $settlement_info = json_decode($settlement_info,1); $err_msg = $this->checkSettlementInfo($settlement_info); if ($err_msg) return $this->failure($err_msg); $bank_account_info = $request->input('bank_account_info'); $bank_account_info = json_decode($bank_account_info,1); $err_msg = $this->checkbankAccountInfo($bank_account_info); if ($err_msg) return $this->failure($err_msg); $addition_info = $request->input('addition_info'); //超级管理员信息 $merchant_id = $request->account_id; //服务商商户号 $business_code = '1581887811_'.CommonUtilsService::getTradeNo(); DB::beginTransaction(); //管理员姓名加密 $contact_info['contact_name'] = WechatService::getEncrypt($contact_info['contact_name']); //管理员身份证号加密 if (isset($contact_info['contact_id_number']) && $contact_info['contact_id_number']) { $contact_info['contact_id_number'] = WechatService::getEncrypt($contact_info['contact_id_number']); } //联系电话加密 $contact_info['mobile_phone'] = WechatService::getEncrypt($contact_info['mobile_phone']); //联系邮箱加密 $contact_info['contact_email'] = WechatService::getEncrypt($contact_info['contact_email']); //开户名称加密 $bank_account_info['account_name'] = WechatService::getEncrypt($bank_account_info['account_name']); //银行账号加密 $bank_account_info['account_number'] = WechatService::getEncrypt($bank_account_info['account_number']); //保存信息到数据库 $applyment = MerchantApplyment::updateOrCreate(['m_id' => $merchant_id], [ 'business_code' => $business_code, 'contact_info' => json_encode($contact_info), 'subject_info' => json_encode($subject_info), 'business_info' => json_encode($business_info), 'settlement_info' => json_encode($settlement_info), 'bank_account_info' => json_encode($bank_account_info), 'addition_info' => json_encode($addition_info), ]); //提交微信申请 $applyment_id = WechatService::applymentSub($business_code, $contact_info, $subject_info, $business_info, $settlement_info, $bank_account_info, $addition_info); $applyment->update(['applyment_id' => $applyment_id]); DB::commit(); return $this->success('ok'); } /** * 特约商户清单 * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View */ public function applyment(Request $request) { $merchant_id = $request->account_id; $applyment = MerchantApplyment::firstOrCreate(['m_id' => $merchant_id]); $applyment = ApplymentResource::make($applyment); return $this->success('ok', $applyment); } public function applymentStatus(Request $request) { $merchant_id = $request->account_id; $applyment = MerchantApplyment::where('m_id', $merchant_id)->first(); if (empty($applyment->business_code)) return $this->failure("还未发起申请"); $res = WechatService::applymentWithCode($applyment->business_code); return $this->success('ok'); } public function checkContactInfo($contact_info) { if (!is_array($contact_info) || count($contact_info) == 0) return '缺少超级管理员信息'; if (!isset($contact_info['contact_type']) || !in_array($contact_info['contact_type'], ["LEGAL", "SUPER"])) return '缺少超级管理员类型信息'; if (!isset($contact_info['contact_name'])) return '缺少超级管理员姓名信息'; if ($contact_info['contact_type'] == 'SUPER') { if (!isset($contact_info['contact_id_doc_type'])) return '缺少超级会员证件类型'; if (!in_array($contact_info['contact_id_doc_type'], ['IDENTIFICATION_TYPE_IDCARD', 'IDENTIFICATION_TYPE_OVERSEA_PASSPORT', 'IDENTIFICATION_TYPE_HONGKONG_PASSPORT', 'IDENTIFICATION_TYPE_MACAO_PASSPORT', 'IDENTIFICATION_TYPE_TAIWAN_PASSPORT', 'IDENTIFICATION_TYPE_FOREIGN_RESIDENT', 'IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT','IDENTIFICATION_TYPE_TAIWAN_RESIDENT'])) return '超级管理员证件类型错误'; if (!isset($contact_info['contact_id_number'])) return [false, '缺少超级管理员身份证号码']; if (!isset($contact_info['contact_id_doc_copy'])) return '缺少超级管理员证件正面照片'; if (!isset($contact_info['contact_id_doc_copy_back'])) return '缺少超级管理员证件反面照片'; if (!isset($contact_info['contact_period_begin'])) return '缺少超级管理员证件有效期开始时间'; if (!isset($contact_info['contact_period_end'])) return '缺少超级管理员证件有效期结束时间'; if (!isset($contact_info['business_authorization_letter'])) return '缺少业务办理授权函'; if (!isset($contact_info['mobile_phone'])) return '缺少联系手机'; if (!isset($contact_info['contact_email'])) return '缺少联系邮箱'; } return ''; } public function checkSubjectInfo($subject_info) { if (!is_array($subject_info) || count($subject_info) == 0) return '缺少主体资料'; if (!isset($subject_info['subject_type'])) return '缺少主体类型'; if (!in_array($subject_info['subject_type'], ['SUBJECT_TYPE_INDIVIDUAL', 'SUBJECT_TYPE_ENTERPRISE', 'SUBJECT_TYPE_GOVERNMENT', 'SUBJECT_TYPE_INSTITUTIONS', 'SUBJECT_TYPE_OTHERS'])) return '主体类型错误'; if ($subject_info['subject_type'] == "SUBJECT_TYPE_INDIVIDUAL" || $subject_info['subject_type'] == "SUBJECT_TYPE_ENTERPRISE") { if(!isset($subject_info['business_license_info']) || empty($subject_info['business_license_info'])) return "缺少营业执照"; }else { if(!isset($subject_info['certificate_info']) || empty($subject_info['certificate_info'])) return "缺少登记证书"; } if (isset($subject_info["finance_institution"]) && $subject_info["finance_institution"]) { if (!isset($subject_info["finance_institution_info"]) || empty($subject_info["finance_institution_info"])) return "缺少金融机构许可证信息"; } if (!isset($subject_info["identity_info"]) || empty($subject_info["identity_info"])) return "缺少经营者/法人身份证件"; return ''; } public function checkBusinessInfo($business_info) { if (!is_array($business_info) || count($business_info) == 0) return '缺少经营资料'; if (!isset($business_info['merchant_shortname']) || empty($business_info['merchant_shortname'])) return '缺少商户简称'; if (!isset($business_info['service_phone']) || empty($business_info['service_phone'])) return '缺少商户简称'; if (!isset($business_info['sales_info']) || empty($business_info['sales_info'])) return '缺少经营场景'; if (!isset($business_info['sales_info']['sales_scenes_type']) || empty($business_info['sales_info']['sales_scenes_type'])) return '缺少经营场景类型'; if ($business_info['sales_info']['sales_scenes_type'] == "SALES_SCENES_STORE") { if (!isset($business_info['sales_info']['biz_store_info']['biz_store_name']) || empty($business_info['sales_info']['biz_store_info']['biz_store_name'])) return '缺少线下场所名称'; if (!isset($business_info['sales_info']['biz_store_info']['biz_address_code']) || empty($business_info['sales_info']['biz_store_info']['biz_address_code'])) return '缺少线下场所省市编码'; if (!isset($business_info['sales_info']['biz_store_info']['biz_store_address']) || empty($business_info['sales_info']['biz_store_info']['biz_store_address'])) return '缺少线下场所地址'; if (!isset($business_info['sales_info']['biz_store_info']['store_entrance_pic']) || empty($business_info['sales_info']['biz_store_info']['store_entrance_pic'])) return '缺少线下场所门头照片'; if (!isset($business_info['sales_info']['biz_store_info']['indoor_pic']) || empty($business_info['sales_info']['biz_store_info']['indoor_pic'])) return '缺少线下场所内部照片'; }elseif ($business_info['sales_info']['sales_scenes_type'] == "SALES_SCENES_MP") { if (!isset($business_info['sales_info']['mp_info']['mp_appid']) && !isset($business_info['sales_info']['mp_info']['mp_sub_appid'])) return '缺少APPID'; if (!isset($business_info['sales_info']['mp_info']['mp_pics']) || empty($business_info['sales_info']['mp_info']['mp_pics'])) return '缺少公众号页面截图'; } return ''; } public function checkSettlementInfo($settlement_info) { if (!is_array($settlement_info) || count($settlement_info) == 0) return '缺少结算规则'; if (!isset($settlement_info['settlement_id']) || empty($settlement_info['settlement_id'])) return "缺少入驻结算规则"; if (!isset($settlement_info['qualification_type']) || empty($settlement_info['qualification_type'])) return "缺少所属行业"; } public function checkbankAccountInfo($bank_account_info) { if (!is_array($bank_account_info) || count($bank_account_info) == 0) return '缺少结算银行账户'; if (!isset($bank_account_info['bank_account_type']) || empty($bank_account_info['bank_account_type'])) return "缺少账户类型"; if (!isset($bank_account_info['account_name']) || empty($bank_account_info['account_name'])) return "缺少开户名称"; if (!isset($bank_account_info['account_bank']) || empty($bank_account_info['account_bank'])) return "缺少开户银行"; if (!isset($bank_account_info['bank_address_code']) || empty($bank_account_info['bank_address_code'])) return "缺少银行省市编码"; if ((!isset($bank_account_info['bank_branch_id']) || empty($bank_account_info['bank_branch_id'])) && (!isset($bank_account_info['bank_name']) || empty($bank_account_info['bank_name']))) return "缺少开户银行联行号或开户银行全称(含支行)"; if (!isset($bank_account_info['account_number']) || empty($bank_account_info['account_number'])) return "缺少银行账号"; return ""; } /** * 图片资源上传 * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View */ public function mediaUpload(Request $request) { //获取文件信息 $file = $request->file(); //上传到本地 $path = UploadService::storageFile($file['image']); //文件上传到微信 $res = WechatService::mediaUpload($path); //删除本地文件 unlink($path); return $this->success('ok', $res); } }