parent
31666aeea7
commit
c5259358c7
@ -0,0 +1,212 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
|
||||||
|
namespace Tansilu\HfPayLib\factory\impl; |
||||||
|
|
||||||
|
use Tansilu\HfPayLib\exception\BizException; |
||||||
|
use Tansilu\HfPayLib\exception\ParamsException; |
||||||
|
use Tansilu\HfPayLib\factory\BaseFactory; |
||||||
|
use Tansilu\HfPayLib\factory\object\onelevel\UploadRequest; |
||||||
|
use Tansilu\HfPayLib\factory\object\onelevel\UploadResponse; |
||||||
|
|
||||||
|
use Tansilu\HfPayLib\factory\object\onelevel\PersonalRequest; |
||||||
|
use Tansilu\HfPayLib\factory\object\onelevel\PersonalResponse; |
||||||
|
|
||||||
|
use Tansilu\HfPayLib\factory\object\onelevel\CompanyRequest; |
||||||
|
use Tansilu\HfPayLib\factory\object\onelevel\CompanyResponse; |
||||||
|
|
||||||
|
use Tansilu\HfPayLib\factory\object\onelevel\PeddlarRequest; |
||||||
|
use Tansilu\HfPayLib\factory\object\onelevel\PeddlarResponse; |
||||||
|
/** |
||||||
|
* 一级市场管理 |
||||||
|
*/ |
||||||
|
class OneLevelFactory extends BaseFactory |
||||||
|
{ |
||||||
|
|
||||||
|
/** |
||||||
|
* 开户 |
||||||
|
* 上传企业开户,个体户开户的资料文件 |
||||||
|
* |
||||||
|
* 目前支持的文件格式:rar,zip,png,jpg,jpeg,gif,bmp,pdf,doc,docx,csv |
||||||
|
* 当业务类型为个人时,身份证正反面和用户平台合作协议必传 |
||||||
|
* 当业务类型为企业开户时,企业经营信息(营业执照、组织机构代码证、税务登记证)与统一社会代码证二选一必传,法人证件、法人证件反面、结算卡正面、结算卡反面必传 |
||||||
|
* 当业务类型为个体户开户时,营业执照、法人证件、结算卡正面、结算卡反面必传 |
||||||
|
* 附件名称不要超过25个字符 |
||||||
|
* 个人身份证正面和个人身份证反面附件大小不要超过1M,其他附件不要超过5M |
||||||
|
* |
||||||
|
|
||||||
|
* @throws BizException |
||||||
|
* @throws ParamsException |
||||||
|
* |
||||||
|
* @see https://hfpay.cloudpnr.com/customers/nft/#/levelOneOpenAccount/uploadFile |
||||||
|
* |
||||||
|
* 返回码 |
||||||
|
* S00001 文件名称有误 |
||||||
|
* S00002 附件编号不能重复 |
||||||
|
* S00003 上传文件不能为空 |
||||||
|
* S00004 上传失败,不支持该文件格式 |
||||||
|
* S00005 上传失败,文件数量超过限制 |
||||||
|
* S00006 文件上传失败,请稍后重试 |
||||||
|
* S00007 操作超时,请重试 |
||||||
|
* S00008 上传失败,文件大小超过限制 |
||||||
|
* S00009 文件下载失败 |
||||||
|
* S00010 未查到对账文件或收益文件 |
||||||
|
*/ |
||||||
|
public function upload(UploadRequest $params): UploadResponse |
||||||
|
{ |
||||||
|
$request = $params->toParams(); |
||||||
|
|
||||||
|
$data = $this->post('/api/alseFile/file01', $request); |
||||||
|
|
||||||
|
if(!$data->isSuccess()) { |
||||||
|
throw new BizException('上传失败', $data->getCode()); |
||||||
|
} |
||||||
|
return UploadResponse::make($data->getBody()); |
||||||
|
} |
||||||
|
/** |
||||||
|
* 个人用户开户接口(后台版) |
||||||
|
* 用于在本平台系统下为个人用户开户。开户时,会有实名验证和身份证OCR验证,请提供真实信息。 |
||||||
|
* 本接口只能用于一级市场的卖家户、分销员户的开户。开通的用户只具有收款能力(藏品卖家),不具有付款能力。 |
||||||
|
* |
||||||
|
* @throws BizException |
||||||
|
* @throws ParamsException |
||||||
|
* |
||||||
|
* @see https://hfpay.cloudpnr.com/customers/nft/#/levelOneOpenAccount/personalOpenAccount |
||||||
|
返回码 |
||||||
|
A40001 省份地区信息非法 |
||||||
|
A40002 该用户已开户,身份证号已存在 |
||||||
|
A40004 黑名单用户,开户失败 |
||||||
|
A40005 身份校验失败 |
||||||
|
A40006 身份证格式校验失败 |
||||||
|
A40007 身份证末位校验失败 |
||||||
|
A40008 手续费配置异常 |
||||||
|
A40085 该证件用户开户请求正在处理中,请稍后再试 |
||||||
|
A40218 附件编号不存在 |
||||||
|
A40219 缺少附件信息 |
||||||
|
A40220 开户服务费收取失败 |
||||||
|
A40211 user_id不能重复开户 |
||||||
|
A40212 身份证开户数超过最大限制 |
||||||
|
A40203 用户已开户,无需再提交开户 |
||||||
|
A40210 年龄不符合要求 |
||||||
|
A40223 身份证附件识别不一致 |
||||||
|
A40224 身份证OCR失败 |
||||||
|
*/ |
||||||
|
public function personalCreate( PersonalRequest $params) : PersonalResponse |
||||||
|
{ |
||||||
|
$request = $params->toParams(); |
||||||
|
|
||||||
|
$data = $this->post('/api/acou/user08', $request); |
||||||
|
|
||||||
|
if(!$data->isSuccess()) { |
||||||
|
throw new BizException('一级市场-个人用户开户创建失败', $data->getCode()); |
||||||
|
} |
||||||
|
return PersonalResponse::make($data->getBody()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 企业用户开户接口(后台版) |
||||||
|
* 用于在本平台系统下为个人用户开户。开户时,会有实名验证和身份证OCR验证,请提供真实信息。 |
||||||
|
* 本接口只能用于一级市场的卖家户、分销员户的开户。开通的用户只具有收款能力(藏品卖家),不具有付款能力。 |
||||||
|
* |
||||||
|
* @throws BizException |
||||||
|
* @throws ParamsException |
||||||
|
* |
||||||
|
* @see https://hfpay.cloudpnr.com/customers/nft/#/levelOneOpenAccount/enterpriseOpenAccount |
||||||
|
返回码 |
||||||
|
A40001 省份地区信息非法 |
||||||
|
A40002 该用户已开户,身份证号已存在 |
||||||
|
A40004 黑名单用户,开户失败 |
||||||
|
A40005 身份校验失败 |
||||||
|
A40006 身份证格式校验失败 |
||||||
|
A40007 身份证末位校验失败 |
||||||
|
A40009 控股股东不能超过二十个 |
||||||
|
A40010 控股股东部分字段为空 |
||||||
|
A40011 控股股东部分字段长度超长 |
||||||
|
A40012 控股股东证件类型不存在 |
||||||
|
A40013 控股股东身份证不合法 |
||||||
|
A40014 该企业证照类型与证照号不匹配 |
||||||
|
A40015 该申请号已开户 |
||||||
|
A40016 该企业营业执照注册号或者社会统一信用码已开户 |
||||||
|
A40017 该企业开户申请正在审核中,不能修改 |
||||||
|
A40018 该企业开户申请已被拒绝,不能修改 |
||||||
|
A40019 该企业开户申请已经通过,不能修改 |
||||||
|
A40020 未查询到原开户申请号 |
||||||
|
A40021 该申请号已申请开户 |
||||||
|
A40022 营业执照注册号或者社会统一信用码已申请开户 |
||||||
|
A40023 附件信息不存在 |
||||||
|
A40024 附件数量超出10个限制 |
||||||
|
A40025 附件文件不存在 |
||||||
|
A40026 文件已被使用 |
||||||
|
A40027 该记录非待审核状态 |
||||||
|
A40028 银行信息不存在 |
||||||
|
A40031 原企业开户申请状态为关闭,不能修改 |
||||||
|
A40045 审核拒绝,【具体拒绝原因】 |
||||||
|
A40046 审核待修改,【具体修改理由】 |
||||||
|
A40047 开户成功,绑卡失败,【具体绑卡失败原因】 |
||||||
|
A40054 审核状态错误 |
||||||
|
H10005 银行卡已存在 |
||||||
|
A40102 用户不存在 |
||||||
|
A40103 该用户已开户 |
||||||
|
A40107 收款方必须开通汇付账户 |
||||||
|
A40105 开户请求银行处理中,请勿重复提交 |
||||||
|
A40106 请上传文件 |
||||||
|
*/ |
||||||
|
public function companyCreate( CompanyRequest $params) : CompanyResponse |
||||||
|
{ |
||||||
|
$request = $params->toParams(); |
||||||
|
|
||||||
|
$data = $this->post('/api/acou/corp05', $request); |
||||||
|
|
||||||
|
if(!$data->isSuccess()) { |
||||||
|
throw new BizException('一级市场-企业用户开户创建失败', $data->getCode()); |
||||||
|
} |
||||||
|
return CompanyResponse::make($data->getBody()); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 个体商户开户接口(后台版) |
||||||
|
* 用于在本平台系统下为个人用户开户。开户时,会有实名验证和身份证OCR验证,请提供真实信息。 |
||||||
|
* 本接口只能用于一级市场的卖家户、分销员户的开户。开通的用户只具有收款能力(藏品卖家),不具有付款能力。 |
||||||
|
* |
||||||
|
* @throws BizException |
||||||
|
* @throws ParamsException |
||||||
|
* |
||||||
|
* @see https://hfpay.cloudpnr.com/customers/nft/#/levelOneOpenAccount/individualOpenAccount |
||||||
|
返回码 |
||||||
|
A40024 附件数量超出10个限制 |
||||||
|
A40025 附件文件不存在 |
||||||
|
A40026 文件已被使用 |
||||||
|
A40027 该记录非待审核状态 |
||||||
|
A40028 银行信息不存在 |
||||||
|
A40032 该个体工商户开户申请审核已通过,不能修改 |
||||||
|
A40033 该个体工商户开户申请正在审核中,不能修改 |
||||||
|
A40034 该个体工商户开户申请审核拒绝,不能修改 |
||||||
|
A40036 原个体户开户请求不存在 |
||||||
|
A40037 该申请号已开户 |
||||||
|
A40038 个体户开户申请号已申请开户 |
||||||
|
A40039 营业执照注册号已被使用 |
||||||
|
A40045 审核拒绝,【具体拒绝原因】 |
||||||
|
A40046 审核待修改,【具体修改理由】 |
||||||
|
A40047 开户成功,绑卡失败,【具体绑卡失败原因】 |
||||||
|
A40054 审核状态错误 |
||||||
|
H10005 银行卡已存在 |
||||||
|
A40102 用户不存在 |
||||||
|
A40103 该用户已开户 |
||||||
|
A40107 收款方必须开通汇付账户 |
||||||
|
A40105 开户请求银行处理中,请勿重复提交 |
||||||
|
A40106 请上传文件 |
||||||
|
*/ |
||||||
|
public function peddlarCreate( PeddlarRequest $params) : PeddlarResponse |
||||||
|
{ |
||||||
|
$request = $params->toParams(); |
||||||
|
|
||||||
|
$data = $this->post('/api/acou/solo02', $request); |
||||||
|
|
||||||
|
if(!$data->isSuccess()) { |
||||||
|
throw new BizException('一级市场-商户用户开户创建失败', $data->getCode()); |
||||||
|
} |
||||||
|
return PeddlarResponse::make($data->getBody()); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,214 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
|
||||||
|
namespace Tansilu\HfPayLib\factory\object\onelevel; |
||||||
|
|
||||||
|
use Tansilu\HfPayLib\Constant; |
||||||
|
use Tansilu\HfPayLib\factory\object\RequestObj; |
||||||
|
use Tansilu\HfPayLib\exception\ParamsException; |
||||||
|
use Tansilu\HfPayLib\utils\StrFilterHelper; |
||||||
|
/** |
||||||
|
* @property string $order_date 订单日期 格式为YYYYMMDD,例如:20160307,定长8位String |
||||||
|
* @property string $order_id 订单号 由商户生成,必须保证唯一,50位内的字母或数字组合,变长50位String |
||||||
|
* @property string $acct_usage_type 账户用途 one-level-seller:一级市场卖家户 salesr-promoter:分销员户,变长30位String |
||||||
|
* @property string $user_id 用户ID 外部用户id,变长128位String |
||||||
|
* @property string $apply_id 开户申请号 商户下唯一,变长20位String |
||||||
|
* @property string $operate_type 操作类型 A:新增 M:修改,定长1位String |
||||||
|
* @property string $corp_license_type 企业证照类型 1.普通证照 2.三证合一,定长1位String,可选 |
||||||
|
* @property string $corp_name 企业名称 企业的公司全称,变长50位String |
||||||
|
* @property string $business_code 营业执照注册号 企业的营业执照注册号,营业执照注册号与统一社会信用代码二选一必填,变长30位String,可选 |
||||||
|
* @property string $institution_code 组织机构代码 企业的组织机构代码证,定长9位String,可选 |
||||||
|
* @property string $tax_code 税务登记证号 企业的税务登记号,变长30位String,可选 |
||||||
|
* @property string $social_credit_code 统一社会信用代码 企业的统一社会信用代码,定长18位String,可选 |
||||||
|
* @property string $license_start_date 证照起始日期 企业的营业证照起始日期,精确到年月日,定长8位String,可选 |
||||||
|
* @property string $license_end_date 证照结束日期 企业的营业证照结束日期,精确到年月日,支持“永久”,定长8位String,可选 |
||||||
|
* @property string $corp_business_address 企业经营地址 企业的经营地址,变长250位String,可选 |
||||||
|
* @property string $corp_reg_address 企业注册地址 企业的注册地址,变长250位String,可选 |
||||||
|
* @property string $corp_fixed_telephone 企业固定电话 企业的固定电话,变长15位String,可选 |
||||||
|
* @property string $business_scope 经营范围 企业的经营范围,变长1000位String,可选 |
||||||
|
* @property string $controlling_shareholder 控股股东(实际控制人) 数据格式:[{"custName":"关羽","idCardType":"10","idCard":"330204199008187881,ratio":"50",shareholderAddr":"上海市"}],变长3000位String |
||||||
|
* @property string $legal_name 法人姓名 企业的法人姓名,变长50位String |
||||||
|
* @property string $legal_id_card_type 法人证件类型 10:身份证11:护照12:军官证13:士兵证14:回乡证15:户口本16:警官证17:台胞证18:组织机构代码19:营业执照20:税务登记证21:统一社会信用代码证22:其他,定长2位String |
||||||
|
* @property string $legal_id_card 法人证件号码 法人的证件号码,与证件类型对应,当用户类型为 2、3时只能为身份证,变长20位String |
||||||
|
* @property string $legal_cert_start_date 法人证件起始日期 法人的证件起始日期,精确到年月日,定长8位String |
||||||
|
* @property string $legal_cert_end_date 法人证件截止日期 法人的证件结束日期,精确到年月日,支持“永久”,定长8位String |
||||||
|
* @property string $legal_mobile 法人手机号码 法人的手机号码,定长11位String |
||||||
|
* @property string $contact_name 企业联系人姓名 企业联系人的姓名,变长50位String |
||||||
|
* @property string $contact_mobile 联系人手机号 联系人的手机号码,定长11位String |
||||||
|
* @property string $contact_email 联系人邮箱 联系人的邮箱地址,变长40位String |
||||||
|
* @property string $bank_acct_name 开户银行账户名 企业开户银行账户名,变长50位String |
||||||
|
* @property string $bank_id 开户银行 具体见附件:开户银行代号,变长8位String |
||||||
|
* @property string $bank_acct_num 开户银行账号 企业开户银行账号,变长32位String |
||||||
|
* @property string $bank_branch 开户银行支行名称 企业开户银行的支行名称,变长100位String,可选 |
||||||
|
* @property string $bank_prov 开户银行省份 银行卡开户省份,定长4位String |
||||||
|
* @property string $bank_area 开户银行地区 银行卡开户地区,定长4位String |
||||||
|
* @property string $industry 行业 企业行业类别,具体见附件:行业,定长2位String,可选 |
||||||
|
* @property string $bg_ret_url 商户后台应答地址 通过后台异步通知商户开户结果;注意:1) 使用时不要包含中文 2)必须是外网地址,变长128位String,可选 |
||||||
|
* @property string $attach_nos 附件信息 配合文件上传接口,使用,多个附件之间用逗号隔开,变长1024位String |
||||||
|
* @property string $mer_priv 商户私有域 为商户的自定义字段,该字段在交易完成后由本平台原样返回,变长120位String,可选 |
||||||
|
* @property string $extension 扩展域,变长512位String,可选 |
||||||
|
* @property string $legal_nationality 法人国籍,变长128位String,可选 |
||||||
|
*/ |
||||||
|
class CompanyRequest |
||||||
|
{ |
||||||
|
use RequestObj; |
||||||
|
/** |
||||||
|
* @throws ParamsException |
||||||
|
*/ |
||||||
|
public function toParams(): array |
||||||
|
{ |
||||||
|
if(empty($this->data['order_date'])) { |
||||||
|
throw new ParamsException('订单日期不能为空', 'order_date'); |
||||||
|
} |
||||||
|
if(empty($this->data['order_id'])) { |
||||||
|
throw new ParamsException('订单号不能为空', 'order_id'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['acct_usage_type'])) { |
||||||
|
throw new ParamsException('账户用途不能为空', 'acct_usage_type'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['user_id'])) { |
||||||
|
throw new ParamsException('用户ID不能为空', 'user_id'); |
||||||
|
} |
||||||
|
if(empty($this->data['apply_id'])) { |
||||||
|
throw new ParamsException('开户申请号不能为空', 'apply_id'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['operate_type'])) { |
||||||
|
throw new ParamsException('操作类型不能为空', 'operate_type'); |
||||||
|
} |
||||||
|
if(!in_array($this->data['operate_type'], [Constant::ONE_COM_OPERATE_TYPE_A, Constant::ONE_COM_OPERATE_TYPE_M])) { |
||||||
|
throw new ParamsException('操作类型不正确', 'operate_type'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['corp_license_type'])) { |
||||||
|
throw new ParamsException('企业证照类型不能为空', 'corp_license_type'); |
||||||
|
} |
||||||
|
if(!in_array($this->data['corp_license_type'], [Constant::ONE_COM_CORP_LIS_TYPE_1, Constant::ONE_COM_CORP_LIS_TYPE_2])) { |
||||||
|
throw new ParamsException('企业证照类型不正确', 'corp_license_type'); |
||||||
|
} |
||||||
|
//营业执照 |
||||||
|
if($this->data['corp_license_type'] == Constant::ONE_COM_CORP_LIS_TYPE_1) { |
||||||
|
if(empty($this->data['business_code'])) { |
||||||
|
throw new ParamsException('营业执照注册号不能为空', 'business_code'); |
||||||
|
} |
||||||
|
if(empty($this->data['institution_code'])) { |
||||||
|
throw new ParamsException('组织机构代码不能为空', 'institution_code'); |
||||||
|
} |
||||||
|
if(empty($this->data['tax_code'])) { |
||||||
|
throw new ParamsException('税务登记证号不能为空', 'tax_code'); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
//统一社会信用代码 |
||||||
|
if(empty($this->data['social_credit_code'])) { |
||||||
|
throw new ParamsException('统一社会信用代码不能为空', 'social_credit_code'); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['corp_name'])) { |
||||||
|
throw new ParamsException('企业名称不能为空', 'corp_name'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['license_start_date'])) { |
||||||
|
throw new ParamsException('证照起始日期不能为空', 'license_start_date'); |
||||||
|
} |
||||||
|
if(empty($this->data['license_end_date'])) { |
||||||
|
throw new ParamsException('证照结束日期不能为空', 'license_end_date'); |
||||||
|
} |
||||||
|
if(empty($this->data['corp_business_address'])) { |
||||||
|
throw new ParamsException('企业经营地址不能为空', 'corp_business_address'); |
||||||
|
} |
||||||
|
if(empty($this->data['corp_reg_address'])) { |
||||||
|
throw new ParamsException('企业注册地址不能为空', 'corp_reg_address'); |
||||||
|
} |
||||||
|
if(empty($this->data['corp_fixed_telephone'])) { |
||||||
|
throw new ParamsException('企业固定电话不能为空', 'corp_fixed_telephone'); |
||||||
|
} |
||||||
|
if(empty($this->data['business_scope'])) { |
||||||
|
throw new ParamsException('经营范围不能为空', 'business_scope'); |
||||||
|
} |
||||||
|
if(empty($this->data['controlling_shareholder'])) { |
||||||
|
throw new ParamsException('控股股东(实际控制人)不能为空', 'controlling_shareholder'); |
||||||
|
} |
||||||
|
$this->data['controlling_shareholder'] = json_encode($this->data['controlling_shareholder'], JSON_UNESCAPED_UNICODE); |
||||||
|
|
||||||
|
if(empty($this->data['legal_name'])) { |
||||||
|
throw new ParamsException('法人姓名不能为空', 'legal_name'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['legal_id_card_type'])) { |
||||||
|
throw new ParamsException('法人证件类型不能为空', 'legal_id_card_type'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['legal_id_card'])) { |
||||||
|
throw new ParamsException('法人证件号码不能为空', 'legal_id_card'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['legal_cert_start_date'])) { |
||||||
|
throw new ParamsException('法人证件起始日期不能为空', 'legal_cert_start_date'); |
||||||
|
} |
||||||
|
if(empty($this->data['legal_cert_end_date'])) { |
||||||
|
throw new ParamsException('法人证件截止日期不能为空', 'legal_cert_end_date'); |
||||||
|
} |
||||||
|
if(empty($this->data['legal_mobile'])) { |
||||||
|
throw new ParamsException('法人手机号码不能为空', 'legal_mobile'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['contact_name'])) { |
||||||
|
throw new ParamsException('企业联系人姓名不能为空', 'contact_name'); |
||||||
|
} |
||||||
|
if(empty($this->data['contact_mobile'])) { |
||||||
|
throw new ParamsException('联系人手机号不能为空', 'contact_mobile'); |
||||||
|
} |
||||||
|
if(empty($this->data['contact_email'])) { |
||||||
|
throw new ParamsException('联系人邮箱不能为空', 'contact_email'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['bank_acct_name'])) { |
||||||
|
throw new ParamsException('开户银行账户名不能为空', 'bank_acct_name'); |
||||||
|
} |
||||||
|
// 银行ID号 5000多个 |
||||||
|
//https://cloudpnrcdn.oss-cn-shanghai.aliyuncs.com/hfpay/hfpay-excon-web/customers/nft/resources/%E5%8F%96%E7%8E%B0%E6%94%AF%E6%8C%81%E7%9A%84%E9%93%B6%E8%A1%8C%E4%BF%A1%E6%81%AF.xlsx |
||||||
|
if(empty($this->data['bank_id'])) { |
||||||
|
throw new ParamsException('开户银行代号不能为空', 'bank_id'); |
||||||
|
} |
||||||
|
if(empty($this->data['bank_acct_num'])) { |
||||||
|
throw new ParamsException('开户银行账号不能为空', 'bank_acct_num'); |
||||||
|
} |
||||||
|
if(empty($this->data['bank_branch'])) { |
||||||
|
throw new ParamsException('开户银行支行名称不能为空', 'bank_branch'); |
||||||
|
} |
||||||
|
if(empty($this->data['bank_prov'])) { |
||||||
|
throw new ParamsException('开户银行省份不能为空', 'bank_prov'); |
||||||
|
} |
||||||
|
if(empty($this->data['bank_area'])) { |
||||||
|
throw new ParamsException('开户银行地区不能为空', 'bank_area'); |
||||||
|
} |
||||||
|
if(empty($this->data['industry'])) { |
||||||
|
throw new ParamsException('企业行业类别不能为空', 'industry'); |
||||||
|
} |
||||||
|
if(!empty($this->data['bg_ret_url'])) { |
||||||
|
StrFilterHelper::fileUrl($this->data['bg_ret_url']); |
||||||
|
} |
||||||
|
if(empty($this->data['attach_nos'])) { |
||||||
|
throw new ParamsException('附件信息不能为空', 'attach_nos'); |
||||||
|
} |
||||||
|
if(empty($this->data['mer_priv'])) { |
||||||
|
throw new ParamsException('商户私有域不能为空', 'mer_priv'); |
||||||
|
} |
||||||
|
if(empty($this->data['extension'])) { |
||||||
|
throw new ParamsException('扩展域不能为空', 'extension'); |
||||||
|
} |
||||||
|
if(empty($this->data['legal_nationality'])) { |
||||||
|
throw new ParamsException('法人国籍不能为空', 'legal_nationality'); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
return $this->data; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
|
||||||
|
namespace Tansilu\HfPayLib\factory\object\onelevel; |
||||||
|
|
||||||
|
use Tansilu\HfPayLib\factory\object\ResponseObj; |
||||||
|
/** |
||||||
|
* 企业开户 |
||||||
|
* |
||||||
|
*/ |
||||||
|
class CompanyResponse |
||||||
|
{ |
||||||
|
use ResponseObj; |
||||||
|
} |
||||||
@ -0,0 +1,157 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
|
||||||
|
namespace Tansilu\HfPayLib\factory\object\onelevel; |
||||||
|
|
||||||
|
use Tansilu\HfPayLib\Constant; |
||||||
|
use Tansilu\HfPayLib\factory\object\RequestObj; |
||||||
|
use Tansilu\HfPayLib\exception\ParamsException; |
||||||
|
use Tansilu\HfPayLib\utils\StrFilterHelper; |
||||||
|
/** |
||||||
|
* @property string $order_date 订单日期 格式为YYYYMMDD,例如:20160307 |
||||||
|
* @property string $order_id 订单号 由商户生成,必须保证唯一,50位内的字母或数字组合 |
||||||
|
* @property string $acct_usage_type 账户用途 one-level-seller:一级市场卖家户;salesr-promoter:分销员户 |
||||||
|
* @property string $user_id 用户ID 外部用户id |
||||||
|
* @property string $apply_id 开户申请号 商户下唯一 |
||||||
|
* @property string $operate_type 操作类型 A:新增;M:修改 |
||||||
|
* @property string $solo_name 个体户名称 |
||||||
|
* @property string $business_code 营业执照注册号 企业的营业执照注册号 |
||||||
|
* @property string $license_start_date 证照起始日期 企业的营业证照起始日期,精确到年月日 |
||||||
|
* @property string $license_end_date 证照结束日期 企业的营业证照结束日期,精确到年月日,支持“永久” |
||||||
|
* @property string $solo_business_address 个体户经营地址 个体户的经营地址 |
||||||
|
* @property string $solo_reg_address 个体户注册地址 个体户的注册地址 |
||||||
|
* @property string $solo_fixed_telephone 个体户固定电话 企业的固定电话 |
||||||
|
* @property string $business_scope 经营范围 企业的经营范围 |
||||||
|
* @property string $legal_name 法人姓名 企业的法人姓名 |
||||||
|
* @property string $legal_id_card_type 法人证件类型 10:身份证;11:护照;12:军官证;13:士兵证;14:回乡证;15:户口本;16:警官证;17:台胞证;22:其他 |
||||||
|
* @property string $legal_id_card 法人证件号码 法人的证件号码,与证件类型对应,当用户类型为 2、3时只能为身份证 |
||||||
|
* @property string $legal_cert_start_date 法人证件起始日期 法人的证件起始日期,精确到年月日 |
||||||
|
* @property string $legal_cert_end_date 法人证件截止日期 法人的证件结束日期,精确到年月日,支持“永久” |
||||||
|
* @property string $legal_mobile 法人手机号码 法人的手机号码 |
||||||
|
* @property string $contact_name 企业联系人姓名 企业联系人的姓名 |
||||||
|
* @property string $contact_mobile 联系人手机号 联系人的手机号码 |
||||||
|
* @property string $contact_email 联系人邮箱 联系人的邮箱地址 |
||||||
|
* @property string $occupation 职业 01:国家机关、党群机关、企事业单位负责人;02:金融业从业人员;03:房地产业从业人员;04:商贸从业人员;05:自由职业者;06:科教文从业人员;07:制造业从业人员;08:卫生行业从业人员;09:IT业从业人员;10:农林牧渔劳动者;11:生产工作、运输工作和部分体力劳动者;12:退休人员;13:不便分类的其他劳动者 |
||||||
|
* @property string $bg_ret_url 商户后台应答地址 通过后台异步通知商户开户结果;注意:1)使用时不要包含中文 2)必须是外网地址 |
||||||
|
* @property string $attach_nos 附件信息 配合文件上传接口,使用,多个附件之间用逗号隔开”a,b”,当用户类型为 2、3时必填 |
||||||
|
* @property string $bank_acct_num 银行卡号 变长9-32位银行卡号,当用户类型为 2、3时必填 |
||||||
|
* @property string $bank_prov 省份 |
||||||
|
* @property string $bank_area 地区 |
||||||
|
* @property string $mer_priv 商户私有域 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
||||||
|
* @property string $extension 扩展域 |
||||||
|
* @property string $legal_nationality 法人国籍 |
||||||
|
*/ |
||||||
|
class PeddlarRequest |
||||||
|
{ |
||||||
|
use RequestObj; |
||||||
|
/** |
||||||
|
* @throws ParamsException |
||||||
|
*/ |
||||||
|
public function toParams(): array |
||||||
|
{ |
||||||
|
if (empty($this->data['order_date'])) { |
||||||
|
throw new ParamsException('订单日期不能为空', 'order_date'); |
||||||
|
} |
||||||
|
if (empty($this->data['order_id'])) { |
||||||
|
throw new ParamsException('订单号不能为空', 'order_id'); |
||||||
|
} |
||||||
|
if (empty($this->data['acct_usage_type'])) { |
||||||
|
throw new ParamsException('账户用途不能为空', 'acct_usage_type'); |
||||||
|
} |
||||||
|
if (empty($this->data['user_id'])) { |
||||||
|
throw new ParamsException('用户ID不能为空', 'user_id'); |
||||||
|
} |
||||||
|
if (empty($this->data['apply_id'])) { |
||||||
|
throw new ParamsException('开户申请号不能为空', 'apply_id'); |
||||||
|
} |
||||||
|
if(empty($this->data['operate_type'])) { |
||||||
|
throw new ParamsException('操作类型不能为空', 'operate_type'); |
||||||
|
} |
||||||
|
if(!in_array($this->data['operate_type'], [Constant::ONE_COM_OPERATE_TYPE_A, Constant::ONE_COM_OPERATE_TYPE_M])) { |
||||||
|
throw new ParamsException('操作类型不正确', 'operate_type'); |
||||||
|
} |
||||||
|
if (empty($this->data['solo_name'])) { |
||||||
|
throw new ParamsException('个体户名称不能为空', 'solo_name'); |
||||||
|
} |
||||||
|
if (empty($this->data['business_code'])) { |
||||||
|
throw new ParamsException('营业执照注册号不能为空', 'business_code'); |
||||||
|
} |
||||||
|
if (empty($this->data['license_start_date'])) { |
||||||
|
throw new ParamsException('证照起始日期不能为空', 'license_start_date'); |
||||||
|
} |
||||||
|
if (empty($this->data['license_end_date'])) { |
||||||
|
throw new ParamsException('证照结束日期不能为空', 'license_end_date'); |
||||||
|
} |
||||||
|
if (empty($this->data['solo_business_address'])) { |
||||||
|
throw new ParamsException('个体户经营地址不能为空', 'solo_business_address'); |
||||||
|
} |
||||||
|
if (empty($this->data['solo_reg_address'])) { |
||||||
|
throw new ParamsException('个体户注册地址不能为空', 'solo_reg_address'); |
||||||
|
} |
||||||
|
if (empty($this->data['solo_fixed_telephone'])) { |
||||||
|
throw new ParamsException('个体户固定电话不能为空', 'solo_fixed_telephone'); |
||||||
|
} |
||||||
|
if (empty($this->data['business_scope'])) { |
||||||
|
throw new ParamsException('经营范围不能为空', 'business_scope'); |
||||||
|
} |
||||||
|
if (empty($this->data['legal_name'])) { |
||||||
|
throw new ParamsException('法人姓名不能为空', 'legal_name'); |
||||||
|
} |
||||||
|
if (empty($this->data['legal_id_card_type'])) { |
||||||
|
throw new ParamsException('法人证件类型不能为空', 'legal_id_card_type'); |
||||||
|
} |
||||||
|
if (empty($this->data['legal_id_card'])) { |
||||||
|
throw new ParamsException('法人证件号码不能为空', 'legal_id_card'); |
||||||
|
} |
||||||
|
if (empty($this->data['legal_cert_start_date'])) { |
||||||
|
throw new ParamsException('法人证件起始日期不能为空', 'legal_cert_start_date'); |
||||||
|
} |
||||||
|
if (empty($this->data['legal_cert_end_date'])) { |
||||||
|
throw new ParamsException('法人证件截止日期不能为空', 'legal_cert_end_date'); |
||||||
|
} |
||||||
|
if (empty($this->data['legal_mobile'])) { |
||||||
|
throw new ParamsException('法人手机号码不能为空', 'legal_mobile'); |
||||||
|
} |
||||||
|
if (empty($this->data['contact_name'])) { |
||||||
|
throw new ParamsException('企业联系人姓名不能为空', 'contact_name'); |
||||||
|
} |
||||||
|
if (empty($this->data['contact_mobile'])) { |
||||||
|
throw new ParamsException('联系人手机号不能为空', 'contact_mobile'); |
||||||
|
} |
||||||
|
if (empty($this->data['contact_email'])) { |
||||||
|
throw new ParamsException('联系人邮箱不能为空', 'contact_email'); |
||||||
|
} |
||||||
|
if (empty($this->data['occupation'])) { |
||||||
|
throw new ParamsException('职业不能为空', 'occupation'); |
||||||
|
} |
||||||
|
|
||||||
|
if (empty($this->data['bank_acct_num'])) { |
||||||
|
throw new ParamsException('银行卡号不能为空', 'bank_acct_num'); |
||||||
|
} |
||||||
|
if (empty($this->data['bank_prov'])) { |
||||||
|
throw new ParamsException('省份不能为空', 'bank_prov'); |
||||||
|
} |
||||||
|
if (empty($this->data['bank_area'])) { |
||||||
|
throw new ParamsException('地区不能为空', 'bank_area'); |
||||||
|
} |
||||||
|
|
||||||
|
if (empty($this->data['legal_nationality'])) { |
||||||
|
throw new ParamsException('法人国籍不能为空', 'legal_nationality'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['attach_nos'])) { |
||||||
|
throw new ParamsException('附件信息不能为空', 'attach_nos'); |
||||||
|
} |
||||||
|
if(empty($this->data['mer_priv'])) { |
||||||
|
throw new ParamsException('商户私有域不能为空', 'mer_priv'); |
||||||
|
} |
||||||
|
if(empty($this->data['extension'])) { |
||||||
|
throw new ParamsException('扩展域不能为空', 'extension'); |
||||||
|
} |
||||||
|
if(!empty($this->data['bg_ret_url'])) { |
||||||
|
StrFilterHelper::fileUrl($this->data['bg_ret_url']); |
||||||
|
} |
||||||
|
|
||||||
|
return $this->data; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
|
||||||
|
namespace Tansilu\HfPayLib\factory\object\onelevel; |
||||||
|
|
||||||
|
use Tansilu\HfPayLib\factory\object\ResponseObj; |
||||||
|
/** |
||||||
|
* 商户开户 |
||||||
|
* |
||||||
|
*/ |
||||||
|
class PeddlarResponse |
||||||
|
{ |
||||||
|
use ResponseObj; |
||||||
|
} |
||||||
@ -0,0 +1,91 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
|
||||||
|
namespace Tansilu\HfPayLib\factory\object\onelevel; |
||||||
|
|
||||||
|
use Tansilu\HfPayLib\Constant; |
||||||
|
use Tansilu\HfPayLib\factory\object\RequestObj; |
||||||
|
use Tansilu\HfPayLib\exception\ParamsException; |
||||||
|
use Tansilu\HfPayLib\utils\StrFilterHelper; |
||||||
|
/** |
||||||
|
* @property string $order_date 订单日期 格式为YYYYMMDD,例如:20160307 |
||||||
|
* @property string $order_id 订单号 |
||||||
|
* @property string acct_usage_type 账户用途 one-level-seller:一级市场卖家户 salesr-promoter:分销员户 |
||||||
|
* @property string $user_id 用户ID |
||||||
|
* @property string $user_name 用户姓名 |
||||||
|
* @property string $id_card 证件号 |
||||||
|
* @property string $id_card_type 证件类型 |
||||||
|
* |
||||||
|
* @property string $user_mobile 手机号 |
||||||
|
* @property string $occupation 职业 |
||||||
|
* @property string $card_num 银行卡号 |
||||||
|
* |
||||||
|
* @property string $attach_nos 附件信息 |
||||||
|
|
||||||
|
|
||||||
|
* @property string $mer_priv 商户私有域 |
||||||
|
* @property string $extension 扩展域 |
||||||
|
* @property string $bg_ret_url 商户后台应答地址 |
||||||
|
|
||||||
|
*/ |
||||||
|
class PersonalRequest |
||||||
|
{ |
||||||
|
use RequestObj; |
||||||
|
/** |
||||||
|
* @throws ParamsException |
||||||
|
*/ |
||||||
|
public function toParams(): array |
||||||
|
{ |
||||||
|
if(empty($this->data['order_date'])) { |
||||||
|
throw new ParamsException('订单日期不能为空', 'order_date'); |
||||||
|
} |
||||||
|
if(empty($this->data['order_id'])) { |
||||||
|
throw new ParamsException('订单号不能为空', 'order_id'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['acct_usage_type'])) { |
||||||
|
throw new ParamsException('账户用途不能为空', 'acct_usage_type'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['user_id'])) { |
||||||
|
throw new ParamsException('用户ID不能为空', 'user_id'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['user_name'])) { |
||||||
|
throw new ParamsException('用户姓名不能为空', 'user_name'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['id_card'])) { |
||||||
|
throw new ParamsException('证件号不能为空', 'id_card'); |
||||||
|
} |
||||||
|
if(empty($this->data['id_card_type'])) { |
||||||
|
throw new ParamsException('证件类型不能为空', 'id_card_type'); |
||||||
|
} |
||||||
|
if(!in_array($this->data['id_card_type'], [Constant::ID_TYPE_CARD])) { |
||||||
|
throw new ParamsException('证件类型不支持', 'id_card_type'); |
||||||
|
} |
||||||
|
if(empty($this->data['user_mobile'])) { |
||||||
|
throw new ParamsException('手机号不能为空', 'user_mobile'); |
||||||
|
} |
||||||
|
if(empty($this->data['occupation'])) { |
||||||
|
throw new ParamsException('职业不能为空', 'occupation'); |
||||||
|
} |
||||||
|
if(empty($this->data['card_num'])) { |
||||||
|
throw new ParamsException('银行卡号不能为空', 'card_num'); |
||||||
|
} |
||||||
|
if(empty($this->data['attach_nos'])) { |
||||||
|
throw new ParamsException('附件信息不能为空', 'attach_nos'); |
||||||
|
} |
||||||
|
if(empty($this->data['mer_priv'])) { |
||||||
|
throw new ParamsException('商户私有域不能为空', 'mer_priv'); |
||||||
|
} |
||||||
|
if(empty($this->data['extension'])) { |
||||||
|
throw new ParamsException('扩展域不能为空', 'extension'); |
||||||
|
} |
||||||
|
if(!empty($this->data['bg_ret_url'])) { |
||||||
|
StrFilterHelper::fileUrl($this->data['bg_ret_url']); |
||||||
|
} |
||||||
|
|
||||||
|
return $this->data; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,13 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
|
||||||
|
namespace Tansilu\HfPayLib\factory\object\onelevel; |
||||||
|
use Tansilu\HfPayLib\factory\object\ResponseObj; |
||||||
|
/** |
||||||
|
* 个人开户 |
||||||
|
* |
||||||
|
*/ |
||||||
|
class PersonalResponse |
||||||
|
{ |
||||||
|
use ResponseObj; |
||||||
|
} |
||||||
@ -0,0 +1,73 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
|
||||||
|
namespace Tansilu\HfPayLib\factory\object\onelevel; |
||||||
|
|
||||||
|
|
||||||
|
use Tansilu\HfPayLib\factory\object\RequestObj; |
||||||
|
use Tansilu\HfPayLib\exception\ParamsException; |
||||||
|
|
||||||
|
/** |
||||||
|
* @property string $attach_no 附件编号 |
||||||
|
* @property string $trans_type 业务类型 3:企业开户 |
||||||
|
* 4:个体户开户 |
||||||
|
* 7:个人开户 |
||||||
|
* |
||||||
|
* @property string $attach_type 附件类型 1:营业执照注册号 |
||||||
|
* 2:组织结构代码证 |
||||||
|
* 3:税务登记证号 |
||||||
|
* 4:法人证件 |
||||||
|
* 5:开户银行许可证 |
||||||
|
* 6:统一社会信用代码 |
||||||
|
* 7:快捷协议 |
||||||
|
* 8:代扣协议 |
||||||
|
* 9:开户电子协议 |
||||||
|
* 10:法人证件反面 |
||||||
|
* 11:经营照片 |
||||||
|
* 12:经营照片(地址照片) |
||||||
|
* 13:经营照片(门头照片) |
||||||
|
* 14:结算卡正面 |
||||||
|
* 15:结算卡反面 |
||||||
|
* 16:经办人证件 |
||||||
|
* 21:个人身份证正面 |
||||||
|
* 22:个人身份证反面 |
||||||
|
* 23:用户平台合作协议 |
||||||
|
* 99.其他 |
||||||
|
* @property string $attach_desc 文件描述 |
||||||
|
* @property string $attach_file 文件 传入的中文文件名称为 UTF-8 字符集 URLEncode 编码后的字符串 |
||||||
|
* @property string $handle_type 上传类型 1新增 2 更新 默认为新增1 |
||||||
|
*/ |
||||||
|
|
||||||
|
|
||||||
|
class UploadRequest |
||||||
|
{ |
||||||
|
use RequestObj; |
||||||
|
/** |
||||||
|
* @throws ParamsException |
||||||
|
*/ |
||||||
|
public function toParams(): array |
||||||
|
{ |
||||||
|
if(empty($this->data['attach_no'])) { |
||||||
|
throw new ParamsException('附件编号不能为空', 'attach_no'); |
||||||
|
} |
||||||
|
if(empty($this->data['trans_type'])) { |
||||||
|
throw new ParamsException('业务类型不能为空', 'trans_type'); |
||||||
|
} |
||||||
|
if(empty($this->data['attach_type'])) { |
||||||
|
throw new ParamsException('附件类型不能为空', 'attach_type'); |
||||||
|
} |
||||||
|
if(empty($this->data['attach_desc'])) { |
||||||
|
throw new ParamsException('文件描述不能为空', 'attach_desc'); |
||||||
|
} |
||||||
|
|
||||||
|
if(empty($this->data['attach_file'])) { |
||||||
|
throw new ParamsException('文件不能为空', 'attach_file'); |
||||||
|
} |
||||||
|
if(empty($this->data['handle_type'])) { |
||||||
|
throw new ParamsException('上传类型不能为空', 'handle_type'); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
return $this->data; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,13 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
|
||||||
|
namespace Tansilu\HfPayLib\factory\object\onelevel; |
||||||
|
use Tansilu\HfPayLib\factory\object\ResponseObj; |
||||||
|
/** |
||||||
|
* 上传文件 |
||||||
|
* |
||||||
|
*/ |
||||||
|
class UploadResponse |
||||||
|
{ |
||||||
|
use ResponseObj; |
||||||
|
} |
||||||
Loading…
Reference in new issue