feat(shopro_huifu): 完善汇付 onboard 流程中的银行卡信息处理 - 根据账户类型和银行账户类型动态设置持卡人姓名(card_name) - 个人账户时 card_name 与 name 保持一致 - 企业/个体户对私结算时 card_name 与 legal_name 保持一致 - 优化错误信息提示,针对持卡人姓名和银行卡类型错误提供明确指引 - 修复个人进件银行卡户名校验不一致的问题 ```
54 行
2.3 KiB
PHP
54 行
2.3 KiB
PHP
<?php
|
||
|
||
namespace addons\shopro_huifu\library\onboard;
|
||
|
||
class HuifuOnboardError
|
||
{
|
||
/**
|
||
* 将汇付/系统异常转为用户可读提示(去掉 resp_code 等技术字段)
|
||
*/
|
||
public static function translate($message)
|
||
{
|
||
$msg = trim((string) $message);
|
||
if ($msg === '') {
|
||
return '进件提交失败,请稍后重试';
|
||
}
|
||
|
||
$lower = strtolower($msg);
|
||
if (strpos($msg, 'certEndDate') !== false
|
||
|| strpos($msg, '证件有效期') !== false
|
||
|| strpos($msg, '到期日') !== false) {
|
||
return '身份证/证件有效期须晚于今天;长期有效请选择 2099-12-31';
|
||
}
|
||
if (strpos($msg, 'certBeginDate') !== false || strpos($msg, '开始日期') !== false) {
|
||
return '证件开始日期填写有误,请与身份证一致';
|
||
}
|
||
if (strpos($msg, 'branch') !== false || strpos($msg, '联行') !== false) {
|
||
return '开户银行支行信息有误,请重新搜索选择支行';
|
||
}
|
||
if (strpos($msg, 'branch_code') !== false) {
|
||
return '请选择正确的开户银行支行';
|
||
}
|
||
if (strpos($msg, '图片') !== false || strpos($lower, 'picture') !== false || strpos($lower, 'file_id') !== false) {
|
||
return '证件或银行卡图片上传失败,请重新上传 jpg/png 清晰照片';
|
||
}
|
||
if (strpos($msg, '持卡人姓名') !== false || strpos($msg, '法人姓名') !== false) {
|
||
return '银行卡户名须与身份证姓名完全一致(个人进件 name 与 card_name 相同)';
|
||
}
|
||
if (strpos($msg, 'cardType') !== false || strpos($msg, '对私结算') !== false) {
|
||
return '个人进件仅支持对私银行卡,请确认结算账户类型为对私';
|
||
}
|
||
|
||
if (preg_match('/基础参数校验失败[::](.+?)(?:,resp_code|$)/u', $msg, $m)) {
|
||
return '资料校验未通过:' . trim($m[1]);
|
||
}
|
||
|
||
$msg = preg_replace('/,resp_code=[^,]+/u', '', $msg);
|
||
$msg = preg_replace('/,trans_stat=[^,]+/u', '', $msg);
|
||
$msg = str_replace('汇付业务失败,', '', $msg);
|
||
$msg = str_replace('汇付 SDK 请求异常:', '', $msg);
|
||
|
||
return $msg !== '' ? $msg : '进件提交失败,请检查资料后重试';
|
||
}
|
||
}
|