两种通道都增加身份证号必填
This commit is contained in:
@@ -52,8 +52,7 @@
|
||||
<a-tag :color="item.passageway === 'pingan' ? 'blue' : 'orange'">
|
||||
{{ item.passageway === 'pingan' ? '平安银行' : '支付宝企业码' }}
|
||||
</a-tag>
|
||||
<div v-if="item.passageway === 'pingan'" class="sub">要求实名,下单须传 idCard</div>
|
||||
<div v-else class="sub">
|
||||
<div v-if="item.passageway === 'alipay'" class="sub">
|
||||
机构号:<span :class="{ 'text-red': !item.institution_id }">{{ item.institution_id || '未填,无法下发' }}</span>
|
||||
</div>
|
||||
<div v-if="item.bound_passageway" class="sub">已开通通道:{{ item.bound_passageway }}</div>
|
||||
@@ -115,7 +114,8 @@
|
||||
<a-radio-button value="pingan">平安银行</a-radio-button>
|
||||
</a-radio-group>
|
||||
<div class="form-item-help">
|
||||
<p class="extra">平安银行通道要求实名,下单接口的 idCard(司机身份证号)变为必填。</p>
|
||||
<p class="extra">两个通道都要求实名,下单接口的 idCard(司机身份证号)均为必填。</p>
|
||||
<p class="extra">支付宝企业码通道还需要填写下方的机构号。</p>
|
||||
</div>
|
||||
</a-form-item>
|
||||
<a-form-item label="机构号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
|
||||
@@ -86,7 +86,7 @@ class OilCard extends Controller
|
||||
$oilCardType = $data['oilCardType'] ?? '';
|
||||
// 企油通:司机姓名(下单平台必传,用于运单油费下发)
|
||||
$driverName = trim((string)($data['name'] ?? ''));
|
||||
// 企油通:司机身份证号。平安银行通道要求实名必传,支付宝企业码通道可不传
|
||||
// 企油通:司机身份证号。两个支付通道都要求实名,必传
|
||||
$idCard = strtoupper(trim((string)($data['idCard'] ?? '')));
|
||||
// 请求参数orgNo与请求头appKey不存在对应关系
|
||||
if($partners['orgNo'] != $orgNo){
|
||||
@@ -104,12 +104,12 @@ class OilCard extends Controller
|
||||
$this->saveLog('share 未匹配到可用的企油通企业,partners_id=' . $partners['partners_id']);
|
||||
return $this->oilRenderError('99','9999', '', '系统未配置可用企业,请联系平台');
|
||||
}
|
||||
// 身份证号:传了就必须合法;该企业当前通道要求实名时不传直接拒单
|
||||
if($idCard !== '' && !preg_match('/^\d{17}[\dX]$/', $idCard)){
|
||||
return $this->oilRenderError('12','0013', '', 'idCard 身份证号格式不正确(18位)');
|
||||
// 身份证号:两个支付通道都要求实名,必传且必须合法
|
||||
if($idCard === ''){
|
||||
return $this->oilRenderError('12','0001', '', '缺少必填请求参数 idCard(司机身份证号)');
|
||||
}
|
||||
if($idCard === '' && $enterprise->requireIdCard()){
|
||||
return $this->oilRenderError('12','0001', '', '缺少必填请求参数 idCard(司机身份证号,当前支付通道要求实名)');
|
||||
if(!preg_match('/^\d{17}[\dX]$/', $idCard)){
|
||||
return $this->oilRenderError('12','0013', '', 'idCard 身份证号格式不正确(18位)');
|
||||
}
|
||||
// 金额:由下单平台直接传入(单位:元,最多两位小数)
|
||||
if($amount === '' || !preg_match('/^\d{1,8}(\.\d{1,2})?$/', (string)$amount) || (float)$amount <= 0){
|
||||
|
||||
@@ -89,12 +89,6 @@ class Enterprise extends BaseModel
|
||||
return self::PASSAGEWAY_NAME[$this->getData('passageway')] ?? '';
|
||||
}
|
||||
|
||||
/** 当前通道是否要求司机身份证号(平安银行要求实名) */
|
||||
public function requireIdCard(): bool
|
||||
{
|
||||
return $this->getData('passageway') === 'pingan';
|
||||
}
|
||||
|
||||
/** 状态中文(访问器,后台列表直接可用) */
|
||||
public function getStatusTextAttr($value, $data): string
|
||||
{
|
||||
|
||||
@@ -69,7 +69,7 @@ class QytConfig
|
||||
* 叠加企业级参数,得到某个企业实际使用的完整配置
|
||||
*
|
||||
* @param EnterpriseModel|array $enterprise
|
||||
* @return array 额外带 enterprise_id / enterprise_name / passageway_code / require_id_card
|
||||
* @return array 额外带 enterprise_id / enterprise_name / passageway_code / passageway_name
|
||||
*/
|
||||
public static function forEnterprise($enterprise): array
|
||||
{
|
||||
@@ -86,8 +86,6 @@ class QytConfig
|
||||
$conf['passageway_code'] = EnterpriseModel::PASSAGEWAY_CODE[$passageway];
|
||||
$conf['passageway_name'] = EnterpriseModel::PASSAGEWAY_NAME[$passageway];
|
||||
$conf['institution_id'] = (string) ($e['institution_id'] ?? '');
|
||||
// 平安银行通道要求实名
|
||||
$conf['require_id_card'] = $passageway === 'pingan';
|
||||
|
||||
// 以下留空则回落接入方级默认值
|
||||
foreach (['app_id', 'no_prefix', 'voucher_name'] as $k) {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
// | 7.10 消费回调由 app\api\controller\QytNotify 接收
|
||||
// |
|
||||
// | 通道:alipay=支付宝企业码(passageway=1) / pingan=平安银行(passageway=2),
|
||||
// | 通道开关存在企业信息里。平安通道要求实名,7.7 必传 id_card。
|
||||
// | 通道开关存在企业信息里。两个通道都要求实名,7.7 必传 id_card。
|
||||
// | 金额:对外「元」入参,7.7 内部换算为「分」。
|
||||
// |
|
||||
// | ⚠️ 7.7 是异步接口,返回成功只代表【受理】,真实发放结果需用 7.8
|
||||
@@ -108,12 +108,6 @@ class QytOil extends BaseService
|
||||
return (int) ($this->conf['passageway_code'] ?? 1);
|
||||
}
|
||||
|
||||
/** 当前通道是否必须上送司机身份证号(平安银行=是) */
|
||||
public function requireIdCard(): bool
|
||||
{
|
||||
return !empty($this->conf['require_id_card']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成企油通全平台唯一编号(加企业前缀),确定性派生 -> 重试保持一致
|
||||
* batch_no / waybill_no / waybill_no_code 都是【全平台唯一】而非接入方内唯一,
|
||||
@@ -131,7 +125,7 @@ class QytOil extends BaseService
|
||||
// ================================================================
|
||||
|
||||
/**
|
||||
* @param array $data ['batch_no','waybill_no','waybill_no_code','mobile','name','amount'(元),'id_card'(平安通道必填)]
|
||||
* @param array $data ['batch_no','waybill_no','waybill_no_code','mobile','name','amount'(元),'id_card']
|
||||
* @return array 归一化 ['code'=>'00'|其它, 'data'=>[], 'message'=>'', 'dup_batch'=>bool]
|
||||
*/
|
||||
public function createAndSendQuota(array $data): array
|
||||
@@ -144,13 +138,15 @@ class QytOil extends BaseService
|
||||
return $this->fail("企业[{$this->enterpriseName()}]未配置机构号(institution_id),支付宝企业码通道无法下发");
|
||||
}
|
||||
|
||||
// 两个通道都要求实名,id_card 无条件必传
|
||||
$idCard = trim((string) ($data['id_card'] ?? ''));
|
||||
if ($this->requireIdCard() && $idCard === '') {
|
||||
return $this->fail("通道[{$this->channelName()}]要求实名,缺少司机身份证号(idCard)");
|
||||
if ($idCard === '') {
|
||||
return $this->fail('缺少司机身份证号(idCard),两个支付通道都要求实名');
|
||||
}
|
||||
|
||||
$employee = [
|
||||
'mobile' => $data['mobile'],
|
||||
'id_card' => $idCard,
|
||||
'name' => $data['name'],
|
||||
'quota_amount' => self::yuanToFen($data['amount']), // 分
|
||||
'voucher_name' => $this->conf['voucher_name'],
|
||||
@@ -158,10 +154,6 @@ class QytOil extends BaseService
|
||||
'effective_end' => '', // 空=长期有效
|
||||
'waybill_no_code' => $data['waybill_no_code'],
|
||||
];
|
||||
// 身份证号仅在要求实名的通道上送,避免向不需要的通道多传敏感信息
|
||||
if ($this->requireIdCard()) {
|
||||
$employee['id_card'] = $idCard;
|
||||
}
|
||||
|
||||
$params = [
|
||||
'batch_no' => $data['batch_no'],
|
||||
|
||||
@@ -110,19 +110,18 @@ class PartnersQueue extends Command
|
||||
$waybillNoCode = $order['waybill_no_code'] ?: $qyt->no('C', $seed);
|
||||
$name = trim((string) $order['driver_name']);
|
||||
$idCard = trim((string) $order['id_card']);
|
||||
if ($name === '' || $order['mobile'] === '') {
|
||||
$failed = Db::name('partners_order')->where('order_id', $orderId)->where('oil_status_zsy', 0)
|
||||
->update(['oil_status_zsy' => 3, 'oil_text' => '缺司机姓名/手机号,无法发放', 'update_time' => time()]);
|
||||
$failed && $this->refundBalance($order);
|
||||
return;
|
||||
}
|
||||
// 通道切换后,下单时不需要身份证的老单可能落到实名通道上:
|
||||
// 直接判失败退款,不做无意义重试(重试也永远补不到身份证号)
|
||||
if ($qyt->requireIdCard() && $idCard === '') {
|
||||
// 两个通道都要求实名,姓名/手机号/身份证号缺一不可。
|
||||
// 这类单直接判失败退款,不做无意义重试(重试也永远补不齐这些字段),
|
||||
// 典型来源是改造前建的历史单,它们没有 id_card。
|
||||
$missing = [];
|
||||
$name === '' && $missing[] = '司机姓名';
|
||||
$order['mobile'] === '' && $missing[] = '手机号';
|
||||
$idCard === '' && $missing[] = '身份证号';
|
||||
if ($missing) {
|
||||
$failed = Db::name('partners_order')->where('order_id', $orderId)->where('oil_status_zsy', 0)
|
||||
->update([
|
||||
'oil_status_zsy' => 3,
|
||||
'oil_text' => '当前通道(' . $qyt->channelName() . ')要求实名,该单缺司机身份证号',
|
||||
'oil_text' => '缺' . implode('/', $missing) . ',无法发放',
|
||||
'update_time' => time(),
|
||||
]);
|
||||
$failed && $this->refundBalance($order);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
[program:qyt-partners-queue]
|
||||
command=/www/server/php/74/bin/php think partners:queue
|
||||
directory=/www/wwwroot/www.hmzkw.com
|
||||
directory=/www/wwwroot/oil
|
||||
user=www
|
||||
numprocs=1
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
@@ -39,7 +39,7 @@ stdout_logfile_backups=5
|
||||
|
||||
[program:qyt-status-queue]
|
||||
command=/www/server/php/74/bin/php think qyt:status
|
||||
directory=/www/wwwroot/www.hmzkw.com
|
||||
directory=/www/wwwroot/oil
|
||||
user=www
|
||||
numprocs=1
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
@@ -55,7 +55,7 @@ stdout_logfile_backups=5
|
||||
|
||||
[program:qyt-callback-queue]
|
||||
command=/www/server/php/74/bin/php think callback:queue
|
||||
directory=/www/wwwroot/www.hmzkw.com
|
||||
directory=/www/wwwroot/oil
|
||||
user=www
|
||||
numprocs=1
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
@@ -71,7 +71,7 @@ stdout_logfile_backups=5
|
||||
|
||||
[program:qyt-notify-queue]
|
||||
command=/www/server/php/74/bin/php think notify:queue
|
||||
directory=/www/wwwroot/www.hmzkw.com
|
||||
directory=/www/wwwroot/oil
|
||||
user=www
|
||||
numprocs=1
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* 它做五件事:
|
||||
* 1) 从数据库读取合作商(appKey / RSA 私钥 / orgNo)
|
||||
* 2) 展示本次下单会用哪个【企油通企业】及其支付通道(口径同后端:
|
||||
* 合作商绑定的企业 -> 默认企业),含是否要求身份证号、机构号是否已配置
|
||||
* 合作商绑定的企业 -> 默认企业),含机构号是否已配置、企业审核状态
|
||||
* 3) 按「慧明宝」规范组装 RSA+AES 信封并调用我方入站接口
|
||||
* 4) 展示明文请求 / 待签串 / 密文报文 / 服务端响应
|
||||
* 5) act=notify_receiver 作为回调接收端,解密+验签我方推送的
|
||||
@@ -139,7 +139,6 @@ function qytConf($root, $partner)
|
||||
$ent['passageway'] = $pw;
|
||||
$ent['passageway_code'] = $pw === 'pingan' ? 2 : 1;
|
||||
$ent['passageway_name'] = $pw === 'pingan' ? '平安银行' : '支付宝企业码';
|
||||
$ent['require_id_card'] = $pw === 'pingan';
|
||||
// 企业可覆盖编号前缀
|
||||
if (trim((string)$ent['no_prefix']) !== '') {
|
||||
$conf['no_prefix'] = trim((string)$ent['no_prefix']);
|
||||
@@ -325,7 +324,7 @@ function defaultBody($act, $orgNo)
|
||||
'saleOrderNo' => $saleOrderNo,
|
||||
'oilCardType' => 'zsy_ticket',
|
||||
];
|
||||
// 司机身份证号:平安银行通道必传,支付宝企业码通道可不传。
|
||||
// 司机身份证号:两个通道都必传。
|
||||
// 加 &noIdCard=1 可故意不传,用来验证实名通道下的 0001 拒单是否生效。
|
||||
if (empty($_GET['noIdCard'])) {
|
||||
$body['idCard'] = isset($_GET['idCard']) ? $_GET['idCard'] : '450103199001011238';
|
||||
@@ -410,7 +409,6 @@ if (PHP_SAPI === 'cli') {
|
||||
. ($qconf['from_default'] ? ' [默认企业]' : ' [合作商绑定]') . "
|
||||
";
|
||||
echo '当前通道:' . $ent['passageway_name'] . '(passageway=' . $ent['passageway_code'] . ')'
|
||||
. ' 身份证号' . ($ent['require_id_card'] ? '必传' : '可不传')
|
||||
. ' 机构号' . ($ent['institution_id'] !== '' ? '已配置' : '【未配置,下发必失败】')
|
||||
. ' 企业状态' . $ent['status'] . "
|
||||
";
|
||||
@@ -507,11 +505,7 @@ $curOil = isset($_GET['oilCardNo']) ? $_GET['oilCardNo'] : '';
|
||||
<b><?php echo htmlspecialchars($ent['passageway_name']); ?></b>(passageway=<?php echo (int)$ent['passageway_code']; ?>)
|
||||
</td></tr>
|
||||
<tr><th>司机身份证号</th><td>
|
||||
<?php if ($ent['require_id_card']): ?>
|
||||
<span class="err">必传</span> 该通道要求实名,下单不传 idCard 会返回 0001 拒单
|
||||
<?php else: ?>
|
||||
<span class="ok">可不传</span> 该通道不要求实名,传了也不会上送给企油通
|
||||
<?php endif; ?>
|
||||
<span class="err">必传</span> 两个通道都要求实名,下单不传 idCard 会返回 0001 拒单
|
||||
</td></tr>
|
||||
<tr><th>机构号</th><td>
|
||||
<?php if ($ent['institution_id'] !== ''): ?><span class="ok">已配置</span>
|
||||
@@ -542,9 +536,7 @@ $curOil = isset($_GET['oilCardNo']) ? $_GET['oilCardNo'] : '';
|
||||
<div class="sub" style="margin:6px 0 0">
|
||||
②③ 需要 oilCardNo:先点①拿到后会自动带上。<br>
|
||||
① 可自定义参数:<code>?act=share&amount=50.00&mobile=13800000002&name=李四&idCard=110101199003071233</code><br>
|
||||
⑤ 用来验证实名校验:<?php echo !$ent ? '当前无可用企业' : ($ent['require_id_card']
|
||||
? '当前是<b>' . htmlspecialchars($ent['passageway_name']) . '</b>通道,应当返回 <b>0001</b> 拒单'
|
||||
: '当前是<b>' . htmlspecialchars($ent['passageway_name']) . '</b>通道,不要求实名,应当<b>正常下单成功</b>'); ?>
|
||||
⑤ 用来验证实名校验:两个通道都要求实名,应当返回 <b>0001</b> 拒单
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
[data-v-f551b524] .ant-form-item-control{padding-left:10px}[data-v-f551b524] .ant-form-item-control .ant-form-item-control{padding-left:0}.ant-divider[data-v-f551b524]{margin-top:60px!important}.ant-input-number[data-v-f551b524]{width:160px}.input-text_right[data-v-f551b524]{margin-left:10px}.radio-item[data-v-f551b524]{margin-bottom:16px}.tips-alert[data-v-5e958e96]{margin-bottom:20px}.search-form[data-v-5e958e96]{display:inline-block;margin-left:16px}.sub[data-v-5e958e96]{color:#999;font-size:12px;line-height:1.7}.ml-6[data-v-5e958e96]{margin-left:6px}.text-red[data-v-5e958e96]{color:#ff4d4f}.text-grey[data-v-5e958e96]{color:#bbb}[data-v-7e59f1c6] .ant-form-item-control{padding-left:10px}[data-v-7e59f1c6] .ant-form-item-control .ant-form-item-control{padding-left:0}.tips-alert[data-v-7e59f1c6]{margin-bottom:28px}.input-short[data-v-7e59f1c6]{width:160px}.input-code[data-v-7e59f1c6]{width:30%}.input-inst[data-v-7e59f1c6]{width:70%}[data-v-01d8132a] .ant-form-item-control{padding-left:10px}[data-v-01d8132a] .ant-form-item-control .ant-form-item-control{padding-left:0}.ant-divider[data-v-01d8132a]{margin-top:60px!important}.ant-input-number[data-v-01d8132a]{width:160px}.input-text_right[data-v-01d8132a]{margin-left:10px}.radio-item[data-v-01d8132a]{margin-bottom:16px}[data-v-dd6519b2] .ant-form-item-control{padding-left:10px}[data-v-dd6519b2] .ant-form-item-control .ant-form-item-control{padding-left:0}.ant-form-item[data-v-12cd9802]{margin-bottom:10px}[data-v-12cd9802] .ant-form-item-control{padding-left:10px}[data-v-12cd9802] .ant-form-item-control .ant-form-item-control{padding-left:0}.ant-divider[data-v-12cd9802]{margin-top:50px!important}
|
||||
[data-v-f551b524] .ant-form-item-control{padding-left:10px}[data-v-f551b524] .ant-form-item-control .ant-form-item-control{padding-left:0}.ant-divider[data-v-f551b524]{margin-top:60px!important}.ant-input-number[data-v-f551b524]{width:160px}.input-text_right[data-v-f551b524]{margin-left:10px}.radio-item[data-v-f551b524]{margin-bottom:16px}.tips-alert[data-v-4e165f10]{margin-bottom:20px}.search-form[data-v-4e165f10]{display:inline-block;margin-left:16px}.sub[data-v-4e165f10]{color:#999;font-size:12px;line-height:1.7}.ml-6[data-v-4e165f10]{margin-left:6px}.text-red[data-v-4e165f10]{color:#ff4d4f}.text-grey[data-v-4e165f10]{color:#bbb}[data-v-7e59f1c6] .ant-form-item-control{padding-left:10px}[data-v-7e59f1c6] .ant-form-item-control .ant-form-item-control{padding-left:0}.tips-alert[data-v-7e59f1c6]{margin-bottom:28px}.input-short[data-v-7e59f1c6]{width:160px}.input-code[data-v-7e59f1c6]{width:30%}.input-inst[data-v-7e59f1c6]{width:70%}[data-v-01d8132a] .ant-form-item-control{padding-left:10px}[data-v-01d8132a] .ant-form-item-control .ant-form-item-control{padding-left:0}.ant-divider[data-v-01d8132a]{margin-top:60px!important}.ant-input-number[data-v-01d8132a]{width:160px}.input-text_right[data-v-01d8132a]{margin-left:10px}.radio-item[data-v-01d8132a]{margin-bottom:16px}[data-v-dd6519b2] .ant-form-item-control{padding-left:10px}[data-v-dd6519b2] .ant-form-item-control .ant-form-item-control{padding-left:0}.ant-form-item[data-v-12cd9802]{margin-bottom:10px}[data-v-12cd9802] .ant-form-item-control{padding-left:10px}[data-v-12cd9802] .ant-form-item-control .ant-form-item-control{padding-left:0}.ant-divider[data-v-12cd9802]{margin-top:50px!important}
|
||||
@@ -1 +1 @@
|
||||
<!DOCTYPE html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>商家管理中心</title><style>#loading-mask{position:fixed;left:0;top:0;height:100%;width:100%;background:#fff;user-select:none;z-index:9999;overflow:hidden}.loading-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-100%)}.loading-dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:64px;width:64px;height:64px;box-sizing:border-box}.loading-dot i{width:22px;height:22px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.loading-dot i:nth-child(1){top:0;left:0}.loading-dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.loading-dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.loading-dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style><link href="css/card.83fb7f11.css" rel="prefetch"><link href="css/card~content~goods~manage~market~order~page~setting~store~user.bd86e290.css" rel="prefetch"><link href="css/card~content~goods~manage~market~page~store~user.06d71c34.css" rel="prefetch"><link href="css/client.6fbe4ba8.css" rel="prefetch"><link href="css/content.c53a1699.css" rel="prefetch"><link href="css/exception.37940980.css" rel="prefetch"><link href="css/goods.50f80ed8.css" rel="prefetch"><link href="css/index.ff363719.css" rel="prefetch"><link href="css/market.cc3678af.css" rel="prefetch"><link href="css/order.6124dbc9.css" rel="prefetch"><link href="css/page.2d2d2056.css" rel="prefetch"><link href="css/passport.68f7ba8b.css" rel="prefetch"><link href="css/setting.6880c060.css" rel="prefetch"><link href="css/store.3d002fc4.css" rel="prefetch"><link href="css/user.21b3449e.css" rel="prefetch"><link href="js/card.c3d0e7b1.js" rel="prefetch"><link href="js/card~content~goods~manage~market~order~page~setting~store~user.193a5813.js" rel="prefetch"><link href="js/card~content~goods~manage~market~page~store~user.a13c007a.js" rel="prefetch"><link href="js/client.58c03cfb.js" rel="prefetch"><link href="js/content.fd60d4aa.js" rel="prefetch"><link href="js/exception.d3b6b1e8.js" rel="prefetch"><link href="js/goods.e491ade3.js" rel="prefetch"><link href="js/goods~order.d9a20aa1.js" rel="prefetch"><link href="js/index.874a9e0d.js" rel="prefetch"><link href="js/lang-zh-CN.303b0ef5.js" rel="prefetch"><link href="js/manage.3485dc4a.js" rel="prefetch"><link href="js/market.db25da7c.js" rel="prefetch"><link href="js/order.bc3eac19.js" rel="prefetch"><link href="js/page.24dbd519.js" rel="prefetch"><link href="js/passport.4036de85.js" rel="prefetch"><link href="js/setting.674a3406.js" rel="prefetch"><link href="js/store.e6d3d371.js" rel="prefetch"><link href="js/user.dde70d3c.js" rel="prefetch"><link href="css/app.ce663112.css" rel="preload" as="style"><link href="css/chunk-vendors.43940245.css" rel="preload" as="style"><link href="js/app.2cb9ad29.js" rel="preload" as="script"><link href="js/chunk-vendors.d8af00dc.js" rel="preload" as="script"><link href="css/chunk-vendors.43940245.css" rel="stylesheet"><link href="css/app.ce663112.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"><div id="loading-mask"><div class="loading-wrapper"><span class="loading-dot loading-dot-spin"><i></i><i></i><i></i><i></i></span></div></div></div><script src="config.js"></script><script src="js/chunk-vendors.d8af00dc.js"></script><script src="js/app.2cb9ad29.js"></script></body></html>
|
||||
<!DOCTYPE html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>商家管理中心</title><style>#loading-mask{position:fixed;left:0;top:0;height:100%;width:100%;background:#fff;user-select:none;z-index:9999;overflow:hidden}.loading-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-100%)}.loading-dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:64px;width:64px;height:64px;box-sizing:border-box}.loading-dot i{width:22px;height:22px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.loading-dot i:nth-child(1){top:0;left:0}.loading-dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.loading-dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.loading-dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style><link href="css/card.83fb7f11.css" rel="prefetch"><link href="css/card~content~goods~manage~market~order~page~setting~store~user.bd86e290.css" rel="prefetch"><link href="css/card~content~goods~manage~market~page~store~user.06d71c34.css" rel="prefetch"><link href="css/client.6fbe4ba8.css" rel="prefetch"><link href="css/content.c53a1699.css" rel="prefetch"><link href="css/exception.37940980.css" rel="prefetch"><link href="css/goods.50f80ed8.css" rel="prefetch"><link href="css/index.ff363719.css" rel="prefetch"><link href="css/market.cc3678af.css" rel="prefetch"><link href="css/order.6124dbc9.css" rel="prefetch"><link href="css/page.2d2d2056.css" rel="prefetch"><link href="css/passport.68f7ba8b.css" rel="prefetch"><link href="css/setting.a8d19305.css" rel="prefetch"><link href="css/store.3d002fc4.css" rel="prefetch"><link href="css/user.21b3449e.css" rel="prefetch"><link href="js/card.c3d0e7b1.js" rel="prefetch"><link href="js/card~content~goods~manage~market~order~page~setting~store~user.193a5813.js" rel="prefetch"><link href="js/card~content~goods~manage~market~page~store~user.a13c007a.js" rel="prefetch"><link href="js/client.58c03cfb.js" rel="prefetch"><link href="js/content.fd60d4aa.js" rel="prefetch"><link href="js/exception.d3b6b1e8.js" rel="prefetch"><link href="js/goods.e491ade3.js" rel="prefetch"><link href="js/goods~order.d9a20aa1.js" rel="prefetch"><link href="js/index.874a9e0d.js" rel="prefetch"><link href="js/lang-zh-CN.303b0ef5.js" rel="prefetch"><link href="js/manage.3485dc4a.js" rel="prefetch"><link href="js/market.db25da7c.js" rel="prefetch"><link href="js/order.bc3eac19.js" rel="prefetch"><link href="js/page.24dbd519.js" rel="prefetch"><link href="js/passport.4036de85.js" rel="prefetch"><link href="js/setting.c3c97868.js" rel="prefetch"><link href="js/store.e6d3d371.js" rel="prefetch"><link href="js/user.dde70d3c.js" rel="prefetch"><link href="css/app.77281994.css" rel="preload" as="style"><link href="css/chunk-vendors.eb75505e.css" rel="preload" as="style"><link href="js/app.b2cf6a22.js" rel="preload" as="script"><link href="js/chunk-vendors.d8af00dc.js" rel="preload" as="script"><link href="css/chunk-vendors.eb75505e.css" rel="stylesheet"><link href="css/app.77281994.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"><div id="loading-mask"><div class="loading-wrapper"><span class="loading-dot loading-dot-spin"><i></i><i></i><i></i><i></i></span></div></div></div><script src="config.js"></script><script src="js/chunk-vendors.d8af00dc.js"></script><script src="js/app.b2cf6a22.js"></script></body></html>
|
||||
Binary file not shown.
+1
-1
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
2026-09-10 21:27:51 [配置错误] 缺少司机身份证号(idCard),两个支付通道都要求实名
|
||||
2026-09-10 21:27:51 [配置错误] 缺少司机身份证号(idCard),两个支付通道都要求实名
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user