trustbase-seller-backend 0.2.9 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/routes/onboard.html +43 -7
- package/test-onboard-applyment.js +7 -1
package/package.json
CHANGED
package/routes/onboard.html
CHANGED
|
@@ -196,12 +196,13 @@ img.auprev{display:none;width:100%;max-height:140px;object-fit:cover;border-radi
|
|
|
196
196
|
<div class="afield"><label for="a_merchant_name">营业执照名称</label><input id="a_merchant_name" placeholder="全称, 与执照一致"></div>
|
|
197
197
|
<div class="afield"><label for="a_license_number">统一社会信用代码</label><input id="a_license_number" placeholder="18 位, 9 开头"></div>
|
|
198
198
|
<div class="afield"><label for="a_service_phone">客服电话</label><input id="a_service_phone" placeholder="交易记录向买家展示"></div>
|
|
199
|
-
<div class="afield"><label for="a_settlement_id"
|
|
199
|
+
<div class="afield"><label for="a_settlement_id">经营类目 (微信行业编码 MCC)</label>
|
|
200
|
+
<input id="a_settlement_filter" placeholder="搜索: 编码或名称 (如 5732 / 电子)" style="margin-bottom:6px">
|
|
200
201
|
<select id="a_settlement_id">
|
|
201
|
-
<option value="
|
|
202
|
-
<option value="
|
|
203
|
-
|
|
204
|
-
|
|
202
|
+
<option value="">请选择经营类目</option>
|
|
203
|
+
<option value="__MANUAL__">手动输入编码</option>
|
|
204
|
+
</select>
|
|
205
|
+
<input id="a_settlement_manual" class="amanual" placeholder="4 位 MCC 编码, 如: 5311" style="display:none"></div>
|
|
205
206
|
<div class="afield afield-full"><label for="a_qualification_type">类目资质描述 <span class="aopt">通用类目留空</span></label><input id="a_qualification_type" placeholder="通用零售/餐饮留空即可;特殊行业(医疗/教育/食品)需对应资质"></div>
|
|
206
207
|
</div>
|
|
207
208
|
</div>
|
|
@@ -932,12 +933,47 @@ async function restoreIdentity(){
|
|
|
932
933
|
(证件缩略图预览已于二重框修复时并入主脚本 mountApplyUpload 槽位双态) ===== */
|
|
933
934
|
(function(){
|
|
934
935
|
// ⓪ 编码字段下拉 (2026-10-03 xiaomu: 手填编码易被微信秒拒 → 下拉)
|
|
935
|
-
// 经营类目 ↔ 主体类型联动 (
|
|
936
|
+
// 经营类目 ↔ 主体类型联动 — MCC 真实编码 (V3 进件 settlement_id 用《商户行业编码》4 位 MCC,
|
|
937
|
+
// 之前 716/719/727 是 V2 结算规则 ID, 被微信拒 "所属行业不存在"。编码主体通用,
|
|
938
|
+
// 联动只影响默认选中: 企业→5311 百货, 个体户→5331 杂货便利店)
|
|
939
|
+
var MCC=[['5311','百货商店'],['5331','各类杂货店便利店'],['5411','大型仓储式超级市场'],
|
|
940
|
+
['5611','男装店'],['5621','妇女成衣店'],['5641','婴儿儿童服装店'],['5651','家庭服装商店'],
|
|
941
|
+
['5655','运动服饰商店'],['5661','鞋店'],['5691','成人成衣店'],['5699','各类服装及饰物店'],
|
|
942
|
+
['5712','家具家用设备零售商'],['5722','家用电器商店'],['5732','电子设备商店'],['5734','计算机软件商店'],
|
|
943
|
+
['5921','瓶装酒零售店'],['5942','书店'],['5943','文具办公用品商店'],['5944','珠宝钟表银器店'],
|
|
944
|
+
['5945','玩具游戏店'],['5948','箱包皮具店'],['5949','纺织品针织品零售'],['5970','工艺美术商店'],
|
|
945
|
+
['5977','化妆品商店'],['5995','宠物商店及用品'],['5999','其他专门零售店'],
|
|
946
|
+
['5812','就餐场所和餐馆'],['5814','快餐店'],['5499','各类食品店'],['5441','糖果坚果商店'],
|
|
947
|
+
['5451','乳制品冷饮店'],['5462','面包房糕点商店'],['5422','各类肉类零售商'],['5912','药店药房'],
|
|
948
|
+
['4816','计算机网络信息服务'],['7011','住宿服务'],['4722','旅行社'],['4733','票务'],
|
|
949
|
+
['7230','美容理发店'],['7298','保健美容SPA'],['7295','家政服务'],['7699','各类维修店'],
|
|
950
|
+
['8249','贸易职业学校(职业技能培训)'],['8299','其他学校和教育服务']];
|
|
936
951
|
var subj=document.getElementById('a_subject_type');
|
|
937
952
|
var stl=document.getElementById('a_settlement_id');
|
|
953
|
+
if(stl){
|
|
954
|
+
// 填充 MCC 选项 (手动输入项保持在最后)
|
|
955
|
+
var manualOpt=stl.querySelector('option[value="__MANUAL__"]');
|
|
956
|
+
MCC.forEach(function(c){
|
|
957
|
+
var o=document.createElement('option');
|
|
958
|
+
o.value=c[0];o.textContent=c[0]+' · '+c[1];
|
|
959
|
+
stl.insertBefore(o,manualOpt);
|
|
960
|
+
});
|
|
961
|
+
stl.value='5311'; // 默认 百货商店 (综合电商最高频)
|
|
962
|
+
// 搜索过滤 (45 个选项手翻太长)
|
|
963
|
+
var filt=document.getElementById('a_settlement_filter');
|
|
964
|
+
if(filt) filt.addEventListener('input',function(){
|
|
965
|
+
var q=filt.value.trim().toLowerCase();
|
|
966
|
+
Array.prototype.forEach.call(stl.options,function(o){
|
|
967
|
+
if(o.value===''||o.value==='__MANUAL__') return;
|
|
968
|
+
o.hidden = !!(q && o.textContent.toLowerCase().indexOf(q)<0);
|
|
969
|
+
});
|
|
970
|
+
});
|
|
971
|
+
// 手动输入接管 (沿用 id 移交逻辑)
|
|
972
|
+
linkSelectManual('a_settlement_id','a_settlement_manual','__MANUAL__');
|
|
973
|
+
}
|
|
938
974
|
if(subj&&stl){
|
|
939
975
|
subj.addEventListener('change',function(){
|
|
940
|
-
stl.value = subj.value==='SUBJECT_TYPE_ENTERPRISE' ? '
|
|
976
|
+
stl.value = subj.value==='SUBJECT_TYPE_ENTERPRISE' ? '5311' : '5331';
|
|
941
977
|
// F4: 企业主体显示身份证居住地址(必填) + UBO 说明; 个体户隐藏
|
|
942
978
|
var ent = subj.value==='SUBJECT_TYPE_ENTERPRISE';
|
|
943
979
|
var ia=document.getElementById('afield_idaddr'); if(ia) ia.style.display=ent?'':'none';
|
|
@@ -285,7 +285,13 @@ test("onboard 页面含进件表单 (btn-apply-submit) 且第③步状态机元
|
|
|
285
285
|
assert.ok(html.includes("_aSlots"), "槽位双态注册表");
|
|
286
286
|
assert.ok(html.includes("delete _aMedia[field]"), "删除清 media_id");
|
|
287
287
|
assert.ok(!html.includes("slot.insertBefore(img"), "旧增强脚本预览补丁已删 (二重框根因)");
|
|
288
|
-
assert.ok(html.includes("prefill:function(mediaId)"), "预填走双态 (无第二个空框)");
|
|
288
|
+
assert.ok(html.includes("prefill:function(mediaId)"), "预填走双态 (无第二个空框)");
|
|
289
|
+
// 2026-10-03 MCC 修正: 经营类目下拉是真实 MCC 编码 (716/719/727 是 V2 结算规则 ID, 被微信拒)
|
|
290
|
+
assert.ok(html.includes("5311") && html.includes("5732"), "MCC 编码选项");
|
|
291
|
+
assert.ok(html.includes("百货商店") && html.includes("就餐场所和餐馆"), "MCC 名称");
|
|
292
|
+
assert.ok(!html.includes('value="719"') && !html.includes('value="716"') && !html.includes('value="727"'), "V2 错误编码已清除");
|
|
293
|
+
assert.ok(html.includes("a_settlement_filter"), "类目搜索过滤");
|
|
294
|
+
assert.ok(html.includes("a_settlement_manual") && html.includes("__MANUAL__"), "手动输入接管保留");
|
|
289
295
|
assert.ok(html.includes("maybeAutoKyc"), "M2: 进件受理后自动 KYC 提交");
|
|
290
296
|
assert.ok(!html.includes("btn-verify"), "手动实名按钮已删 (自动触发)");
|
|
291
297
|
} finally { srv.close(); }
|