209 lines
12 KiB
PHP
209 lines
12 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Server\Admin;
|
|
|
|
use App\Facades\CommonUtilsService;
|
|
use App\Facades\UploadService;
|
|
use App\Facades\WechatService;
|
|
use App\Http\Controllers\UploadController;
|
|
use App\Http\Resources\ApplymentResource;
|
|
use App\Http\Response\ResponseJson;
|
|
use App\Models\Server\MerchantApplyment;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Str;
|
|
|
|
class ApplymentController extends Controller
|
|
{
|
|
use ResponseJson;
|
|
|
|
/**
|
|
* 特约商户提交申请单
|
|
* @param Request $request
|
|
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Foundation\Application|\Illuminate\Http\JsonResponse|\Illuminate\View\View
|
|
*/
|
|
public function updateApplyment(Request $request)
|
|
{
|
|
//超级管理员信息
|
|
$contact_info = $request->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);
|
|
}
|
|
|
|
}
|