智简魔方文档

实名认证接口

顺戴财务系统实名认证插件开发文档

【魔方开发者交流群:682866869】

开发流程

  1. 在 public/plugins/certification 下添加实名认证插件目录(如 threehc)。
  2. 创建入口文件。
  3. 如需后台配置,在插件根目录添加 config.php,格式见下文“配置文件”。
  4. 如需外部访问,添加 controller 目录及相应的 Controller 文件。
  5. 在后台【实名设置】-【接口设置】刷新页面,即可看到新添加的插件。

创建目录

插件目录位于 public/plugins/certification。目录名由小写字母和下划线组成,且必须以字母开头,例如 public/plugins/certification/threehc。

入口文件

入口文件使用目录名的大驼峰形式加上 Plugin.php,并放在实名认证目录下,例如 threehc/ThreehcPlugin.php。注意类名首字母和命名空间。

必须在插件入口文件中定义 info 类属性,配置插件基本信息(见示例)。

install 方法 必须实名插件预安装;

uninstall 方法 必须实名插件卸载;

personal 方法 可选个人认证,可选方法,如果实现,表示支持个人认证;

参数
系统参数

$certifi['name'] # 姓名
$certifi['card'] # 身份证号
$certifi['phone'] # 手机号 phone字段需要开发者在collectionInfo()中定义,否则返回空
$certifi['bank'] # 银行卡号 bank字段需要开发者在collectionInfo()中定义,否则返回空
$certifi['company_name'] # 公司名
$certifi['company_organ_code'] # 公司代码

自定义参数(collectionInfo方法对应参数)

$certifi['custom_field1'] # 自定义字段1 注意:文件类型参数会传 文件地址绝对路径
$certifi['custom_field2'] # 自定义字段2

响应参数

html代码

company方法 可选企业认证,可选方法,如果实现,表示支持企业认证;
参数:参考个人认证

collectionInfo方法 可选 目前支持最多10个自定义字段
实名认证前台自定义字段输出
getStatus方法 可选实名认证时,系统会轮询调用此方法
参数

$certifi['certify_id'] # 认证证书

响应参数

return [
    'status' => $status, # 1审核通过,2未通过,4已提交资料 默认为4
    'msg' => $msg # 提示信息
];

或者直接返回:

return true;

示例

<?php
namespace certification\threehc;

use app\admin\lib\Plugin;
use certification\threehc\logic\Threehc;

class ThreehcPlugin extends Plugin
{
 # 基础信息
 public $info = array(
 'name' => 'Threehc',//Demo插件英文名,改成你的插件英文就行了
 'title' => '三要素--深圳华辰', //名称
 'description' => '三要素--深圳华辰', //描述
 'status' => 1, // 状态 启用
 'author' => '顺戴网络', //作者
 'version' => '1.0',//版本
 'help_url' => 'https://market.aliyun.com/products/57000002/cmapi025566.html?spm=5176.10695662.1996646101.searchclickresult.52b1749a9QYHYu'//帮助文档
 );

 # 插件安装
 public function install()
 {
 return true;//安装成功返回true,失败false
 }

 # 插件卸载
 public function uninstall()
 {
 return true;//卸载成功返回true,失败false
 }

 /*
 * 个人认证
 * certifi参数为系统参数+自定义参数数组:
 * $certifi = [
 * # 系统参数
 * 'name' => '姓名',
 * 'card' => '身份证号',
 * 'phone' => '手机号', # phone字段需要开发者在collectionInfo()中定义,否则返回空
 * 'bank' => '银行卡号', # bank字段需要开发者在collectionInfo()中定义,否则返回空
 * 'company_name' => '公司名',
 * 'company_organ_code' => '公司代码',
 * # 插件自定义参数 collectionInfo()中返回,列:
 * 'custom_field1' => '自定义字段1' 文件类型参数会传 绝对路径
 * ]
 */
 public function personal($certifi)
 {
 if (file_exists(__DIR__.'/config/config.php')){
 $con = require __DIR__.'/config/config.php';
 }else{
 $con = [];
 }
 $config = $this->getConfig();
 $_config = array_merge($con,$config);
 $type = $_config['type'];
 if ($type == 2){
 $param = [
 'name'=> $certifi['name'],
 'bank'=> $certifi['bank'],
 ];
 }elseif ($type == 3){
 $param=[
 'bank'=> $certifi['bank'],
 'name'=> $certifi['name'],
 'number'=> $certifi['card'],
 'type'=> 0,
 ];
 }else{
 $param=[
 'bank'=> $certifi['bank'],
 'mobile'=> $certifi['phone'],
 'name'=> $certifi['name'],
 'number'=> $certifi['card'],
 'type'=> 0,
 ];
 }
 # TODO WYH 自定义字段 自行操作
 # $custom1 = $certifi['custom_field1'];

 $logic = new Threehc();
 $query = $logic->createLinkstrings($param);
 $appcode = $_config['app_code'];
 $result = $logic->httpsPhoneThree($appcode,$query,$_config['threehc_url'],$type);
 $data = [
 'status' => 2, # 1通过,2未通过
 'auth_fail' => '',
 'certify_id' => $result['log_id']?:'',
 ];
 if ($result['ret'] == 200){
 if (isset($result['data']['desc']) && $result['data']['desc'] == '一致'){ # 通过
 $data['status'] = 1;
 }else{
 $data['auth_fail'] = $result['data']['desc']?:'';
 }
 }else{
 $data['auth_fail'] = $result['msg']?:'实名认证接口配置错误,请联系管理员';
 }
 # 调用系统方法,更新个人实名认证状态
 updatePersonalCertifiStatus($data);
 return "<h3 class=\"pt-2 font-weight-bold h2 py-4\"><img src=\"\" alt=\"\"> 正在认证,请稍等...</h3>";
 }

 # 企业认证
 public function company($certifi)
 {
 if (file_exists(__DIR__.'/config/config.php')){
 $con = require __DIR__.'/config/config.php';
 }else{
 $con = [];
 }
 $config = $this->getConfig();
 $_config = array_merge($con,$config);
 $type = $_config['type'];
 if ($type == 2){
 $param = [
 'name'=> $certifi['name'],
 'bank'=> $certifi['bank'],
 ];
 }elseif ($type == 3){
 $param=[
 'bank'=> $certifi['bank'],
 'name'=> $certifi['name'],
 'number'=> $certifi['card'],
 'type'=> 0,
 ];
 }else{
 $param=[
 'bank'=> $certifi['bank'],
 'mobile'=> $certifi['phone'],
 'name'=> $certifi['name'],
 'number'=> $certifi['card'],
 'type'=> 0,
 ];
 }
 # TODO WYH 自定义字段 自行操作
 # $custom1 = $certifi['custom_field1'];

 $logic = new Threehc();
 $query = $logic->createLinkstrings($param);
 $appcode = $_config['app_code'];
 $result = $logic->httpsPhoneThree($appcode,$query,$_config['threehc_url'],$type);
 $data = [
 'status' => 2, # 1通过,2未通过
 'auth_fail' => '',
 'certify_id' => $result['log_id']?:'',
 ];
 if ($result['ret'] == 200){
 if (isset($result['data']['desc']) && $result['data']['desc'] == '一致'){ # 通过
 $data['status'] = 1;
 }else{
 $data['auth_fail'] = $result['data']['desc']?:'';
 }
 }else{
 $data['auth_fail'] = $result['msg']?:'实名认证接口配置错误,请联系管理员';
 }
 # 调用系统方法,更新企业实名认证状态
 updateCompanyCertifiStatus($data);
 return "<h3 class=\"pt-2 font-weight-bold h2 py-4\"><img src=\"\" alt=\"\"> 正在认证,请稍等...</h3>";
 }

 # 前台自定义字段输出
 public function collectionInfo()
 {
 $config = $this->getConfig();
 $type = $config['type'];
 if ($type == 2){
 $data = [
 'bank' => [
 'title' => '银行卡号',
 'type' => 'text', # 字段类型:text文本,file文件,目前仅支持文本以及文件类型!
 'value' => '',
 'tip' => '请输入银行卡号',
 'required' => true, # 是否必填
 ],
 'face' => [
 'title' => '人脸照片',
 'type' => 'file', # 字段类型:text文本,file文件,目前仅支持文本以及文件类型!
 'value' => '',
 'tip' => '请上传人脸照片',
 'required' => true, # 是否必填
 ],
 ];
 }elseif ($type == 3){
 $data = [
 'bank' => [
 'title' => '银行卡号',
 'type' => 'text', # 字段类型:text文本,file文件,目前仅支持文本以及文件类型!
 'value' => '',
 'tip' => '请输入银行卡号',
 'required' => true, # 是否必填
 ]
 ];
 }elseif ($type == 4){
 $data = [
 'bank' => [
 'title' => '银行卡号',
 'type' => 'text',
 'value' => '',
 'tip' => '请输入银行卡号',
 'required' => true, # 是否必填
 ],
 'phone' => [
 'title' => '手机号',
 'type' => 'text',
 'value' => '',
 'tip' => '请输入手机号',
 'required' => true, # 是否必填
 ],
 ];
 }else{
 $data = [];
 }
 return $data;
 }

 public function getStatus($certifi)
 {
 return true;
 }
}

配置文件

在你的实名认证根目录下加上config.php 即可定义配置

配置文件中需要加入两个系统字段:amount,free;

amount大于0时,表示需要支付;

free大于0时,表示免费次数;

<?php
return [
 # 系统默认字段
 'amount' => [ # 无此配置,默认为0
 'title' => '金额',
 'type' => 'text',// 表单的类型:text,password,textarea,checkbox,radio,select等
 'value' => 0,
 'tip' => '支付金额',
 ],
 'free' => [ # 无此配置,默认为0
 'title' => '免费认证次数',
 'type' => 'text',
 'value' => 0,
 'tip' => '免费认证次数',
 ],
 # 开发者自定义字段
 'app_code' => [
 'title' => 'appCode',
 'type' => 'text',
 'value' => '',
 'tip' => '',
 ],
 'type' => [// 在后台插件配置表单中的键名 ,会是config[select]
 'title' => '认证方式',
 'type' => 'select',
 'options' => [//select 和radio,checkbox的子选项
 2 => '两要素', // 值=>显示 姓名 银行卡号
 3 => '三要素', // 姓名 身份证号 银行卡号
 4 => '四要素', // 姓名 身份证号 银行卡号 手机号
 ],
 'value' => '2',
 'tip' => '认证方式',
 ],
];