$data['user_id']]); } /** * 关联用户表 */ public function user() { return $this->belongsTo('app\\common\\model\\User'); } /** * 认证类型 */ public function getApplyModeAttr($value) { $status = [10 => '小程序申请', 20 => '商户入驻', 30 => '支付认证', 40 => '代理认证', 50 => '实名认证']; return ['text' => $status[$value], 'value' => $value]; } /** * 认证类型 */ public function getAuthModeAttr($value) { $status = [10 => '工商', 20 => '个人']; return ['text' => $status[$value], 'value' => $value]; } /** * 代理级别 */ public function getAgentModeAttr($value) { $status = [10 => '区县', 20 => '市级', 30 => '省级']; return ['text' => $status[$value], 'value' => $value]; } /** * 付款状态 */ public function getPayStatusAttr($value) { $status = [10 => '待付款', 20 => '已付款', 30 => '免费认证']; return ['text' => $status[$value], 'value' => $value]; } /** * 当前申请状态 */ public function getApplyStatusAttr($value,$data) { //如果是微信支付申请单 并且是审核中 if($data['apply_mode'] == 30 and $value == 20 and !empty($data['business_code'])){ $wxPay = new Pay; //查询审核状态 if($result = $wxPay->queryApplyment($data['business_code'])){ //编辑中 if($result['applyment_state'] == 'APPLYMENT_STATE_EDITTING' and $data['applyment_state'] != 80){ $model = self::get($data['apply_id']); $model->save([ 'applyment_state' => 80, 'apply_status' => 40, 'apply_time' => time(), 'reject' => '提交申请发生错误导致,请尝试重新提交' ]); $value = 40; } //已驳回 if($result['applyment_state'] == 'APPLYMENT_STATE_REJECTED' and $data['applyment_state'] != 20){ $reject = ''; for($n=1;$n<=sizeof($result['audit_detail']);$n++){ $n > 1 && $reject = $reject . ','; $reject = $reject . $n . $result['audit_detail'][$n-1]['reject_reason']; } $model = self::get($data['apply_id']); $model->save([ 'applyment_state' => 20, 'apply_status' => 40, 'apply_time' => time(), 'reject' => $reject ]); $value = 40; } //待账户验证 if($result['applyment_state'] == 'APPLYMENT_STATE_TO_BE_CONFIRMED' and $data['applyment_state'] != 30){ $model = self::get($data['apply_id']); $model->save([ 'applyment_state' => 30 ]); } //待签约 if($result['applyment_state'] == 'APPLYMENT_STATE_TO_BE_SIGNED' and $data['applyment_state'] != 40){ $model = self::get($data['apply_id']); $model->save([ 'applyment_state' => 40 ]); } //开通权限中 if($result['applyment_state'] == 'APPLYMENT_STATE_SIGNING' and $data['applyment_state'] != 50){ $model = self::get($data['apply_id']); $model->save([ 'applyment_state' => 50 ]); } //商户入驻申请已完成 if($result['applyment_state'] == 'APPLYMENT_STATE_FINISHED' and $data['applyment_state'] != 60){ $model = self::get($data['apply_id']); $model->save([ 'applyment_state' => 60, 'apply_status' => 30, 'apply_time' => time(), ]); $value = 30; } //申请单已被撤销 if($result['applyment_state'] == 'APPLYMENT_STATE_CANCELED' and $data['applyment_state'] != 70){ $model = self::get($data['apply_id']); $model->save([ 'applyment_state' => 70, 'apply_status' => 40, 'apply_time' => time(), 'reject' => '申请单已被撤销,请重新申请' ]); $value = 40; } } } $status = [10 => '待审核', 20 => '验证中', 30 => '认证成功', 40 => '被驳回']; return ['text' => $status[$value], 'value' => $value]; } /** * 官方平台申请状态 */ public function getApplymentStateAttr($value) { $status = [10 => '审核中', 20 => '已驳回', 30 => '待账户验证', 40 => '待签约', 50 => '开通权限中', 60 => '已完成', 70 => '已作废', 80 => '编辑中']; return ['text' => $status[$value], 'value' => $value]; } /** * 获取认证申请列表 */ public function getList($apply_mode = 0, $user_id = 0, $agent_id = 0) { $filter = []; $apply_mode > 0 && $filter['apply_mode'] = $apply_mode; $user_id > 0 && $filter['user_id'] = $user_id; $agent_id > 0 && $filter['agent_id'] = $agent_id; // 执行查询 return $this->with(['user']) ->where($filter) ->order('apply_id','desc') ->paginate(['list_rows'=>15,'query' => request()->param()]); } /** * 详情 */ public static function detail($id) { return self::with(['user'])->find($id); } /** * 详情 */ public static function getApply(array $filter) { return self::with(['user'])->where($filter)->order('apply_id','desc')->find(); } /** * 数据操作 */ public function action($data) { //更新商家资料 if(isset($data['user_id'])){ $user_id = $data['user_id']; }else{ $user_id = $this->user_id; } $model = new UserDetail; $model->action($data['details'],$user_id); //提交到微信审核 if($data['apply_status'] == 20){ //注册小程序 if($data['apply_mode'] == 10){ $wx = new Driver; $queryarr =[ 'name' => $data['details']['merchant_name'], //营业执照名称 'code' => $data['details']['license_number'], //统一社会信用代码 'code_type' => 1, // 企业代码类型(1:统一社会信用代码, 2:组织机构代码,3:营业执照注册号) 'legal_persona_wechat' => $data['details']['legal_persona_wechat'], //所有人微信 'legal_persona_name' => $data['details']['id_card_name'], //所有人姓名 'component_phone' => $data['details']['mobile_phone'] //第三方联系电话 ]; if(!$wx->registerMiniprogram($queryarr)){ $this->error = $wx->getError(); return false; } } //微信支付 if($data['apply_mode'] == 30){ $queryarr = $this->applyment($data);//格式化请求数据 $wxPay = new Pay; if(!$result = $wxPay->applyment($queryarr)){ $this->error = $wxPay->getError(); return false; } $data['applyment_id'] = $result; //申请编号 } } //判断是否为修改操作 if($this->apply_id){ //支付审核通过 if($data['apply_status'] == 30 AND $data['apply_mode'] == 30){ $setting = new Setting; if(!$setting->edit('wxpay',[ 'app_id' => $data['app_id'], //微信应用 'is_sub' => 1, //是否为特约商户 'mch_id' => $data['details']['mch_id'],//商户号 'api_key' => '',//密钥 'cert_pem' => '', //apiclient_cert.pem 证书 'key_pem' => '' //apiclient_key.pem 密钥 ],$this->applet_id)){ $this->error = '支付设置失败'; return false; } } //设置为代理 if($data['apply_mode'] == 40 AND $data['apply_status'] == 30){ User::where('user_id',$this->user_id)->update(['status' => 30]); } }else{ //添加操作 $data['pay_status'] = 30;//免费认证 //如果是代理申请 if($data['apply_mode'] == 40){ $map = new Map; if(!$location = $map->getLocation($data['location'])){ $this->error = $map->getError(); return false; } $data['province'] = $location['province']; $data['city'] = $location['city']; $data['district'] = $location['district']; } //如果是申请小程序 if($data['apply_mode'] == 10){ /* $webpay = Setting::getItem('webpay',0);//获取站点支付配置 //判断是否收费 if($webpay['cost']['applet_fee'] > 0){ $user = User::withoutGlobalScope()->where('user_id',$data['user_id'])->find(); if($user['money'] < $webpay['cost']['applet_fee']){ $this->error = '账户余额不足¥' . $webpay['cost']['applet_fee'] . '元,请先充值'; return false; } //用户扣费 $money = $user['money'] - $webpay['cost']['applet_fee'];//计算扣除后的余额 $user->money = ['dec',$webpay['cost']['applet_fee']]; $user->score = ['inc',$webpay['cost']['applet_fee']]; //增加积分 $user->pay = ['inc',$webpay['cost']['applet_fee']]; //增加消费金额 $user->save(); //生成交易记录 $order_list = []; $order_no = order_no(); array_push($order_list,[ 'user_type' => 20, 'action' => 40,//扣减 'order_no' => $order_no, 'money' => $webpay['cost']['applet_fee'], 'remark' => '小程序审核费', 'user_id' => $data['user_id'] ]); array_push($order_list,[ 'user_type' => 40, //平台 'action' => 50,//分红 'order_no' => $order_no, 'money' => $webpay['cost']['applet_fee'], 'remark' => '小程序审核费' ]); //添加流水记录 $model = new Record; $model->saveAll($order_list); //账户资金变动提醒 sand_account_change_msg('小程序审核费',$webpay['cost']['applet_fee'],$money,$data['user_id']); $data['pay_status'] = 20;//认证费已支付 }*/ } $data['pay_time'] = time();//付款时间 } return $this->save($data); } /** * 删除 */ public function remove() { return $this->delete(); } /** * 特约商户进件 */ private function applyment($data) { $queryarr = [ 'business_code' => $data['business_code'],//业务申请编号 'contact_info' => [ //超级管理员信息 'contact_type' => 'LEGAL',//超级管理员类型 LEGAL=经营者/法人 UPER=经办人 'contact_name' => $data['details']['id_card_name'],//(加密)超级管理员姓名 'mobile_phone' => $data['details']['mobile_phone'],//(加密)联系手机 'contact_email' => $data['details']['contact_email'],//(加密)联系邮箱 ], 'subject_info' => [ //主体资料 'subject_type' => $data['details']['subject_type'],//主体类型 个体户=SUBJECT_TYPE_INDIVIDUAL 企业=SUBJECT_TYPE_ENTERPRISE 'business_license_info' => [ //营业执照信息 'license_copy' => $data['details']['license_copy'],//营业执照照片MediaID 'license_number' => $data['details']['license_number'],//统一社会信用代码 'merchant_name' => $data['details']['merchant_name'],//营业执照上的商户名称 'legal_person' => $data['details']['id_card_name'],//个体户经营者/法人姓名 ], 'identity_info' => [ //经营者/法人身份证件信息 'id_doc_type' => 'IDENTIFICATION_TYPE_IDCARD',//证件类型(默认居民身份证) 'id_card_info' => [ //身份证信息 'id_card_copy' => $data['details']['id_card_copy'],//身份证人像面照片MediaID 'id_card_national' => $data['details']['id_card_national'],//身份证国徽面照片MediaID 'id_card_name' => $data['details']['id_card_name'],//(加密)身份证姓名 'id_card_number' => $data['details']['id_card_number'],//(加密)身份证号码 'id_card_address' => $data['details']['id_card_address'],//身份证居住地址,主体类型为企业时,需要填写 'card_period_begin' => $data['details']['card_period_begin'],//身份证有效期开始时间 'card_period_end' => $data['details']['card_period_end'],//身份证有效期结束时间 ], //'owner' => true,//经营者/法人是否为受益人 主体类型为企业时,需要填写 ], ], 'business_info' => [ //经营资料 'merchant_shortname' => $data['details']['merchant_shortname'],//商户简称 'service_phone' => $data['details']['mobile_phone'],//客服电话(商家的) 'sales_info' => [ //经营场景 'sales_scenes_type' => [ //场景类型 'SALES_SCENES_MINI_PROGRAM',//小程序 'SALES_SCENES_STORE', //线下场所 ], 'biz_store_info' => [ //线下场所场景 'biz_store_name' => $data['details']['merchant_shortname'],//门店名称 'biz_address_code' => $data['details']['biz_address_code'],//门店所在省市编码 'biz_store_address' => $data['details']['biz_store_address'],//门店地址 'store_entrance_pic' => [ //门头照片MediaID $data['details']['store_entrance_pic'] ], 'indoor_pic' => [ //店内照片MediaID $data['details']['indoor_pic'] ], ], 'mini_program_info' => [ //小程序场景 'mini_program_sub_appid' => $data['app_id'],//商家小程序APPID ], ], ], 'settlement_info' => [ //结算规则 //'settlement_id' => 'aaaa',//入驻结算规则ID 'qualification_type' => '餐饮',//指定行业名称 'qualifications' => [//特殊资质图片 $data['details']['qualifications'] ], ], 'bank_account_info' => [ //结算银行账户 //'bank_account_type' => '',//账户类型 BANK_ACCOUNT_TYPE_CORPORATE=对公银行账户 //'account_name' => '',//(加密)开户名称 'account_bank' => $data['details']['account_bank'],//开户银行 'bank_address_code' => $data['details']['bank_address_code'],//开户银行省市编码 'account_number' => $data['details']['account_number'],//(加密)银行账号 ], ]; //如果主体类型是个体 if($data['details']['subject_type'] == 'SUBJECT_TYPE_INDIVIDUAL'){ $queryarr['bank_account_info']['bank_account_type'] = 'BANK_ACCOUNT_TYPE_PERSONAL';//账户类型=经营者个人银行卡 $queryarr['bank_account_info']['account_name'] = $data['details']['id_card_name'];//账户名称 $queryarr['settlement_info']['settlement_id'] = '719';//入驻结算规则ID }else{ //为公司企业 $queryarr['bank_account_info']['bank_account_type'] = 'BANK_ACCOUNT_TYPE_CORPORATE';//账户类型=对公银行账户 $queryarr['bank_account_info']['account_name'] = $data['details']['merchant_name'];//账户名称 $queryarr['settlement_info']['settlement_id'] = '716';//入驻结算规则ID $queryarr['subject_info']['identity_info']['owner'] = true;//经营者/法人是否为受益人 主体类型为企业时,需要填写 } return $queryarr; } /** * 详情 */ public static function getDetail($where = []) { return self::withoutGlobalScope()->where($where)->find(); } }