From 745a17e47101e90eb19b3527e093350f5fa77b07 Mon Sep 17 00:00:00 2001 From: ab18108289 <953995271@qq.com> Date: Thu, 16 Jul 2026 08:16:56 +0800 Subject: [PATCH 1/3] feat: add practical mainland payment knowledge base --- scripts/validate_payment_kb.py | 662 +++++++ skills/fxskill/SKILL.md | 37 +- .../fxskill/references/payment-compliance.md | 43 +- skills/fxskill/references/payment-index.md | 26 + .../payment-platform-cn-creators.md | 131 ++ .../references/payment-platform-cn-direct.md | 131 ++ .../payment-platform-cn-services.md | 223 +++ .../references/payment-research-backlog.md | 108 + .../fxskill/references/payment-scenarios.md | 83 + .../references/payment-source-policy.md | 106 + tests/fxskill/iteration-results.md | 865 ++++++++ tests/fxskill/rubric.md | 6 +- tests/fxskill/scenarios.md | 30 +- tests/fxskill/test_payment_kb.py | 1743 +++++++++++++++++ 14 files changed, 4155 insertions(+), 39 deletions(-) create mode 100644 scripts/validate_payment_kb.py create mode 100644 skills/fxskill/references/payment-index.md create mode 100644 skills/fxskill/references/payment-platform-cn-creators.md create mode 100644 skills/fxskill/references/payment-platform-cn-direct.md create mode 100644 skills/fxskill/references/payment-platform-cn-services.md create mode 100644 skills/fxskill/references/payment-research-backlog.md create mode 100644 skills/fxskill/references/payment-scenarios.md create mode 100644 skills/fxskill/references/payment-source-policy.md create mode 100644 tests/fxskill/test_payment_kb.py diff --git a/scripts/validate_payment_kb.py b/scripts/validate_payment_kb.py new file mode 100644 index 0000000..6434eff --- /dev/null +++ b/scripts/validate_payment_kb.py @@ -0,0 +1,662 @@ +from __future__ import annotations + +from datetime import date +import ipaddress +from pathlib import Path +import re +import sys +from urllib.parse import urlparse + + +REQUIRED_LABELS = ( + "当前状态", + "平台类型", + "支付角色", + "资金路径", + "卖家地区", + "支持主体", + "买家地区与币种", + "支付方式", + "适合商品", + "平台服务费", + "支付通道费", + "结算", + "固定费用、提现费、退款费和拒付费", + "结算周期与最低结算额", + "推荐等级", + "适用条件", + "不适用条件", + "最后核验日期", + "官方来源", + "实践来源", + "待核验问题", +) + +ALLOWED_OPTIONAL_LABELS = ( + "运营主体", + "限制商品", + "单次支付", + "订阅与自动续费", + "API、SDK、插件和支付链接", + "申请材料", + "接入路径", + "退款和售后", + "数据导出与迁移", + "实际优点", + "实际问题", +) + +ALLOWED_RECOMMENDATIONS = { + "直接推荐", + "条件推荐", + "早期验证可用", + "仅作线索", + "不推荐", + "已停止/归档", +} + +ALLOWED_STATUSES = {"正常运营", "限定开放", "无法确认", "已停止"} +OFFICIAL_SOURCE_EXEMPT_STATUSES = {"无法确认", "已停止"} +ACTIONABLE_UNKNOWN_FIELDS = ("缺失事实", "已查来源", "需要询问", "可接受证据") + +KEY_FIELDS = ( + "当前状态", + "支付角色", + "资金路径", + "卖家地区", + "支持主体", + "买家地区与币种", + "支付方式", + "平台服务费", + "支付通道费", + "固定费用、提现费、退款费和拒付费", + "结算", + "结算周期与最低结算额", + "适用条件", + "不适用条件", + "运营主体", + "限制商品", + "单次支付", + "订阅与自动续费", + "API、SDK、插件和支付链接", + "申请材料", + "接入路径", + "退款和售后", + "数据导出与迁移", + "实际优点", + "实际问题", +) + +FEE_COMPONENTS = ("固定费用", "提现费", "退款费", "拒付费") +UNKNOWN_PATTERNS = ( + "未知", + "未确认", + "未核实", + "未明确", + "未公开", + "未查到", + "不详", + "不明", + "不确定", + "待定", + "待确认", + "待核验", + "无法确认", + "暂无结论", + "没有写明", + "存在两种模式信号", + "未披露", + "未说明", + "未列明", +) +UNKNOWN_DISCLOSURE_PATTERN = re.compile( + r"(?:未|没有|尚未|无法|不能|无)" + r"(?:能|予|被|获|得到|加以|有)?" + r"(?:公开|公布|披露|说明|列明|写明|给出|明确|确认|核实|查明)" +) + +MONEY_PATH_CLEARING_TERMS = ( + "清算方", + "清算机构", + "清算节点", + "结算处理", +) +MONEY_PATH_PRECISION_CONTEXT = ( + "公开资料", + "公开材料", + "官方材料", + "协议约定", + "合同约定", + "具体清算", +) + +PRECISE_UNPUBLISHED_PATTERN = re.compile( + r"^未公开统一数字(以(?:签约页|合同|后台(?:显示)?|报价单)为准)$" +) +LABEL_PATTERN = re.compile(r"^- ([^::]+)[::]\s*(.*)$") +FEE_LINE_PATTERN = re.compile(r"^(固定费用|提现费|退款费|拒付费)[::]\s*(.*)$") +FEE_KEYED_LINE_PATTERN = re.compile(r"^([^::]+)[::]\s*(.*)$") +RAW_URL_PATTERN = re.compile(r"https?://\S+") +TRAILING_URL_PUNCTUATION = "。?!;:)]】》」』”’)]" +ISO_DATE_PATTERN = re.compile(r"\b\d{4}-\d{2}-\d{2}\b") +QUESTION_STRUCTURES = ("是否", "可否", "能否", "哪些", "哪类", "如何", "多少", "什么", "哪一个") +QUESTION_FILLERS = "向请联系询问确认咨询跟进和与就找" +EVIDENCE_CARRIERS = ( + "官方页面", + "文档", + "合同", + "报价单", + "后台截图", + "申请结果", + "书面回复", + "邮件", + "盖章协议", +) +CHECKED_SOURCE_ENTRY_HINTS = ( + "官网", + "官方网站", + "官方文档", + "开发文档", + "帮助中心", + "商户后台", + "管理后台", + "后台入口", + "申请页", + "费率页", +) +BACKLOG_PLACEHOLDERS = ( + "TODO", + "TBD", + "待补", + "后续补", + "请联系客服", + "联系客服", + "咨询客服", + "等官方回复", + "等回复", +) +PRACTICE_EVIDENCE_INSUFFICIENT_MARKER = "实践证据不足" +PRACTICE_EVIDENCE_ALLOWED_RECOMMENDATIONS = {"仅作线索", "已停止/归档"} +MONEY_PATH_UNKNOWN_ALLOWED_RECOMMENDATIONS = {"仅作线索", "已停止/归档"} + + +def repository_root_for(path: Path) -> Path: + for parent in (path.parent, *path.parents): + if (parent / ".git").exists(): + return parent + for parent in (path.parent, *path.parents): + if (parent / "skills" / "fxskill" / "references").exists(): + return parent + return path.parent + + +def relative_path(path: Path) -> str: + root = repository_root_for(path) + try: + return path.relative_to(root).as_posix() + except ValueError: + return path.name + + +def normalize_text(value: str) -> str: + return re.sub(r"\s+", "", value).strip() + + +def is_precise_unpublished_value(value: str) -> bool: + return bool(PRECISE_UNPUBLISHED_PATTERN.fullmatch(value.strip())) + + +def has_unknown_fragment(value: str) -> bool: + stripped = value.strip() + if is_precise_unpublished_value(stripped): + return False + normalized = normalize_text(stripped) + return any(pattern in normalized for pattern in UNKNOWN_PATTERNS) or bool( + UNKNOWN_DISCLOSURE_PATTERN.search(normalized) + ) + + +def has_precise_money_path_unknown(value: str) -> bool: + normalized = normalize_text(value) + if "存在两种模式信号" in normalized: + return True + return ( + any(term in normalized for term in MONEY_PATH_CLEARING_TERMS) + and has_unknown_fragment(normalized) + and any(context in normalized for context in MONEY_PATH_PRECISION_CONTEXT) + ) + + +def status_name(value: str) -> str: + return re.split(r"[;;]", value, maxsplit=1)[0].strip() + + +def parse_profiles(text: str) -> list[tuple[str, dict[str, str], list[str]]]: + profiles: list[tuple[str, dict[str, str], list[str]]] = [] + current_name: str | None = None + current_labels: dict[str, list[str]] = {} + duplicate_labels: list[str] = [] + current_label: str | None = None + + def flush() -> None: + nonlocal current_name, current_labels, duplicate_labels, current_label + if current_name is None: + return + profiles.append( + ( + current_name, + {key: "\n".join(lines).strip() for key, lines in current_labels.items()}, + duplicate_labels[:], + ) + ) + current_name = None + current_labels = {} + duplicate_labels = [] + current_label = None + + for raw_line in text.splitlines(): + line = raw_line.rstrip() + if line.startswith("## "): + flush() + current_name = line[3:].strip() + continue + if current_name is None: + continue + match = LABEL_PATTERN.match(line) + if match: + label = match.group(1).strip() + value = match.group(2).strip() + if label in current_labels: + duplicate_labels.append(label) + current_label = None + continue + current_label = label + current_labels[label] = [value] + continue + if current_label is not None: + current_labels[current_label].append(line.strip()) + + flush() + return profiles + + +def strip_trailing_url_punctuation(url: str) -> str: + return url.rstrip(TRAILING_URL_PUNCTUATION) + + +def extract_candidate_urls(value: str) -> list[str]: + urls: list[str] = [] + for raw_url in RAW_URL_PATTERN.findall(value): + for segment in re.split(r";(?=https?://)", raw_url): + candidate = strip_trailing_url_punctuation(segment) + if candidate: + urls.append(candidate) + return urls + + +def is_ip_hostname(hostname: str) -> bool: + try: + ipaddress.ip_address(hostname) + except ValueError: + return False + return True + + +def is_valid_official_url(url: str) -> bool: + try: + parsed = urlparse(url) + except ValueError: + return False + if parsed.scheme not in {"http", "https"}: + return False + hostname = parsed.hostname + if not hostname: + return False + normalized_host = hostname.rstrip(".") + if not normalized_host or normalized_host.lower() == "localhost": + return False + if is_ip_hostname(normalized_host): + return False + if "." not in normalized_host: + return False + try: + normalized_host.encode("idna") + except UnicodeError: + return False + return True + + +def validate_official_source(value: str) -> bool: + return any(is_valid_official_url(url) for url in extract_candidate_urls(value)) + + +def validate_verification_date(value: str) -> bool: + try: + date.fromisoformat(value.strip()) + except ValueError: + return False + return True + + +def validate_money_path(value: str) -> bool: + nodes = [node.strip() for node in re.split(r"(?:->|→)", value)] + if len(nodes) != 4: + return False + return all( + node + and ( + not has_unknown_fragment(node) + or has_precise_money_path_unknown(node) + ) + for node in nodes + ) + + +def parse_fee_breakdown(value: str) -> tuple[dict[str, str], list[str], list[str]]: + items: dict[str, str] = {} + duplicates: list[str] = [] + extras: list[str] = [] + for raw_line in value.splitlines(): + line = raw_line.strip() + if not line: + continue + fee_match = FEE_LINE_PATTERN.match(line) + if fee_match: + label = fee_match.group(1) + field_value = fee_match.group(2).strip() + if label in items: + duplicates.append(label) + continue + items[label] = field_value + continue + keyed_match = FEE_KEYED_LINE_PATTERN.match(line) + if keyed_match: + extras.append(keyed_match.group(1).strip()) + continue + generic_match = LABEL_PATTERN.match(line) + if generic_match: + extras.append(generic_match.group(1).strip()) + return items, duplicates, extras + + +def validate_fee_component_value(value: str) -> bool: + stripped = value.strip() + if not stripped: + return False + if stripped in {"0", "无此项"}: + return True + if is_precise_unpublished_value(stripped): + return True + return not has_unknown_fragment(stripped) + + +def validate_fee_breakdown(prefix: str, value: str) -> list[str]: + errors: list[str] = [] + items, duplicates, extras = parse_fee_breakdown(value) + for duplicate in duplicates: + errors.append(f"{prefix} duplicate fee subfield `{duplicate}`") + if extras: + errors.append( + f"{prefix} 固定费用、提现费、退款费和拒付费 contains unsupported fee key(s): {', '.join(extras)}" + ) + for field in FEE_COMPONENTS: + if field not in items or not validate_fee_component_value(items[field]): + errors.append(f"{prefix} 固定费用、提现费、退款费和拒付费 must include all four non-empty subfields") + break + return errors + + +def has_unknown_key_fields(labels: dict[str, str]) -> bool: + for field in KEY_FIELDS: + value = labels.get(field, "") + if field == "固定费用、提现费、退款费和拒付费": + items, duplicates, extras = parse_fee_breakdown(value) + if duplicates or extras or set(items) != set(FEE_COMPONENTS): + return True + if any(has_unknown_fragment(items[item]) for item in FEE_COMPONENTS): + return True + continue + if has_unknown_fragment(value): + return True + return False + + +def can_be_directly_recommended(labels: dict[str, str]) -> bool: + if labels.get("待核验问题", "").strip() != "无": + return False + if status_name(labels.get("当前状态", "")) != "正常运营": + return False + return not has_unknown_key_fields(labels) + + +def parse_backlog_items(backlog: str) -> tuple[dict[str, str], list[str]]: + items: dict[str, str] = {} + duplicates: list[str] = [] + for raw_line in backlog.splitlines(): + line = raw_line.strip() + if not line: + continue + match = LABEL_PATTERN.match(line) + if not match: + continue + label = match.group(1).strip() + value = match.group(2).strip() + if label not in ACTIONABLE_UNKNOWN_FIELDS: + continue + if label in items: + duplicates.append(label) + continue + items[label] = value + return items, duplicates + + +def validate_missing_fact(value: str) -> bool: + stripped = value.strip() + if len(stripped) < 8: + return False + if stripped in {"待确认", "未知", "无法确认", "暂无结论"}: + return False + return True + + +def is_specific_question(value: str) -> bool: + stripped = value.strip() + if len(stripped) < 12 or not stripped.endswith(("?", "?")): + return False + for word in QUESTION_STRUCTURES: + index = stripped.find(word) + if index <= 0: + continue + subject = stripped[:index].strip(QUESTION_FILLERS + ":: ") + detail = stripped[index + len(word): -1].strip() + if len(subject) >= 2 and len(detail) >= 2: + return True + return False + + +def has_evidence_carrier(value: str) -> bool: + return any(carrier in value for carrier in EVIDENCE_CARRIERS) + + +def validate_checked_sources(value: str) -> bool: + stripped = value.strip() + if len(stripped) < 12: + return False + if any(placeholder in stripped for placeholder in BACKLOG_PLACEHOLDERS): + return False + if not ISO_DATE_PATTERN.search(stripped): + return False + if any(is_valid_official_url(url) for url in extract_candidate_urls(stripped)): + return True + return any(hint in stripped for hint in CHECKED_SOURCE_ENTRY_HINTS) + + +def validate_backlog(prefix: str, backlog: str) -> list[str]: + errors: list[str] = [] + items, duplicates = parse_backlog_items(backlog) + for duplicate in duplicates: + errors.append(f"{prefix} duplicate backlog subfield `{duplicate}`") + for field in ACTIONABLE_UNKNOWN_FIELDS: + if field not in items or not items[field].strip(): + errors.append(f"{prefix} 待核验问题 must include `{field}`") + if errors: + return errors + + if not validate_missing_fact(items["缺失事实"]): + errors.append(f"{prefix} 待核验问题 has no substantive value for `缺失事实`") + if not validate_checked_sources(items["已查来源"]): + errors.append(f"{prefix} 待核验问题 has no substantive value for `已查来源`") + if not is_specific_question(items["需要询问"]): + errors.append(f"{prefix} 待核验问题 `需要询问` must be a concrete question ending with ? or ?") + if not has_evidence_carrier(items["可接受证据"]) or items["可接受证据"].strip() == "官方回复": + errors.append(f"{prefix} 待核验问题 `可接受证据` must name concrete evidence carriers") + return errors + + +def validate_status_and_recommendation(prefix: str, status: str, recommendation: str) -> list[str]: + errors: list[str] = [] + if status == "已停止" and recommendation != "已停止/归档": + errors.append(f"{prefix} 已停止 status must use `已停止/归档` recommendation") + if status == "无法确认" and recommendation not in {"仅作线索", "已停止/归档"}: + errors.append(f"{prefix} 无法确认 status can only use `仅作线索` or `已停止/归档`") + return errors + + +def has_insufficient_practice_evidence(labels: dict[str, str]) -> bool: + return PRACTICE_EVIDENCE_INSUFFICIENT_MARKER in labels.get("实践来源", "") + + +def validate_practice_evidence_gate(prefix: str, labels: dict[str, str]) -> list[str]: + errors: list[str] = [] + if not has_insufficient_practice_evidence(labels): + return errors + + recommendation = labels["推荐等级"].strip() + backlog = labels["待核验问题"].strip() + if recommendation not in PRACTICE_EVIDENCE_ALLOWED_RECOMMENDATIONS: + errors.append( + f"{prefix} 实践证据不足 profiles can only use `仅作线索` or `已停止/归档` recommendation" + ) + if backlog == "无": + errors.append(f"{prefix} 实践证据不足 profiles must include a structured 待核验问题 block") + return errors + + +def validate_unknown_linkage(prefix: str, labels: dict[str, str]) -> list[str]: + errors: list[str] = [] + recommendation = labels["推荐等级"].strip() + backlog = labels["待核验问题"].strip() + unknown_key_fields = has_unknown_key_fields(labels) + if unknown_key_fields and backlog == "无": + errors.append(f"{prefix} 待核验问题 cannot be `无` when key fields are unknown") + if recommendation == "直接推荐" and backlog != "无": + errors.append(f"{prefix} 直接推荐 cannot coexist with pending verification") + if recommendation == "直接推荐" and not can_be_directly_recommended(labels): + errors.append(f"{prefix} 直接推荐 cannot coexist with unknown key fields or non-normal status") + if ( + has_precise_money_path_unknown(labels.get("资金路径", "")) + and recommendation not in MONEY_PATH_UNKNOWN_ALLOWED_RECOMMENDATIONS + ): + errors.append( + f"{prefix} profiles with an unknown clearing node can only use " + "`仅作线索` or `已停止/归档` recommendation" + ) + return errors + + +def validate_profile(path: Path, profile: tuple[str, dict[str, str], list[str]]) -> list[str]: + errors: list[str] = [] + profile_name, labels, duplicate_labels = profile + prefix = f"{relative_path(path)}: {profile_name}:" + + for duplicate in duplicate_labels: + errors.append(f"{prefix} duplicate label `{duplicate}`") + allowed_labels = set(REQUIRED_LABELS) | set(ALLOWED_OPTIONAL_LABELS) + for label in labels: + if label not in allowed_labels: + errors.append(f"{prefix} unknown label `{label}`") + for label in REQUIRED_LABELS: + if label not in labels or not labels[label].strip(): + errors.append(f"{prefix} missing required label `{label}`") + for label in ALLOWED_OPTIONAL_LABELS: + if label in labels and not labels[label].strip(): + errors.append(f"{prefix} optional label `{label}` must be non-empty when present") + if errors: + return errors + + recommendation = labels["推荐等级"].strip() + status = status_name(labels["当前状态"]) + + if recommendation not in ALLOWED_RECOMMENDATIONS: + errors.append(f"{prefix} 推荐等级 must be one of {sorted(ALLOWED_RECOMMENDATIONS)}") + if status not in ALLOWED_STATUSES: + errors.append(f"{prefix} 当前状态 must be one of {sorted(ALLOWED_STATUSES)}") + if not validate_verification_date(labels["最后核验日期"]): + errors.append(f"{prefix} 最后核验日期 must use a real YYYY-MM-DD date") + if not validate_money_path(labels["资金路径"]): + errors.append(f"{prefix} 资金路径 must use four explicit non-empty nodes") + if status not in OFFICIAL_SOURCE_EXEMPT_STATUSES and not validate_official_source(labels["官方来源"]): + errors.append(f"{prefix} 官方来源 must include at least one valid HTTP(S) link") + errors.extend(validate_fee_breakdown(prefix, labels["固定费用、提现费、退款费和拒付费"])) + + backlog = labels["待核验问题"].strip() + if backlog != "无": + errors.extend(validate_backlog(prefix, backlog)) + + errors.extend(validate_status_and_recommendation(prefix, status, recommendation)) + errors.extend(validate_practice_evidence_gate(prefix, labels)) + errors.extend(validate_unknown_linkage(prefix, labels)) + return errors + + +def validate_file(path: Path) -> list[str]: + text = path.read_text(encoding="utf-8") + profiles = parse_profiles(text) + if not profiles: + if text.strip(): + return [f"{relative_path(path)}: contains content but no `##` profiles"] + return [] + errors: list[str] = [] + for profile in profiles: + errors.extend(validate_profile(path, profile)) + return errors + + +def validate_repository(root: Path) -> list[str]: + errors: list[str] = [] + seen_platforms: dict[str, str] = {} + references_root = root / "skills" / "fxskill" / "references" + for path in sorted(references_root.glob("payment-platform-*.md")): + text = path.read_text(encoding="utf-8") + profiles = parse_profiles(text) + errors.extend(validate_file(path)) + for name, _, _ in profiles: + location = relative_path(path) + if name in seen_platforms: + errors.append(f"{location}: duplicate platform `{name}` also defined in {seen_platforms[name]}") + else: + seen_platforms[name] = location + return errors + + +def count_profiles(root: Path) -> int: + count = 0 + references_root = root / "skills" / "fxskill" / "references" + for path in sorted(references_root.glob("payment-platform-*.md")): + count += len(parse_profiles(path.read_text(encoding="utf-8"))) + return count + + +def main() -> int: + root = Path(__file__).resolve().parents[1] + errors = validate_repository(root) + if errors: + for error in errors: + print(error) + return 1 + print(f"{count_profiles(root)} payment platform profiles validated") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/skills/fxskill/SKILL.md b/skills/fxskill/SKILL.md index 1e75b7e..fc1f8d0 100644 --- a/skills/fxskill/SKILL.md +++ b/skills/fxskill/SKILL.md @@ -30,13 +30,44 @@ description: Use when 建站新手需要规划、设计、建站、上线、支 | 商业目标/网站类型/建站方式/Vibe Coding/CMS/技术路线 | `references/roadmap.md` | | 设计/配色/字体/页面结构/内容/转化/灵感 | `references/design-resources.md` | | 域名/DNS/邮箱/服务器/CDN/网站发布/部署 | `references/stack-hosting.md` | -| 国内外支付/主体/订阅/备案/隐私/Cookie/条款/版权/无障碍 | `references/payment-compliance.md` | +| 国内外支付/收款/支付主体/订阅/费用/结算/支付平台比较 | `references/payment-index.md` | +| 备案/隐私/Cookie/条款/版权/无障碍/一般合规 | `references/payment-compliance.md` | | 功能/兼容/移动/支付流程/安全/备份/性能 | `references/testing-quality.md` | | SEO/收录/GEO/AI 引用/流量/统计/转化追踪 | `references/growth-seo-geo.md` | | 上线检查/监控/维护/故障诊断 | `references/operations.md` | 用户可用 `$fxskill 支付: ...`、`$fxskill 设计: ...`、`$fxskill 服务器: ...`、`$fxskill SEO: ...`、`$fxskill GEO: ...` 直达。若用户口语里说“托管”,统一按“服务器”或“不需要自己维护服务器的网站发布平台”理解。仍要读取上下文并诊断,不冷列资源。 +支付问题先读 `references/payment-index.md`;按索引只读一个相关场景和只读一个相关类别或平台档案。不得一次倾倒全部支付档案。只有共享主体判断、地区判断、备案、隐私、条款、订阅法律判断,或规范支付档案未替代的合规问题,才补读 `references/payment-compliance.md`。缺失的海外档案不存在时,用 `payment-compliance.md` 的海外框架并按 `references/source-policy.md` 核验当前官方来源,不得假装已有档案。 + +### 支付答案配方 + +**原则**:资料库深、回答浅。档案保留完整字段,成品只讲清用户这次怎么选。 +支付答案配方优先于全局语义输出契约。支付首句可以直接描述主路线或不选某个平台;这种描述性结论不计入行动。真正命令用户执行的操作只放在最后步骤区,最多三条。 +1. **选资料**:先按卖家主体 + 支付模式匹配场景标题;主体与支付模式场景优先于产品形式场景。自然人首单问题固定使用 `中国大陆自然人验证首批订单`,行动顺序为“提交资料 → 支持且费用、结算可接受时签约 → 后台明确不支持且允许个体工商户时登记个体工商户”;支付回调、验签等技术接入留到下一轮。内容托管场景至多进入一个有条件备选槽。 +2. **先下结论**:先给一句明确结论,说明当前最可行路线、能不能用或为什么暂不能判断;不能只说需要核验,也不强制固定标题。 +3. **补关键信息**: + - 再给 2-4 条真正影响选择的信息;托管内容平台能否替代网站支付 API 时,只保留 API 能力、主要费用、主体与内容边界、结算或退款限制。 + - 优先费用、主体或类目条件、结算或最大未知;不默认输出完整成本卡或条件卡。 + - 未公开的费用合并为一句说明,不能为了完整把所有未知标签念一遍。 + - 保留来源边界,区分官方事实、平台自述、实践证据和待核验项;平台页面声称的通道费不得写成支付机构官方统一费率;当前费率、资格或状态必须简短标明核验日期。平台比较必须用“截至 YYYY-MM-DD”标明核验日期。 +4. **给步骤**: + - 最后给最多三个按顺序的原子步骤。 + - 每一步只放一个主要动作,按依赖顺序排列,总步骤不超过三条。 + - 结论不要塞进行动项;依赖前一步结果时用简短条件句说明。 + - 真实订单验证只保留一个验收动作,不展开回调、查单、验签或幂等子动作。真实订单验证写明“仅当上一项配置完成时”。 +5. **守住推荐边界**: + - 不得把 `仅作线索` 平台写成稳定主支付、最便宜或最好;规范场景明确为核验路线时可以作为第一个官方核验入口,正式使用仍以后台或签约结果为条件。 + - 被比较候选全部是 `仅作线索` 时,明确它们不作为主支付,不得再挑其中一个作备选或排序,回到规范场景的可防守路线;回到规范场景时称为官方核验入口,不得称为已成立主支付。平台比较的四条关键信息依次为:当前可注册性、主体或类目、主要费用、资金或结算路径;比较答案必须按四条短信息输出,四项都出现,不合并省略。比较事实只描述当前证据,不写需要用户核验或确认的操作。结论写成“候选都不作为主支付;当前先走规范场景的官方核验入口”。 + - 成本未知或比较维度不一致时,明确说明价格排名尚未成立;价格证据不足时不得判定最便宜;固定费用或关键费用未公开时,不得使用“低固定成本”“最省固定成本”。自然人场景固定费用未知时,只能称为“当前可行的官方核验入口”,不得称“低成本候选”。 +6. **按需展开**: + - 只有用户明确要求完整费用拆解或严谨对比时才展开。 + - 同类候选按相同且会改变决定的维度比较。 + - 用户点名问平台当前费用时,平台费与平台自述通道费分开写,当句说明后者不是支付机构官方统一费率,再写结算周期或到账口径、最低结算额或提现费是否公开;已公开的结算口径不得省略。未知项最多点名两项,其余统一写“其他费用未公开”,不继续枚举标签。 + - 平台费率已按套餐列出时,不再逐档换算单笔金额;用户点名某一套餐时才换算该档。 + - 即使展开,也不得用缺项拼总价,不得把已知费用相加成完整到手成本,不得计算套餐销量分界或总成本。 +默认正文不超过 450 个中文字符;复杂问题等用户追问再继续。 + SEO/GEO 共用搜索和 AI 可见性专题:先共享基础,再按收录/排名点击或 AI 理解/提及/引用分流。 ## 判断标准 @@ -59,14 +90,14 @@ SEO/GEO 共用搜索和 AI 可见性专题:先共享基础,再按收录/排 直接专题的默认正文不超过 450 个中文字符,URL 不计;只有用户明确要求完整比较或清单时才展开。 -直接专题给出正向建议时采用以下全局语义输出契约,标题可按专题自然命名;专题参考另有固定结构时,以专题参考为准: +直接专题给出正向建议时采用以下全局语义输出契约,标题可按专题自然命名;支付专题以“支付答案配方”为准,其他专题参考另有固定结构时以专题参考为准: 1. 一个纯描述诊断区:用一两句说明已成立事实、当前限制、资格未确认状态,或当前最大问题及影响。 2. 一个唯一行动区:至多三个独立原子行动。 - 诊断区不描述未来路线、方案或替代路径,不出现命令、建议或禁令,也不以“登记、核验、选择、申请、提交、办理、采用”等动作名词暗示建议。解释当前优先级时,只写现有证据、成本、能力或限制及其当前影响;不得命名未选路线,也不得用“先按原型”“转向 MVP”“加入某功能后路线会变化”“满足某条件时优先级会改变”等条件句放入未来阶段或决策分支。依据、风险、坑和来源说明如需出现,保持纯描述并归入诊断区,或按专题参考的固定结构输出。 - 只有行动区可出现命令、建议或禁令;行动区可按专题题为“下一步”“核心修改”等自然标题,不强制所有专题使用“现状”或“下一步”。 -- 每个行动必须独立成项且只有一个主要谓语动作,不使用“并、再、同时、以及、;”连接额外操作;按语义而非编号计数。每一个登记、核验、选择或申请均是独立动作;向不同平台提交分别计数。 +- 每个行动必须独立成项且只有一个主要谓语动作,不使用“并、和、再、同时、以及、;”连接额外操作;按语义而非编号计数。每一个登记、核验、选择或申请均是独立动作;向不同平台提交分别计数。 - 行动项可以附带不含命令的适用条件、成本、限制或坑说明。对前一行动结果的条件限定不算新增动作,例如“仅当上一项核验结果支持此路线时”;不得在条件短语中藏入新的确认、选择、申请或其他操作。 - 备选若出现,必须作为行动区中的独立原子行动,并占一个行动名额。 - 不用合并编号、嵌套清单、拆分章节或条件分支绕过三项行动限制。超过三个动作时,按依赖顺序只保留前三个,不得总结或合并后续动作。来源链接和纯描述内容不算行动,但不得扩成长清单。 diff --git a/skills/fxskill/references/payment-compliance.md b/skills/fxskill/references/payment-compliance.md index 22ebed6..653785c 100644 --- a/skills/fxskill/references/payment-compliance.md +++ b/skills/fxskill/references/payment-compliance.md @@ -1,5 +1,7 @@ # 支付、备案与合规 +本文件只保留支付共享合规判断和非支付合规。具体支付平台、费用、主体、产品状态、结算、推荐等级和核验日期先走 [支付资料索引](payment-index.md),再读取对应场景和平台档案;不要在本文件复述中国大陆平台事实。 + ## 支付先判断 1. 用户、经营主体和结算银行账户分别在哪个地区。 @@ -15,19 +17,17 @@ 其他关键条件缺失时,整个回答也只包含一个开放式问题和最多一句原因,最多一个问号;澄清前不出现任何候选平台名称、费率或资格信息,也不先给赢家。 -用户已说明卖家主体/地区、买家市场和具体产品,并直接问“支付怎么接”时,不把“是否愿意登记主体或承担维护责任”视为新的关键缺口;按固定支付结构给条件化路线。路线包含登记个体工商户时,只在该登记行动的描述中用白话说明“不是拿到执照就结束,之后每年还要报年报”,并在同一行动紧邻引用当前年度报告办法;不得把年报事实或来源提前放入“现状”“依据”“风险”。税务和注销只写随实际经营情况变化,不列操作。没有当前直接来源时,不比较个体工商户与公司的维护轻重,也不把地址、税务、注销等事项写成已确定适用于该用户的完整义务。只有用户问“应该先确认什么”或明确在两类主体路线间犹豫时,才可把承担主体责任的意愿作为唯一决定性问题;使用“你对登记经营主体并持续承担维护责任的接受程度如何?”这类开放问法,不提前收窄为个体工商户或公司。整个回复只包含该问题和最多一句纯描述原因,不出现平台、来源、年报等政策事实或核验日期。 +用户已说明卖家主体/地区、买家市场和具体产品,并直接问“支付怎么接”时,不把“是否愿意登记主体或承担维护责任”视为新的关键缺口;按 `SKILL.md` 的支付答案配方给条件化路线。路线包含登记个体工商户时,只在该登记步骤旁用白话说明“不是拿到执照就结束,之后每年还要报年报”,并紧邻引用当前年度报告办法;不把年报事实或来源提前塞进结论或关键信息。税务和注销只写随实际经营情况变化,不列操作。没有当前直接来源时,不比较个体工商户与公司的维护轻重,也不把地址、税务、注销等事项写成已确定适用于该用户的完整义务。只有用户问“应该先确认什么”或明确在两类主体路线间犹豫时,才可把承担主体责任的意愿作为唯一决定性问题;使用“你对登记经营主体并持续承担维护责任的接受程度如何?”这类开放问法,不提前收窄为个体工商户或公司。整个回复只包含该问题和最多一句纯描述原因,不出现平台、来源、年报等政策事实或核验日期。 -信息足够后,先明确本次比较的候选范围和一个决定胜负的维度,再用当前官方证据对范围内每个候选核验同一维度。只有这些证据支持时,才能写“在这些候选中,按该维度,若当前条件成立则……”之类的条件结论。只核验赢家、各平台核验不同维度、候选范围含糊或证据不足时,不得说“最容易”“最好”“最便宜”“最省事”或“首选”,也不得补充用户信息来凑结论;候选与比较维度保持描述性未确认。若给核验操作,只能放在“下一步”并占一个行动名额。 +信息足够后,先明确本次比较的候选范围和一个决定胜负的维度,再用当前官方证据对范围内每个候选核验同一维度。只有这些证据支持时,才能写“在这些候选中,按该维度,若当前条件成立则……”之类的条件结论。只核验赢家、各平台核验不同维度、候选范围含糊或证据不足时,不得说“最容易”“最好”“最便宜”“最省事”或“首选”,也不得补充用户信息来凑结论;候选与比较维度保持描述性未确认。若给核验操作,只能放在最后的步骤区并占一个步骤。 -平台支持数字商品、某种支付方式或买家覆盖范围,不能证明无执照自然人或其他特定卖家主体可以申请或入驻。任何卖家主体资格主张,必须紧邻引用当前且直接说明该资格的官方来源。官方产品页只能证明该产品明确列出的主体、类目和限制,不得扩大为其他支付产品、同一机构的全部产品或全部网站商业支付。没有直接资格证据时,不得把具体网站发布平台或支付平台作为主推荐;只能写“作为待核验候选”,主体、类目和结算状态仍未确认,不能用入口页或流程页补资格证据。 +平台支持数字商品、某种支付方式或买家覆盖范围,不能证明无执照自然人或其他特定卖家主体可以申请或入驻。任何卖家主体资格主张,必须来自 [payment-index.md](payment-index.md) 指向的当前场景和平台档案,或来自当日重新核验的直接官方来源。官方产品页只能证明该产品明确列出的主体、类目和限制,不得扩大为其他支付产品、同一机构的全部产品或全部网站商业支付。没有直接资格证据时,不得把具体网站发布平台或支付平台作为主推荐;只能写“作为待核验候选”,主体、类目和结算状态仍未确认,不能用入口页或流程页补资格证据。 ## 中国大陆收款 - 不能仅凭个人收款码的线下收款能力推断其具备网站商业支付 API、稳定回调或特定交易场景资格;没有直接产品资料时保持未确认。 -- 用户只说“数字资料”时,其与官方“线上虚拟行业”的归类尚未确认,S2 默认不得引用 `4012165168`。[微信支付小微商户进件产品介绍](https://pay.wechatpay.cn/doc/v3/partner/4012165168)只在用户明确询问该产品时使用:它证明微信支付商户申请通过该服务商进件渠道面向指定行业的小微商户开放,且该渠道暂不支持官方所称的线上虚拟行业;不得把它写成整个“小微商户”或其他支付产品的限制。没有直接映射证据时,不得据此排除用户类目。使用时必须明确写出“微信支付小微商户进件产品”和“该服务商进件渠道”的完整范围。 -- 微信支付普通商户主体类型主张必须使用[微信支付普通商户主体资料](https://pay.wechatpay.cn/doc/v3/merchant/4012071573):该页只证明微信普通商户支持页面列明的个体工商户、企业、政府机关、事业单位和社会组织,不证明自然人缺少其他网站商业支付产品的合格主体资格;具体产品和经营类目仍保持未确认。Native、JSAPI、H5 等产品的接入准备页或流程页不得替代该主体资料页;只有主张明确写出对应具体产品时,才能引用该产品页支持其页面范围内的主体、类目或限制。 -- 支付宝公开入口不能证明个体工商户或自然人在特定场景具备资格,继续写申请当日核验,不作结论。不得使用“灰度进件”提示证明小微进件状态,也不得输出“灰度进件”结论。 -- 第三方聚合或网站发布平台在没有直接资格证据时,只能作为待核验线索。推荐前必须实时确认主体要求、实际收单通道、商户号归属、结算和售后责任;不得暗示其支持无执照自然人或可以绕过支付机构审核。 +- 中国大陆具体支付产品、平台费用、主体资格、类目、资金路径和结算规则,均按 [payment-index.md](payment-index.md) 指向的 `payment-scenarios.md` 与对应平台档案处理。 +- 第三方聚合、服务商、创作者平台或网站发布平台在没有直接资格证据时,只能作为待核验线索。推荐前必须确认主体要求、实际收单通道、商户号归属、结算和售后责任;不得暗示其支持无执照自然人或可以绕过支付机构审核。 - 拒绝伪造主体、借用账户、虚构经营地址或绕过审核。 - 个人码、借用商户号或“免签”通道的风险,只写直接来源明确支持的对象、条件和后果;没有来源时不得写个人收款码能否替代接口,也不得填入封号、冻结、资金损失或追责。资格或类目尚未确认时,只能条件性说明:若申请产品不接受该主体或类目,则该产品路线可能无法获准。 - 正式接口路线涉及个体工商户时,用直白语言说明:不是拿到执照就结束,登记后每年还要报年报。[个体工商户年度报告办法](https://www.samr.gov.cn/zw/zfxxgk/fdzdgknr/fgs/art/2025/art_0c753e108142465db664db16bc0e8b95.html)规定每年 1 月 1 日至 6 月 30 日报送上一年度报告;默认回答不照念日期,只写白话结论和链接。税务与注销事项随实际经营情况变化,不默认列成该用户的确定义务。 @@ -50,6 +50,8 @@ 在提及 Stripe、PayPal、Paddle、Lemon Squeezy、Creem 或其他平台前,按上述三项另查产品限制、费率、订阅和税务角色,不使用联盟排名。Merchant of Record 只承担合同范围内的角色,不当然免除卖家所在地的所得税、申报或其他国内义务;平台控制还包括后续复审、资金保留或冻结、关户,以及客户和订阅数据能否完整迁移。 +当 [payment-index.md](payment-index.md) 指向的海外平台档案尚不存在时,不得假装档案存在;先使用本节框架,再按回答当天的官方来源重新核验卖家准入、买家覆盖、结算、费用、订阅、税务角色、退款和拒付。 + ## 中国大陆备案 - 先核验完整访问链路是否使用中国大陆境内服务器、CDN、边缘节点或其他接入资源,再判断 ICP 备案;不得只凭海外源站认定无需备案。网站上线后再按当前规则核验公安联网备案。 @@ -66,33 +68,12 @@ ## 输出方式 -直接支付专题的默认正文最多 450 个中文字符,URL 不计;用户明确要求完整比较或清单时才展开。禁止二级清单。使用固定结构:“现状”1-2 句;“依据”至多 2 条;“风险”至多 1 条;“下一步”至多 3 条单句原子行动。 - -“现状”只写已经成立的主体事实、当前限制或资格尚未确认事实,不描述未来路线、方案或替代路径,不得列出候选范围,也不以“登记、核验、选择、申请、提交、办理、采用”等动作名词暗示建议。“依据”只写支持现状的当前官方事实,不列候选范围;“风险”只写直接来源支持的当前后果,或把主体、类目等未确认状态的直接后果写成条件性描述,不列候选范围,不得填充库存式封号、冻结、资金损失、追责或个人收款码能否替代接口等无来源结论。只有“下一步”可出现路线、候选、命令、建议或禁令;其他区块不得出现未来操作,也不出现“建议、应该、需要、先、再、可以、不要、避免、优先、备选是”等行动性表达。 - -备选必须放入“下一步”并占一个行动名额。每个行动独立成项且只使用一个主要谓语动作,不用“并、再、同时、以及、;”连接额外操作。每一个登记、核验、选择或申请均是独立动作;向每个不同平台提交也分别计数,微信与支付宝不得合成一个动作。“确认可承担后登记”“核验后办理”“选择后申请”都是包含两个语义动作的反例,必须拆开。后续登记或申请依赖前一项主体/类目核验结果时,必须用不含新增操作的条件限定阻断失败分支,例如“仅当上一项核验结果支持此路线时”;这种结果条件不算新增动作,但不得夹带确认、选择或其他操作。超过三个动作时,按依赖顺序只保留前三个,不得总结或合并后续动作;支付主体路线优先保留一次支付产品对主体/类目的联合准入核验、条件成立后的登记、条件成立后的单个平台申请,删除中间的意愿确认、主体比较或维护责任核验,不得把与支付准入无关的核验并入第一项。发送前做语义行动自检:删除或改写“下一步”之外的未来操作;拆开复合动作;检查依赖步骤是否有结果条件;重新逐项计数;超过三个时按上述规则删除超额动作;类目映射未知时使用明确措辞“归类尚未确认”。 - -比较请求的信息足够时,既有候选范围与同维度比较规则仍然适用,但候选范围和比较结论只能出现在“下一步”并占一个行动名额。非比较请求不得为了展示方案而补列候选。支付宝等候选没有直接资格来源时不得列入;此时只保留主体或类目未确认事实、范围匹配的直接官方事实及条件性后果。 - -```markdown -**现状** -[已成立的主体、限制或资格未确认事实。] - -**依据** -- [支持现状的当前事实。] - -**风险** -[当前事实可能产生的后果。] - -**下一步** -- [一个原子动作。] -``` +直接支付专题复用 `SKILL.md` 的“支付答案配方”,不在这里重复回答结构:默认一句结论、2-4 条决策信息和最多三个原子步骤;只有用户明确要求时才展开完整费用或严谨比较。 -用户未问技术接入时,普通商户主体类型主张优先使用 `4012071573`,不主动引入 Native、JSAPI、H5 或其他终端支付产品,也彻底不写验签、回调或限时链接。材料、版权、退款等只有会改变当前路线时才合并为一条纯描述风险,不能在三步后追加操作清单。默认不输出长篇法律原文;易变或高风险事实按 [source-policy.md](source-policy.md) 在推荐当日核验并注明日期。 +本文件只补充主体、备案、隐私、条款、订阅和跨境合规边界。具体平台事实与场景路线以 [payment-index.md](payment-index.md) 指向的档案为准;易变或高风险事实按 [source-policy.md](source-policy.md) 当日核验。 -官方入口与资料(2026-07-13):入口页或流程页只能用于开始核验,不能证明某类主体具备资格或可以申请。只有直接支持资格主张的官方页面才能作证,且结论必须限定到该页面对应的产品;找不到时只描述“该主体资格尚未确认”,不得推断。用户口语类目与官方类目没有直接映射时只写“归类尚未确认”。 +官方入口与资料:入口页或流程页只能用于开始核验,不能证明某类主体具备资格或可以申请。只有直接支持资格主张的官方页面才能作证,且结论必须限定到该页面对应的产品;找不到时只描述“该主体资格尚未确认”,不得推断。用户口语类目与官方类目没有直接映射时只写“归类尚未确认”。中国大陆支付平台资料统一见 [payment-index.md](payment-index.md) 指向的场景和档案。 -- 中国大陆支付:[微信支付小微商户进件产品介绍](https://pay.wechatpay.cn/doc/v3/partner/4012165168)只证明该服务商进件渠道对指定行业开放,以及该渠道对官方所称线上虚拟行业的限制;不得扩大成全部小微商户或其他支付产品,也不证明“数字资料”的官方归类。[微信支付普通商户主体资料](https://pay.wechatpay.cn/doc/v3/merchant/4012071573)是普通商户主体类型主张的指定来源,只证明该页列出的主体类型,不得用 Native、JSAPI、H5 等产品接入页替代;[支付宝开放平台入口](https://open.alipay.com/module/webApp)仅作申请入口,不证明主体或场景资格。 - 中国大陆备案:[工信部备案系统](https://beian.miit.gov.cn/)、[工信部备案办法](https://wap.miit.gov.cn/zcfg/xxtxl/art/2024/art_7e48434c08c24131b4b7eecfca5b2b6c.html)、[全国互联网安全管理服务平台](https://beian.mps.gov.cn/)。 - 海外支付卖家准入(不是买家市场):[Stripe 开户地区](https://stripe.com/global)、[PayPal 中国大陆账户类型](https://www.paypal.com/c2/webapps/mpp/account-selection)、[Paddle 卖家地区](https://www.paddle.com/help/legal/sanctions/which-countries-are-supported-by-paddle)、[Lemon Squeezy 卖家地区](https://docs.lemonsqueezy.com/help/getting-started/supported-countries)、[Creem 卖家地区](https://docs.creem.io/merchant-of-record/supported-countries)。 - 海外支付买家地区/方式:[Stripe 支付方式](https://docs.stripe.com/payments/payment-methods/overview)、[PayPal 支付方式](https://developer.paypal.com/docs/checkout/payment-methods/)、[Paddle 买家市场](https://developer.paddle.com/concepts/sell/supported-countries-locales/)与[支付方式](https://developer.paddle.com/concepts/payment-methods/)、[Lemon Squeezy 支付方式](https://docs.lemonsqueezy.com/help/checkout/payment-methods)、[Creem 支付方式](https://docs.creem.io/merchant-of-record/finance/payment-methods)。 diff --git a/skills/fxskill/references/payment-index.md b/skills/fxskill/references/payment-index.md new file mode 100644 index 0000000..405fc28 --- /dev/null +++ b/skills/fxskill/references/payment-index.md @@ -0,0 +1,26 @@ +# 支付资料索引 + +本索引只负责路由,不重复维护平台费率或资格细节。回答支付问题时,先按问题类型和市场读取最小必要文档,再回到对应平台档案查看 `最后核验日期`、`当前状态`、`推荐等级` 和 `待核验问题`。 + +| 问题 / 市场 | 读取文件 | 优先筛选字段 | 最后复核 | +| --- | --- | --- | --- | +| 中国大陆官方直连、网站一次性支付、扫码支付 | `payment-platform-cn-direct.md` | 当前状态、支付角色、资金路径、卖家地区、支持主体、买家地区与币种、支付方式、平台服务费、支付通道费、固定费用、提现费、退款费、拒付费、结算、结算周期与最低结算额、推荐等级、最后核验日期 | 2026-07-15 | +| 中国大陆桌面网页二维码收款 | `payment-platform-cn-direct.md` | 微信支付 Native、支付宝 AI 网页应用收款/电脑网站支付、银联在线网关支付;重点核对浏览器场景、支持主体、ICP备案、API/SDK、通道费和结算 | 2026-07-15 | +| 中国大陆手机浏览器网页收款 | `payment-platform-cn-direct.md` | 微信支付 H5、支付宝 AI 网页应用收款手机网页、银联网关/云闪付远程支付;重点核对 H5 主体资格、域名 ICP、App 内禁用场景和回调查单 | 2026-07-15 | +| 中国大陆微信内网页或 WebView 收款 | `payment-platform-cn-direct.md` | 微信支付 JSAPI、支付宝网页/移动应用安全支付、云闪付远程支付;重点核对 APPID 绑定、认证公众号/小程序、是否处在微信客户端内和产品权限 | 2026-07-15 | +| 中国大陆普通网站单次收款 | `payment-platform-cn-direct.md` | 支付宝 AI 网页应用收款、微信支付 Native/H5/JSAPI、银联在线网关支付;重点核对主体、类目、费率载体、结算账户、首单接入路径和最可能卡点 | 2026-07-15 | +| 中国大陆服务商、聚合接入、代收代结算、监控型方案 | `payment-platform-cn-services.md` | 虎皮椒、XorPay、PAYJS、面包多 Pay、BufPay;当前状态、平台类型、支付角色、资金路径、卖家地区、支持主体、买家地区与币种、支付方式、适合商品、平台服务费、支付通道费、固定费用、提现费、退款费、拒付费、结算、结算周期与最低结算额、推荐等级、待核验问题 | 2026-07-15 | +| 中国大陆创作者平台、内容付费、会员专栏、托管式销售 | `payment-platform-cn-creators.md` | 面包多内容交易、爱发电、小报童;托管创作者平台不是通用网站支付 API,重点核对平台类型、支付角色、资金路径、卖家地区、支持主体、支付方式、适合商品、平台服务费、支付通道费、固定费用、提现费、退款费、拒付费、结算、推荐等级、数据导出与迁移、待核验问题 | 2026-07-15 | +| 中国大陆场景决策、主体选择、首单路径、主备方案切换 | `payment-scenarios.md` | 主路线、当前成本、成立条件、执行路径、最容易卡住点、备选、引用档案 | 2026-07-15 | +| 海外直连 PSP、跨境收款、信用卡支付 | `payment-platform-global-psp.md` | 当前状态、支付角色、资金路径、卖家地区、支持主体、买家地区与币种、支付方式、平台服务费、支付通道费、固定费用、提现费、退款费、拒付费、结算、结算周期与最低结算额、推荐等级、待核验问题 | 待首批资料 | +| Merchant of Record、代售、税务代办 | `payment-platform-global-mor.md` | 当前状态、支付角色、资金路径、卖家地区、支持主体、买家地区与币种、支付方式、适合商品、平台服务费、支付通道费、固定费用、提现费、退款费、拒付费、结算、结算周期与最低结算额、推荐等级、待核验问题 | 待首批资料 | +| 订阅、自动续费、退款、拒付 | `payment-subscriptions.md` | 订阅与自动续费、退款和售后、固定费用、退款费、拒付费、数据导出与迁移、待核验问题 | 待首批资料 | +| 技术接入、回调、对账、迁移 | `payment-technical-operations.md` | API、SDK、插件和支付链接、接入路径、数据导出与迁移、实操来源、待核验问题 | 待首批资料 | + +## 使用顺序 + +1. 先用本索引缩小到最相关的市场和问题类型。 +2. 用户给出主体、商品和支付模型时,先读 `payment-scenarios.md`;场景文档不覆盖时再读取对应平台档案。 +3. 遇到费用、资质、地区、支付角色、支付方式、结算、产品状态等易变事实时,优先看目标档案中的 `最后核验日期` 与 `官方来源`。 +4. 档案存在 `待核验问题` 时,只有在推荐等级允许的前提下给出条件性建议,并明确说明还缺哪项证据。 +5. 遇到创作者平台时,先判断用户要的是托管内容售卖还是独立网站支付;只有前者才进入 `payment-platform-cn-creators.md` 的平台比较。 diff --git a/skills/fxskill/references/payment-platform-cn-creators.md b/skills/fxskill/references/payment-platform-cn-creators.md new file mode 100644 index 0000000..2ff5dc3 --- /dev/null +++ b/skills/fxskill/references/payment-platform-cn-creators.md @@ -0,0 +1,131 @@ +# 中国大陆创作者和托管销售平台档案 + +最后批量核验日期:2026-07-15。 + +托管创作者平台先承载内容、会员、订单、读者关系和售后,再提供支付入口。它可以比自建网站支付更快验证付费内容、专栏、资料包或小额服务,但不是通用网站支付 API:独立站通常只能跳转到平台商品页、同步平台订单,不能把平台收银台当成任意 SaaS 额度、AI 点数或官网订阅的嵌入式支付组件。选择这类平台时,默认会让出一部分品牌、客户数据、结账控制、定价规则、退款规则和迁移自由。 + +## 面包多内容交易 + +- 当前状态:正常运营 +- 平台类型:内容平台 / 托管数字内容交易 +- 运营主体:北京毛线球科技有限公司;面包多用户服务协议列明其提供面包多网站或移动应用服务。 +- 支付角色:托管内容交易平台和创作者结算服务方;普通模式由面包多统一收款后再向创作者结算,闪电结算和服务单按各自规则入账。 +- 资金路径:普通模式:买家微信或支付宝账户 -> 面包多平台收款账户 -> 面包多公司账户结算链路 -> 创作者可提现余额或提现账户;闪电结算和服务单的具体清算方公开资料没有写明。 +- 卖家地区:中国大陆创作者;海外用户使用和企业账户开通不作为本档案默认结论。 +- 支持主体:个人创作者可注册发布内容;闪电结算需填写个人信息并通过面包多认证,企业主体可联系面包多手动开通企业账户结算。 +- 买家地区与币种:中国大陆微信或支付宝用户,人民币;海外付款能力未纳入本档案结论。 +- 支付方式:面包多作品页、全家桶、订阅制作品、服务单和赞赏等托管页面发起支付;独立站可跳转到面包多商品页并携带独立订单号同步,不等同于在独立网站内嵌通用收银台。 +- 适合商品:原创文章、照片、视频、电子书、音乐、设计资源、软件代码、观点内容、合规网络资源、社群资格、技术服务、订阅制持续更新内容和创作者服务单。 +- 限制商品:盗版素材、违法违规内容、数字货币、赌博博彩、未经授权的个人隐私信息、投诉率过高或风控部门查处的内容。 +- 单次支付:支持。作品页购买、全家桶和服务单均可形成订单;开发者文档支持用面包多订单号或独立订单号查询订单状态。 +- 订阅与自动续费:支持订阅制作品按月或按年售卖持续更新作品、特殊权利资格、服务和 SaaS 软件;公开资料未把它写成微信或支付宝免密自动扣款。 +- API、SDK、插件和支付链接:提供开发者 Key、回调地址、订单查询、订单列表、作品列表、作品浏览与销售数据接口;回调需先开通闪电结算,官方提示不要只依赖回调,应结合订单查询。 +- 平台服务费:普通模式 5% 平台费;闪电结算总服务费 5.7%;服务单 3%。 +- 支付通道费:普通模式 1% 第三方支付费;闪电结算总服务费已含通道成本;服务单未单独公开通道费。 +- 结算:普通模式下订单收益先进入待结算收益,7 天后转入可提现余额,提现到支付宝一般不超过 24 小时;闪电结算下微信支付实时进入银行托管户并次日自动提现至银行卡,支付宝支付实时进入创作者支付宝余额;服务单标记完成后 24 小时内自动结算。 +- 固定费用、提现费、退款费和拒付费:固定费用:未公开统一数字(以后台显示为准) + 提现费:未公开统一数字(以后台显示为准) + 退款费:未公开统一数字(以后台显示为准) + 拒付费:未公开统一数字(以合同为准) +- 结算周期与最低结算额:普通模式可提现余额大于 1 元即可提现,每 24 小时一次且单次最高 5000 元;闪电结算每日最高收款 10 万元;超过 10 万元提现或企业账号付款需联系面包多开通企业付款权限。 +- 申请材料:注册面包多账号;闪电结算需填写个人信息、上传身份证正反面照片、申请微信和支付宝渠道,且公开规则要求先获得面包多认证;企业主体需联系面包多手动开通。 +- 接入路径:先把商品放在面包多作品、全家桶、订阅制作品或服务单页面,再按需开通闪电结算和开发设置;独立站只能把面包多作为托管交易页或订单同步来源,不应把它写成任意网站支付接口。 +- 退款和售后:普通订单支持创作者对 7 天内订单退款;闪电结算订单退款需确保支付宝余额或银行托管户有相应余额;订单投诉需创作者处理,投诉过多可能进入 highfee 模式。 +- 数据导出与迁移:官方开发文档提供订单列表、订单详情、作品列表、作品浏览与销售数据接口;公开资料能支持订单同步和销售数据查看,不能证明完整客户资料、支付账户或内容关系可一键迁出。 +- 实际优点:实践证据不足;官方资料显示它适合先把内容、附件、订阅、服务单和订单同步放到托管平台上验证,而不是先自建完整网站支付。 +- 实际问题:实践证据不足;公开资料显示费用和结算受普通模式、闪电结算、服务单、认证状态和投诉状态影响,独立站结账控制和客户迁移能力不能按通用支付 API 预期处理。 +- 推荐等级:仅作线索 +- 适用条件:中国大陆个人创作者已有内容、软件资料、课程资料、订阅作品或小额服务,接受买家在面包多托管页登录和支付,并能把订单同步当作辅助能力。 +- 不适用条件:需要官网内嵌收银台、任意 SaaS 额度自动发放、长期主支付通道、完整客户数据所有权、统一公开费率或低投诉高客单价业务。 +- 最后核验日期:2026-07-15 +- 官方来源:https://mbd.pub/;https://mbd.pub/help/;https://mbd.pub/help/withdraw.md;https://mbd.pub/help/lightning.md;https://mbd.pub/help/refund.md;https://mbd.pub/help/service.md;https://mbd.pub/help/subscription.md;https://mbd.pub/help/good&bad.md;https://mbd.pub/help/terms.md;https://mbd.pub/open_doc/README.md;https://mbd.pub/open_doc/get_call_back.md;https://mbd.pub/open_doc/out_order_id.md;https://mbd.pub/open_doc/%E8%8E%B7%E5%8F%96%E6%89%80%E6%9C%89%E8%AE%A2%E5%8D%95.md;https://mbd.pub/open_doc/%E9%80%9A%E8%BF%87%E8%AE%A2%E5%8D%95%E5%8F%B7%E8%8E%B7%E5%8F%96%E8%AE%A2%E5%8D%95%E4%BF%A1%E6%81%AF.md +- 实践来源:实践证据不足:2026-07-15 查到 2026 V2EX 面包多 Pay 讨论、2024 个人笔记、旧 V2EX 和旧教程,未达到两条相互独立、当前、可复核的面包多内容交易真实收款、退款和迁移记录门槛。 +- 待核验问题: + - 缺失事实:尚未确认面包多内容交易闪电结算和服务单的具体清算方,以及三种模式的具体适用条件、highfee 模式触发口径、企业账号与个人账号差异、拒付费规则、完整客户导出字段和内容迁移路径。 + - 已查来源:2026-07-15 已检查面包多首页 https://mbd.pub/、帮助中心 https://mbd.pub/help/、提现规则、闪电结算、退款、服务单、订阅制、可售内容、用户服务协议和开发者订单/回调文档。 + - 需要询问:面包多团队能否说明闪电结算和服务单的具体清算方、三种模式分别适用哪些创作者与商品,以及 highfee、企业差异、拒付费、导出字段和迁移路径? + - 可接受证据:面包多官方页面、帮助文档、后台截图、合同、报价单、邮件或书面回复中明确写出清算方、适用条件、highfee、企业差异、拒付费、导出字段和迁移路径。 + +## 爱发电 + +- 当前状态:正常运营 +- 平台类型:内容平台 / 会员赞助与托管售卖 +- 运营主体:电羊科技(北京)有限公司;服务条款和隐私政策均指向该主体。琼ICP备18001024号-1 仅作历史残留,不代替运营主体。 +- 支付角色:创作者赞助和商品售卖平台;爱发电承载主页、会员方案、商品、订单、余额和提现,支付方式来自微信支付与支付宝。 +- 资金路径:买家微信或支付宝账户 -> 爱发电统一收款账户 -> 协议约定的结算处理(公开资料没有写明具体清算方) -> 创作者余额或提现账户 +- 卖家地区:中国大陆创作者为默认路径;境外创作者收款资格不作为本档案结论。 +- 支持主体:注册后可成为创作者并建立主页、会员赞助方案和内容;搜索和发现页展示需要认证,认证由工作人员确认创作者本人。 +- 买家地区与币种:中国大陆微信或支付宝用户,人民币;无微信或支付宝的用户只有官方私信确认后的人工代付路径,不属于常规网站支付入口。 +- 支付方式:爱发电主页、会员方案、赞助、售卖商品、作品集、实体奖励和物流信息;没有自动续费或自动扣款。 +- 适合商品:会员赞助、无回馈赞助、专属内容、数字内容、实体回馈、作品售卖、兑换码、同人/独立创作和能通过平台订单同步的轻量权益。 +- 限制商品:平台公开指南没有给出完整禁售清单,本档案不把它外推为任意 SaaS、AI 点数、金融、游戏充值或高风险虚拟权益的通用支付通道。 +- 单次支付:支持。售卖商品和作品集可做永久售卖,用户支付后可查看关联内容;会员赞助也可一次支付多个月。 +- 订阅与自动续费:支持按月、季度或年度的会员赞助有效期,但官方 FAQ 明确没有任何形式的自动扣费和自动续费。 +- API、SDK、插件和支付链接:提供 Webhook 和 API;Webhook 推送订单,API 可查询历史订单和赞助者,官方提示服务器异常时可能不能及时推送,建议结合 API 使用。 +- 平台服务费:5%;官方创作者 FAQ 将总扣费 6% 拆为 5% 爱发电平台服务费和 1% 支付手续费。 +- 支付通道费:1%;官方创作者 FAQ 写明该 1% 为支付宝、微信等支付方式收取的手续费。 +- 结算:每个自然月获得的赞助中当月部分,在下个月 1 号白天一次性进入爱发电余额,可从管理面板提现;用户一次支付多个月时平台逐月给到作者。 +- 固定费用、提现费、退款费和拒付费:固定费用:未公开统一数字(以后台显示为准) + 提现费:未公开统一数字(以后台显示为准) + 退款费:未公开统一数字(以后台显示为准) + 拒付费:未公开统一数字(以合同为准) +- 结算周期与最低结算额:当前月赞助款下月 1 号白天进入余额;最低提现额、提现到账账户和提现手续费以管理面板显示为准。 +- 申请材料:注册爱发电账号,成为创作者,设置主页和会员赞助方案;发现页和搜索展示需认证,认证流程包括在社交平台发布爱发电主页链接并私信反馈。 +- 接入路径:先把内容、会员方案或售卖商品放在爱发电页面,再用 Webhook/API 同步平台订单;独立站只能把爱发电作为托管订单来源,不应把它当作任意网站收银台。 +- 退款和售后:按服务条款,平台协调售后和争议处理,可冻结款项,并决定全额或部分退款,或决定继续结算;后台具体操作和费项仍以平台处理结果或管理面板为准。 +- 数据导出与迁移:API 可查询订单和赞助者;实体物流指南支持收件信息导出;公开资料不能证明完整客户资料、支付方式或会员关系可完整迁移到独立网站。 +- 实际优点:实践证据不足;官方资料显示 6% 扣费拆分清楚,会员赞助、商品售卖、实体物流和订单 API/Webhook 覆盖了创作者常见托管销售场景。 +- 实际问题:实践证据不足;公开资料显示它没有自动续费,Webhook 需要和 API 交叉校验,后台提现/退款细节、完整客户导出和独立站迁移缺少当前统一官方说明。 +- 推荐等级:仅作线索 +- 适用条件:创作者要做会员赞助、数字内容、实体回馈或作品售卖,能接受买家在爱发电页面完成支付,并把 API/Webhook 当作同步托管订单的工具。 +- 不适用条件:需要官网内嵌支付、免密自动续费、AI/SaaS 用量实时扣费、完整客户数据迁移或当前统一退款规则后再决策的业务。 +- 最后核验日期:2026-07-15 +- 官方来源:https://afdian.com/;https://afdian.com/term;https://afdian.com/privacy;https://guide.afdian.com/new/for-new-creators;https://guide.afdian.com/faq/faq-for-creators;https://guide.afdian.com/faq/faq-for-users;https://guide.afdian.com/creator/developer;https://guide.afdian.com/creator/sell-album;https://guide.afdian.com/creator/shipment +- 实践来源:实践证据不足:2026-07-15 查到 CreatorCut、GitHub afdian-linker、SweetAfdian、旧 SegmentFault 和 V2EX 讨论,但缺少两条相互独立、当前、可复核的真实创作者收款、退款、导出和迁移记录。 +- 待核验问题: + - 缺失事实:尚未确认爱发电具体清算方、当前提现手续费、最低提现额、后台退款操作路径、完整客户导出字段、独立站结账嵌入能力,以及 AI/SaaS 用量权益是否属于可稳定售卖类目。 + - 已查来源:2026-07-15 已检查爱发电首页 https://afdian.com/、新创作者指南、创作者 FAQ、用户 FAQ、开发者 API 和 Webhook、售卖商品关联作品集、实体与物流指南。 + - 需要询问:爱发电团队能否说明具体清算方、当前提现手续费和最低提现额、后台退款费项、客户导出字段及独立站结账边界? + - 可接受证据:爱发电官方页面、帮助文档、管理面板截图、协议、邮件或书面回复中明确写出清算方、提现费项、退款流程、导出字段、嵌入方式和适用商品类目。 + +## 小报童 + +- 当前状态:正常运营 +- 平台类型:内容平台 / 代售付费专栏 +- 运营主体:杭州浮墨网络科技有限公司;创作者合作协议 V1.0 标明其为小报童相关服务主体。 +- 支付角色:付费专栏托管平台和创作者服务方;小报童承载专栏、内容、订单、报童币、钱包、退款审核和提现,个人提现委托云账户等第三方服务机构结算及税务处理。 +- 资金路径:读者支付账户 -> 小报童平台收款账户 -> 协议约定的结算处理(公开资料没有写明具体清算方) -> 创作者个人云账户或企业对公账户 +- 卖家地区:中国大陆个人创作者和企业创作者;平台要求首次创建专栏或提现前按要求提交真实身份和资质材料。 +- 支持主体:个人创作者需有效手机号、联系地址和必要法定资质;企业创作者需营业执照、授权委托书、邮箱、手机号、联系地址和必要法定资质。 +- 买家地区与币种:中国大陆读者,人民币和平台报童币;本档案不覆盖跨境读者支付。 +- 支付方式:小报童专栏页面、微信服务号、桌面浏览器和报童币订阅或购买;平台提供订阅制和买断制专栏,不是独立网站通用支付 API。 +- 适合商品:付费专栏、订阅制内容、买断制知识产品、Newsletter 式投递和个人知识内容发行。 +- 限制商品:平台不欢迎利益噱头与内容价值不匹配、剽窃、散播谣言、分发盗版、挑战法律法规边界的内容;免费专栏当前不提供。 +- 单次支付:支持买断制专栏和付费专栏购买;读者可在桌面端、微信服务号和小报童页面阅读。 +- 订阅与自动续费:支持订阅制专栏和续订提醒;公开读者指南描述到期前和过期后的续订提醒,不把它写成自动扣款。 +- API、SDK、插件和支付链接:官方帮助中心未发现公开 API、SDK 或 Webhook 文档;小报童更像托管专栏后台和微信投递服务,不应作为任意网站支付接口。 +- 平台服务费:15%;官方提现页和创作者合作协议均写明订单支付时扣除订单金额的 15%,合伙人分销收入不收平台服务费。 +- 支付通道费:未公开统一数字(以后台显示为准) +- 结算:专栏订阅订单支付后,经过 48 小时且无退款行为后解冻提现;创作者申请提现后,小报童一般在每周四 16:00-19:00 委托云账户操作,节假日顺延;企业账户需提供 6% 增值税专用发票后打款。 +- 固定费用、提现费、退款费和拒付费:固定费用:未公开统一数字(以后台显示为准) + 提现费:个人提现由云账户等第三方服务机构按提现金额收取约 6% 服务费,用于结算、税务处理与报送,不包含实际税金;企业提现需提供 6% 增值税专用发票。 + 退款费:成功退费订单不收取平台服务费,退款以报童币退回平台账户且不退回原支付方式。 + 拒付费:未公开统一数字(以合同为准) +- 结算周期与最低结算额:专栏订阅资金 48 小时无退款后可解冻提现;提现操作一般每周四 16:00-19:00;最低提现额公开帮助页未列统一数字,以钱包后台显示为准。 +- 申请材料:个人创作者提交有效手机号、联系地址和必要资质;企业创作者提交营业执照、企业授权个人运营的授权委托书、邮箱、手机号、联系地址和必要资质;个人提现需签约云账户。 +- 接入路径:先申请或创建小报童付费专栏,在平台后台发布内容和设置定价,再把专栏链接或二维码用于获客;独立站只能导流到小报童专栏,不应把小报童当官网支付组件。 +- 退款和售后:读者使用报童币订阅后 24 小时内可申请退订,平台 48 小时内人工审核;审核通过退回报童币,报童币不支持提现或退回原支付方式;连续退订三次进入冷静期。 +- 数据导出与迁移:创作者中心可看数据分析、内容管理和订阅者管理;创作者 FAQ 写明订阅者授权邮箱订阅时可导出邮箱,后续也会提供导出功能;公开资料不能证明完整订单、支付流水、读者关系和内容可完整迁出。 +- 实际优点:实践证据不足;官方资料显示费用、个人提现第三方服务费、48 小时退款窗口和订阅者邮箱导出边界相对清楚,适合把知识专栏先放在托管发行平台验证。 +- 实际问题:实践证据不足;15% 是订单平台服务费,个人提现约 6% 是按提现金额收取的第三方结算和税务处理服务费且不含实际税金,不能简单相加成 21% 订单费。 +- 推荐等级:仅作线索 +- 适用条件:中国大陆个人或企业创作者做付费专栏、订阅制内容或买断制知识产品,接受平台托管、报童币退款和云账户个人提现路径。 +- 不适用条件:需要独立站内支付、实时 API/Webhook、完整客户资料迁移、原路退款、免费专栏、低抽成支付通道或任意 SaaS/AI 用量收费。 +- 最后核验日期:2026-07-15 +- 官方来源:https://xiaobot.net/;https://help.xiaobot.net/;https://help.xiaobot.net/feature.html;https://help.xiaobot.net/faq-for-creator.html;https://help.xiaobot.net/withdraw.html;https://help.xiaobot.net/yunzhanghu.html;https://help.xiaobot.net/reader.html;https://help.xiaobot.net/creator-legal.html;https://help.xiaobot.net/legal.html;https://help.xiaobot.net/partner.html +- 实践来源:实践证据不足:2026-07-15 查到第三方榜单、CreatorCut、人人都是产品经理旧体验文章和旧专栏复盘,但未达到两条相互独立、当前、可复核的真实创作者提现、退款、导出和迁移记录门槛。 +- 待核验问题: + - 缺失事实:尚未确认小报童当前支付通道费、最低提现额、具体支付商户主体、具体清算方、是否存在公开订单 API 或 Webhook、完整订单和读者数据导出字段、独立站嵌入结账能力以及买断制订单退款细则。 + - 已查来源:2026-07-15 已检查小报童首页 https://xiaobot.net/、帮助中心、功能指南、创作者 FAQ、提现及服务费、云账户签约、读者使用指南、创作者合作协议、用户协议和合伙人计划。 + - 需要询问:小报童团队能否说明具体支付商户主体和具体清算方分别是谁,以及当前费用、接口、导出、嵌入和退款边界? + - 可接受证据:小报童官方页面、帮助文档、后台截图、合同、报价单、邮件或书面回复中明确写出支付商户主体、清算方、费用、接口、导出字段、嵌入方式和退款规则。 diff --git a/skills/fxskill/references/payment-platform-cn-direct.md b/skills/fxskill/references/payment-platform-cn-direct.md new file mode 100644 index 0000000..640cbf2 --- /dev/null +++ b/skills/fxskill/references/payment-platform-cn-direct.md @@ -0,0 +1,131 @@ +# 中国大陆官方直连支付档案 + +最后批量核验日期:2026-07-15。 + +同一个支付机构会同时提供多个支付产品,浏览器场景、入口、主体资格和审核材料并不相同。回答时不要把“支持微信支付”“支持支付宝”“支持银联”当成统一能力;必须落到 Native 扫码、H5 手机浏览器、JSAPI 微信内网页、电脑网站支付、AI 订阅、AI 按量、网银网关或云闪付远程支付等具体产品。 + +## 微信支付 + +- 当前状态:正常运营 +- 平台类型:官方直连 +- 运营主体:财付通支付科技有限公司(微信支付/财付通体系)。 +- 支付角色:支付机构与商户支付平台;普通商户模式下商户是收款方,微信支付提供下单、收银、清算、账单、退款和通知能力。 +- 资金路径:买家微信零钱或绑定银行卡 -> 微信支付商户号 -> 财付通支付清算体系 -> 商户号关联结算银行卡 +- 卖家地区:中国大陆商户;具体准入随产品和主体类型变化。 +- 支持主体:Native、JSAPI、小程序、付款码等基础权限可覆盖企业、个体工商户、事业单位、政府机关、社会组织等主体,且小微商户可申请 JSAPI、小程序、Native 和付款码;H5 支付公开准入只列企业、事业单位、政府机关、社会组织,个体工商户和小微商户不在 H5 支付支持范围。不能笼统写“个体户支持微信支付”,必须按 Native/H5/JSAPI 等场景拆开判断。 +- 买家地区与币种:中国大陆微信支付用户,人民币;本档案不覆盖跨境微信支付。 +- 支付方式:Native 原生支付用于桌面网站或其他页面展示微信二维码;JSAPI 网页支付用于微信客户端内打开的商户 HTML5 页面;H5 支付用于手机浏览器网页且不支持在 App 内使用;小程序支付用于商户小程序;App 支付用于商户 App,不作为普通网站默认路线。 +- 适合商品:实体商品、普通本地生活服务、SaaS/软件开发/其他互联网服务、课程培训等可按对应行业入驻的业务。 +- 限制商品:违法违规业务、金融投资、游戏、在线音视频、在线图书/音乐、网络直播、虚拟充值、彩票、医疗药品等需要按官方行业属性和特殊资质表补充资质;AI 图像额度、虚拟权益、数字内容包应先核对是否归入“软件开发/其他互联网服务”或虚拟业务类目。 +- 单次支付:支持。Native 下单 API 生成 code_url 二维码;H5、JSAPI、小程序、App 有各自下单和调起链路;支付结果必须结合异步通知、查单和 T+1 账单核对。 +- 订阅与自动续费:不是基础网站支付默认能力;需要按微信支付免密服务/自动续费规则申请并获得用户授权,不得默认勾选、提前扣款、超额扣款或把单次支付入口隐藏。 +- API、SDK、插件和支付链接:APIv3 需要商户号、APPID 绑定、商户 API 证书、签名验签、回调解密;Native、H5、JSAPI 等均有独立接口文档。官方直连网站支付以 API 下单生成二维码链接、H5 跳转链接或 JSAPI 调起参数为主,本档案不把它认定为免开发支付链接。 +- 平台服务费:无此项;本档案按官方直连支付机构记录,不另列第三方平台服务费。 +- 支付通道费:未公开统一数字(以后台显示为准) +- 固定费用、提现费、退款费和拒付费:固定费用:未公开统一数字(以后台显示为准) + 提现费:0 + 退款费:未公开统一数字(以后台显示为准) + 拒付费:未公开统一数字(以合同为准) +- 结算:新资金流交易当天实时结算至商户平台基本账户;商户可将资金提现至商户号关联银行卡。 +- 结算周期与最低结算额:官方客服页列示新资金流 T+1 到商户平台基本账户;自动提现可按日、周、月设置,资金预计在发起提现后约 2 小时内到账,手动提现次日起 1-3 个工作日留意到账;留存额、最低转出额和行业差异以商户后台显示为准。 +- 申请材料:商户主体证照、法定代表人/经营者资料、结算银行卡、已认证 APPID 载体;H5 支付还需支付域名、ICP备案截图、经营场所简介、首页和经营场景截图、主体关系证明、特殊行业资质等。 +- 接入路径:先申请微信支付商户号和产品权限;桌面网站优先核对 Native,微信内网页核对 JSAPI,手机浏览器核对 H5;H5 从商户平台“产品中心 -> H5 支付 -> 申请开通”提交域名和 ICP 材料,Native 从商户平台开通 Native 权限并绑定 APPID,随后配置 APIv3 证书、回调、查单和账单下载。 +- 退款和售后:Native API 列表包含退款申请、退款查询、退款结果回调;免密服务规则要求商户履行售后和投诉处理义务。 +- 数据导出与迁移:微信支付提供交易账单、资金账单和下载账单接口;支付回调和查单指引要求 T+1 获取 T 日交易账单并与商户系统订单核对。 +- 实际优点:官方已证实:产品文档覆盖 Native/H5/JSAPI、查单、回调、账单、退款和签名验签,适合有开发能力和合规主体的中国大陆网站作为候选直连能力继续核验。实践证据不足,不能据此判断审核体验或真实到账稳定性。 +- 实际问题:官方已证实:H5 有主体限制、支付域名 ICP 与主体关系、特殊行业资质、APPID 绑定和自动续费规则。尚未确认:AI/虚拟数字内容在 Native、JSAPI、H5 下的准确类目、核准费率和结算限制。 +- 推荐等级:仅作线索 +- 适用条件:作为官方直连线索适用于中国大陆企业或符合具体产品权限的个体工商户,面向中国大陆买家收人民币单次款,能按真实浏览器场景选择 Native、JSAPI 或 H5,并能准备 ICP、APPID、类目资质和 API 接入;只有产品权限、类目、费率和结算已由商户后台、合同或官方书面结果确认后,才能作为正式接入路线。 +- 不适用条件:自然人直接收款;个体工商户或小微商户要接 H5 手机浏览器支付;没有 ICP 或页面不能公开展示经营内容;AI 图像额度、虚拟权益、课程、音视频、游戏等类目无法提供对应资质时。 +- 最后核验日期:2026-07-15 +- 官方来源:https://pay.wechatpay.cn/doc/v3/merchant/4012068590;https://pay.wechatpay.cn/doc/v3/merchant/4015616699;https://pay.wechatpay.cn/doc/v3/merchant/4012791832;https://pay.wechatpay.cn/doc/v3/merchant/4013287193;https://pay.wechatpay.cn/doc/v3/merchant/4012791841;https://pay.wechatpay.cn/doc/v3/merchant/4015614538;https://pay.wechatpay.cn/doc/v3/merchant/4012791877;https://pay.wechatpay.cn/doc/v3/merchant/4012075249;https://pay.wechatpay.cn/doc/v3/merchant/4012365342;https://pay.wechatpay.cn/doc/v3/merchant/4013519312;https://kf.qq.com/faq/140225MveaUz1504092YFjeM.html;https://kf.qq.com/faq/161223NJBr2u161223Mfeqei.html;https://kf.qq.com/faq/220228IJb2UV220228uEjU3Q.html。 +- 实践来源:实践证据不足:2026-07-15 未取得两条相互独立、当前、可复核的真实接入记录;不使用官方营销页或单点经验替代实践经验。 +- 待核验问题: + - 缺失事实:尚未确认中国大陆企业或个体工商户销售 AI 图像额度、AI 生成会员、虚拟权益包时,在 Native、JSAPI、H5 各产品下应选择的准确行业类目、所需特殊资质、核准费率和结算限制。 + - 已查来源:2026-07-15 已检查微信支付产品场景页、主体权限矩阵、H5 产品介绍、H5 域名配置、H5 申请指引、Native 接入准备、Native 下单 API、查单回调指引、APIv3 签名验签、免密服务规则、腾讯客服结算费率页和行业属性资质页。 + - 需要询问:微信支付商户审核或商务团队能否针对中国大陆企业或个体工商户销售 AI 图像额度、AI 生成会员、虚拟权益包,分别说明 Native、JSAPI、H5 可申请类目、所需资质、核准费率和结算限制? + - 可接受证据:微信支付商户平台后台截图、产品权限申请结果、类目审核结果、签约页、合同、商户平台核准记录、官方页面、官方文档、邮件或书面回复中明确写出产品、主体、类目、费率和结算路径。 + +## 支付宝 + +- 当前状态:正常运营 +- 平台类型:官方直连 +- 运营主体:支付宝(杭州)数字服务技术有限公司(支付宝开放平台官网页脚主体);AI 支付开放平台、AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的正式收单或签约主体尚未在公开产品页、文档或申请页中直接写明,仍以签约页或合同载明主体为准。 +- 支付角色:支付机构与开放平台;商家是收款方,支付宝提供收银台、统一收单、退款、查单、账单下载、AI 订阅和 AI 按量等支付能力。 +- 资金路径:买家支付宝余额、银行卡或花呗等支付工具 -> 支付宝统一收单或 AI 支付收银台 -> 支付宝清算体系 -> 卖家签约支付宝商家账户或合同约定结算账户 +- 卖家地区:中国大陆商家;本档案只覆盖面向国内支付宝用户的人民币收款。 +- 支持主体:官方已证实:AI 网页应用收款明确支持个人收款场景和个人开发者;该结论只限 AI 网页应用收款,不能扩大为所有支付宝网站支付、AI 订阅 SaaS 或 AI 按量付费都支持个人。AI 订阅 SaaS 接入文档的准入条件仍列示支付宝企业账号。具体自然人账号、AI/数字商品类目、费率和结算仍以签约页、后台、合同或官方书面结果为准。 +- 买家地区与币种:中国大陆支付宝用户,人民币;可使用支付宝余额、银行卡、花呗等支付宝收银台支持的支付工具。 +- 支付方式:AI 网页应用收款覆盖电脑网页和手机浏览器网页,电脑网页支持账号登录和扫码,手机网页可衔接支付宝客户端或网页收银台;AI 订阅 SaaS 支持周期订阅、席位、按量自动续购;AI 按量付费使用 402 Payment Required/x402 链路;开放平台网页/移动应用仍提供网页和移动端安全支付能力。 +- 适合商品:平台官网声称覆盖 AI SaaS 会员、AI 创作工具订阅、视频/图片生成积分与订阅混合计费、API/Skill/MCP 按调用计费、数字内容、课程、普通电商和本地生活网页订单;能否正式用于具体主体和类目仍以签约页、后台、合同或官方书面结果为准。 +- 限制商品:AI、数字内容、课程、虚拟商品、游戏、音视频等应按支付宝签约类目和资质审核结果处理;传统电脑网站旧文档要求网站 ICP 备案、页面可访问、经营内容和商品信息完整,并提示个体工商户部分行业受限。 +- 单次支付:支持。AI 网页应用收款接入指南使用 alipay.trade.page.pay 发起电脑网站页面支付,并要求以异步通知或查询接口结果为准。 +- 订阅与自动续费:平台官网声称支持。AI 订阅 SaaS 官方文档列出个人与团体订阅、周期扣款、席位增减、低代码收银台、订阅升降级、续费失败策略和按量自动续购;接入文档准入条件明确指向支付宝企业账号和联系销售提交信息,个人开发者或个体工商户是否能正式签约尚未确认。 +- API、SDK、插件和支付链接:支持官方 SDK、alipay.trade.page.pay、alipay.trade.query、alipay.trade.refund、alipay.data.dataservice.bill.downloadurl.query;AI 网页、AI 移动、AI 按量均提供 `npx -y @alipay/alipay-aipay@latest install` 的 Skill 接入路径;AI 订阅低代码方案可由后台配置价格表并通过接口返回 checkout_url。 +- 平台服务费:无此项;本档案按官方直连支付机构记录。AI 订阅或按量产品若另有商业报价,应以报价单或合同记录,不把营销页示例写成统一平台费。 +- 支付通道费:未公开统一数字(以报价单为准) +- 固定费用、提现费、退款费和拒付费:固定费用:未公开统一数字(以报价单为准) + 提现费:未公开统一数字(以后台显示为准) + 退款费:AI 网页应用收款未发现单独退款操作费公开数字;退款时已扣交易手续费不退回(官方 AI 网页应用收款接入指南,2026-07-15 核验;仅限 AI 网页应用收款口径,不外推到支付宝其它产品) + 拒付费:未公开统一数字(以合同为准) +- 结算:AI 产品页面只公开“交易、退款和结算体验”等能力,未给出统一公开结算周期;传统电脑网站旧文档写交易款项到商户支付宝账户。正式建议应以签约页、后台或合同显示的结算账户和周期为准。 +- 结算周期与最低结算额:AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的公开页没有统一结算周期和最低结算额;具体周期、最低额、提现规则和发票能力以签约页、后台显示或业务人员报价单为准。 +- 申请材料:AI 网页应用收款可从一站式接入提交当前账号、商品类目和网站资料;AI 订阅 SaaS 文档要求支付宝企业账号并通过链接提交信息等待解决方案专家联系;网页/移动应用开放平台路径是创建应用、开发配置、提交审核和上线;传统电脑网站旧文档要求营业执照、主体一致的支付宝账户、ICP备案和完整网站商品信息。 +- 接入路径:普通网站单次收款可先用 AI 网页应用收款或开放平台网页应用作为官方核验入口;自然人使用 AI 网页应用收款时,从一站式接入提交当前账号、商品类目和网站资料,以后台申请结果确认能否开通、费用和结算。AI 订阅 SaaS 联系销售;AI 按量付费按接入指南返回 402 账单、验支付凭证并发送履约回执;其他主体和产品仍以各自签约页、后台、报价单或合同为准。 +- 退款和售后:AI 网页应用接入指南列出 alipay.trade.refund 和退款查询;交易发生后 12 个月内可发起退款,资金原路返回用户账号,退款时手续费不退回,退款信息以接口或退款查询为准。 +- 数据导出与迁移:AI 网页应用接入指南列出 alipay.data.dataservice.bill.downloadurl.query,可获取商家离线账单下载地址;迁移到其他通道时需保留本地订单、订阅状态、价格表和履约记录。 +- 实际优点:官方已证实:2026-07-14 更新的 AI 支付文档覆盖网页收款、订阅 SaaS、按量付费和 Agent 支付,并给出 alipay.trade.page.pay、异步通知、查单、退款和账单等接口链路。平台官网声称这些产品适合 AI 原生业务先从产品形态选型。实践证据不足,不能据此判断真实签约通过率、审核体验或到账稳定性。 +- 实际问题:AI 网页应用收款虽明确支持个人场景,但当前账号和商品类目能否开通、费率及结算仍以后台申请结果、签约页或合同为准;AI 订阅与按量产品的主体资格不能从该个人产品外推。 +- 推荐等级:仅作线索 +- 适用条件:作为官方直连线索适用于中国大陆商家评估 AI SaaS、网页一次性支付、订阅、席位、API/Skill/MCP 按量计费;自然人使用 AI 网页应用收款时,只有后台申请结果显示当前账号和商品类目可开通,且费用与结算可接受,才完成签约;其他主体和产品按各自正式结果判断。 +- 不适用条件:把 AI 网页应用收款的个人支持扩大为全部支付宝网站支付;未取得后台申请结果就直接上线;需要在公开资料中得到统一费率和统一结算周期后再决策。 +- 最后核验日期:2026-07-15 +- 官方来源:https://aipay.alipay.com/docs/overview.html;https://aipay.alipay.com/products/ai-web-app;https://aipay.alipay.com/docs/ai-web-app-payment-qianyi/ai-web-app-payment-integration-guide.html;https://aipay.alipay.com/subscription;https://aipay.alipay.com/docs/subscribe/introduce.html;https://aipay.alipay.com/callpay;https://aipay.alipay.com/docs/ai-receive/MACHINE_PAY.html;https://open.alipay.com/module/webApp;https://b.alipay.com/signing/productScene.htm?navKey=wysk&sceneId=wysk;https://developer.alibaba.com/docs/doc.htm?articleId=105898&docType=1&treeId=270。 +- 实践来源:实践证据不足:2026-07-15 未取得两条相互独立、当前、可复核的真实接入记录;不使用 AI 产品营销页、示例 UI 或旧电脑网站文档替代实践经验。 +- 待核验问题: + - 缺失事实:AI 网页应用收款已明确支持个人场景;尚未取得当前自然人账号和目标商品类目的后台申请结果,也未确认对应费率、结算账户、结算周期和最低结算额。AI 订阅 SaaS 与 AI 按量付费的主体资格仍需分别确认。 + - 已查来源:2026-07-15 已检查支付宝官网 AI 支付概览、AI 网页应用收款页、AI 网页接入指南、AI 订阅 SaaS 页、AI 订阅产品介绍、AI 按量付费页、AI 按量接入指南、开放平台网页/移动应用页、商家平台传统网页收款入口和 2017 电脑网站支付旧文档。 + - 需要询问:支付宝 AI 支付能否书面确认当前自然人账号使用 AI 网页应用收款销售目标 AI/数字商品类目时的开通结果、费率、结算账户、结算周期和最低结算额,并确认该结果不适用于 AI 订阅 SaaS 与 AI 按量付费? + - 可接受证据:支付宝官方页面、产品文档、签约页、商家平台后台截图、申请结果、报价单、合同、邮件或书面回复中明确写出产品、账号类型、主体、类目、费率、结算周期、最低结算额和结算账户。 + +## 银联 + +- 当前状态:限定开放 +- 平台类型:官方直连 +- 运营主体:中国银联股份有限公司。 +- 支付角色:银行卡组织、清算网络和全渠道支付处理方;商户服务网站手册说明成员机构为收单主体,银联提供收单业务管理和交易处理,不把银联写成小商户的直接收单方。 +- 资金路径:买家银行卡、云闪付或网银账户 -> 收单机构商户号 -> 中国银联全渠道支付与清算网络 -> 收单机构合同约定的商户结算账户 +- 卖家地区:中国大陆商户;现实路径通常先由收单机构入网、签约和审核,再接入银联开放平台或全渠道接口。 +- 支持主体:网银支付业务直联商户接入指引适用于个人网银支付业务和企业网银支付业务的直联商户及其收单机构;云闪付远程支付指引写明商户联系收单机构提交入网申请,收单机构负责真实性和合规性审核。公开资料没有给出自然人或个体工商户自助直连入网结论,小商户现实路径应优先找银行/收单机构/服务商。 +- 买家地区与币种:中国大陆银行卡、云闪付或网银用户,人民币;本档案不覆盖境外发卡、跨境清算或外币。 +- 支付方式:在线网关支付用于个人网银 B2C 跳转;企业网银支付用于 B2B;云闪付远程支付覆盖 Apple Pay、安卓 Pay、云闪付统一收银台等远程在线场景;另有全渠道后台直接支付订购产品但不作为普通新手网站默认路线。 +- 适合商品:有正式收单机构支持的实体商品、服务、B2B 企业采购、公共缴费、银行卡网关和云闪付远程支付场景。 +- 限制商品:云闪付远程支付指引严禁黄赌毒等违法行业,限制 P2P 借贷、微盘、互联网彩票,并慎重接入基金、理财、贵金属、众筹、融资租赁、直销银行等互联网金融投资行业;Apple Pay 场景下,苹果认定的 In-App 虚拟数字产品原则上不允许替代原 iOS 支付方式;实物业务和虚拟业务原则上区分商户号入网。 +- 单次支付:支持。在线网关支付、企业网银支付、云闪付远程支付均属于单笔订单支付路线;直联技术文档要求商户实现交易查询、后台通知、对账文件下载等能力。 +- 订阅与自动续费:公开直联资料没有给出面向普通网站订阅/自动续费的自助产品结论;银行卡订购/后台直接支付产品涉及持卡人信息采集、账户验证和扣款,不适合作为建站新手默认订阅方案。 +- API、SDK、插件和支付链接:银联开放平台提供在线网关支付、企业网银支付、全渠道接口规范、测试商户号、测试环境网关地址、开发包、证书和问题排查;普通支付链接或免开发收款页不作为本档案结论。 +- 平台服务费:无此项;本档案按银联网络和收单机构入网链路记录,不把收单机构或服务商报价列作银联平台服务费。 +- 支付通道费:未公开统一数字(以合同为准) +- 固定费用、提现费、退款费和拒付费:固定费用:未公开统一数字(以合同为准) + 提现费:未公开统一数字(以合同为准) + 退款费:未公开统一数字(以合同为准) + 拒付费:未公开统一数字(以合同为准) +- 结算:银联处理交易和清算网络,收单机构是收单主体;商户结算账户、结算周期和清算文件由收单机构合同、入网配置和商户服务网站对账文件共同确定。 +- 结算周期与最低结算额:公开资料显示入网会复核 MCC、费率等信息,并配置生产参数;商户服务网站提供交易查询、清算对账、对账文件下载和清算文件下载。具体结算周期、最低结算额和到账账户以收单机构合同及商户服务网站显示为准。 +- 申请材料:商户先联系收单机构提交入网申请;收单机构与商户签订业务合作协议,审核商户真实性和合规性,将商户信息录入联合联网通用商户注册平台;如涉及特殊 MCC 或特殊费率,需提交相关材料并由业务运营中心审核。 +- 接入路径:先找已有银行/收单机构确认可做在线网关支付、企业网银支付或云闪付远程支付;由收单机构完成入网和生产参数;商户在 open.unionpay.com 下载技术规范和开发包,使用测试商户号或真实生产商户号联调,完成小额验证、对账、证书和后台通知后上线。 +- 退款和售后:商户服务网站手册覆盖单笔退货/消费撤销、B2B 交易退货、批量退货、复核和结果文件下载;全渠道接口规范要求商户实现交易状态查询以减少差错。 +- 数据导出与迁移:商户服务网站提供交易查询、交易明细下载、交易流水下载、UPOP 对账文件下载、B2B 对账文件下载、清算文件下载等能力。 +- 实际优点:不形成实践结论;仅按官方材料看,适合已经有收单机构支持、需要银行卡/网银/云闪付链路、能承担证书和对账开发的企业或机构。 +- 实际问题:不形成实践结论;最可能卡在找不到愿意入网的收单机构、MCC 和费率审核、虚拟业务区分商户号、App Store 虚拟数字产品限制、证书/对账/后台通知开发成本以及非自助化入网周期。 +- 推荐等级:仅作线索 +- 适用条件:已有银行或收单机构愿意承接入网,业务需要银行卡网关、企业网银 B2B 或云闪付远程支付,并能完成银联全渠道接口、证书、后台通知、交易查询、退款和对账。 +- 不适用条件:建站新手、自然人、刚起步个体工商户想快速开通网站收款;没有收单机构支持;希望像支付链接一样免开发上线;AI 生成、虚拟权益、数字内容订阅还没有明确 MCC、收单合同和 App Store/监管合规结论。 +- 最后核验日期:2026-07-15 +- 官方来源:https://open.unionpay.com/upload/download/%E4%BA%91%E9%97%AA%E4%BB%98%E4%B8%9A%E5%8A%A1%E5%95%86%E6%88%B7%E6%9C%8D%E5%8A%A1%E6%8C%87%E5%BC%95V1.1.pdf;https://open.unionpay.com/upload/download/%E4%B8%AD%E5%9B%BD%E9%93%B6%E8%81%94%E7%BD%91%E9%93%B6%E6%94%AF%E4%BB%98%E4%B8%9A%E5%8A%A1%E7%9B%B4%E8%81%94%E5%95%86%E6%88%B7%E6%8E%A5%E5%85%A5%E6%8C%87%E5%BC%95.1.0.pdf;https://open.unionpay.com/upload/download/%E5%95%86%E6%88%B7%E6%9C%8D%E5%8A%A1%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8CV1.2.pdf;https://open.unionpay.com/upload/download/%E8%AE%A2%E8%B4%AD%E4%BA%A7%E5%93%81%E6%8E%A5%E5%8F%A3%E8%A7%84%E8%8C%83V2.1.pdf。 +- 实践来源:实践证据不足:2026-07-15 未取得两条相互独立、当前、可复核的真实接入记录;不使用单个服务商宣传或接口规范替代实践经验。 +- 待核验问题: + - 缺失事实:尚未确认中国大陆小商户、个体工商户或 AI/数字内容网站通过哪类收单机构可以实际入网银联在线网关支付、企业网银支付或云闪付远程支付,以及对应 MCC、费率、结算账户、结算周期和最低结算额。 + - 已查来源:2026-07-15 已检查中国银联官方文档云闪付业务商户入网服务指引、网银支付业务直联商户接入指引、商户服务操作手册和订购产品接口规范。 + - 需要询问:收单机构或银联分公司能否说明中国大陆个体工商户或小型企业经营 AI 生成、数字内容、课程或实体商品网站时,哪些银联直联或间联产品可入网、对应 MCC 是什么、费率和结算规则如何写入合同? + - 可接受证据:收单机构合同、入网申请结果、MCC 审核记录、报价单、商户服务网站后台截图、银联分公司书面回复、收单机构邮件或盖章协议中明确写出产品、主体、类目、费率、结算账户和结算周期。 diff --git a/skills/fxskill/references/payment-platform-cn-services.md b/skills/fxskill/references/payment-platform-cn-services.md new file mode 100644 index 0000000..2e2a861 --- /dev/null +++ b/skills/fxskill/references/payment-platform-cn-services.md @@ -0,0 +1,223 @@ +# 中国大陆服务商、聚合和监听式支付档案 + +最后批量核验日期:2026-07-15。 + +### 模式对比 + +官方服务商进件:平台帮助卖家向微信、支付宝等通道进件,交易资金由通道或持牌清算机构下发到卖家账户,平台收技术服务费。平台官网可以证明平台自己的费用、接口和流程,但不能直接证明微信或支付宝对某类卖家的官方准入。 + +技术聚合接入:平台封装多个通道、提供统一 API、回调、插件和控制台。必须拆开平台费、月费、开户费、通道费和结算账户,不能只看一个总费率。 + +托管数字内容交易:平台或其交易系统承载商品、订单、审核、结算和售后,适合内容或小额验证,不等同于可以嵌入任意 SaaS 的通用支付 API。 + +通知监听:平台不做官方商户进件,也不提供微信或支付宝官方商户 API;它监听卖家手机上的个人收款通知并向网站回调。资金通常直接到卖家个人钱包,可靠性取决于手机、通知权限、二维码匹配和人工异常处理。 + +## 虎皮椒 + +- 当前状态:限定开放;2026-07-15 公开入口不能直接完成正式新注册:`https://admin.xunhupay.com/sign-up.html` 显示通道临时关闭并引导备用平台,`https://admin.dpweixin.com/sign-up.html` 显示迅虎支付关闭注册且该站点为备用平台,`https://v3.xunhupay.com/` 导航显示已满员;V3 官网仍在运营,但 2025-11-06 公告显示微信唤醒跳转支付和小程序支付临时关闭,开通时间另行通知,PC 二维码和截图扫码不受该公告影响。 +- 平台类型:服务商 +- 运营主体:重庆直数电子科技有限公司;接入协议把虎皮椒定义为其旗下支付平台,为商户提供微信支付、支付宝支付签约和支付接口的系统服务商。 +- 支付角色:当前公开材料存在两种模式信号:FAQ 声称官方清算、不挂机,设置页又出现 App 通知监听配置;不能写成统一已确认路径。 +- 资金路径:当前公开材料存在两种模式信号,不能写成统一已确认路径:买家支付账户 -> 实际账户采用的商户号或通知监听入口 -> 对应合同约定的支付或识别链路 -> 对应合同约定的结算账户;使用前需确认实际账户采用哪一模式及其合同和结算路径。 +- 卖家地区:中国大陆。 +- 支持主体:中国大陆个人和企业按虎皮椒公开流程申请;协议要求境内合法公民或依法设立的公司,且需按微信支付、支付宝要求提交经营资料。 +- 买家地区与币种:中国大陆微信支付或支付宝用户,人民币。 +- 支付方式:支付宝扫码/H5、微信 PC 二维码、微信截图扫码;微信 App 唤醒跳转和小程序支付按 2025-11-06 公告临时关闭。 +- 适合商品:正规网站上的低风险实物、普通服务或明确合规的数字服务,小额验证时优先使用 PC 二维码或支付宝路径。 +- 限制商品:协议和公告限制欺诈、洗钱、赌博、色情、盗版音视频、侵权内容、虚拟发卡、虚拟账号、游戏充值、金融保险房地产等;虚拟账号销售已被公告清退。 +- 单次支付:支持;API 返回二维码或跳转链接,需由商户处理回调、查单、签名和订单状态。 +- 订阅与自动续费:不作为公开默认能力;需要商户自行实现订单周期并每次发起支付,不应写成自动扣款。 +- API、SDK、插件和支付链接:提供 PHP、Java、ASP.NET、Python 等 SDK、CMS 插件、发起付款接口、查询接口、退款接口和回调。 +- 平台服务费:首页与 FAQ 公开口径为 1%-2%,虎皮椒平台交易费需要提前充值到虎皮椒账户后按交易扣除;行业公告 `https://www.xunhupay.com/258.html` 另列部分行业费率 2%+、3%+、5%+,并写明部分行业暂不接新用户。以上属于虎皮椒自己的公开口径,存在冲突和例外,最终以后台签约页、合同或报价单为准。 +- 支付通道费:平台官网声称微信或支付宝官方费率 0.6%;FAQ 另写 0.38%-0.6%。这只是虎皮椒页面口径,不作为微信或支付宝官方统一费率事实。 +- 结算:虎皮椒称不碰交易资金;微信款项由微信支付链路 D+1/T+1 到卖家银行卡,支付宝通常到卖家支付宝账户。协议同时载明欠费可终止服务、违规可冻结或关闭账号与通道权限,若发生风控或违规处置,结算和余额处理以协议、后台签约页及通道规则为准。 +- 固定费用、提现费、退款费和拒付费:固定费用:当前公开价显示微信开户 118 元、支付宝开户 88 元;同页总述写开户费 118 元;行业公告另写部分行业需工商年审保证金 2000 元。以上公开口径存在差异或例外,最终以后台签约页、合同或报价单为准。 + 提现费:无此项 + 退款费:无此项 + 拒付费:无此项 +- 结算周期与最低结算额:微信公开说明为 D+1/T+1 到银行卡,支付宝通常即时到支付宝账户;最低结算额未公开统一数字(以后台显示或通道规则为准);协议载明账号终止或关闭后,预充值余额需在 180 天内按规则申请退款,退款后账号和通道注销,关闭后 3 个月内可申诉。 +- 申请材料:正规网站地址、身份证、手机号、个人银行卡、支付宝实名认证;协议同时要求按经营资质和前置许可补充资料。 +- 接入路径:2026-07-15 当前公开入口不能直接完成正式新注册:`https://admin.xunhupay.com/sign-up.html` 明示通道临时关闭并引导到备用平台,`https://admin.dpweixin.com/sign-up.html` 明示迅虎支付关闭注册且该站点为备用平台,`https://v3.xunhupay.com/` 导航显示已满员。接入路径必须先书面复核后才使用备用平台:需要拿到备用平台当前运营主体、协议版本、合同主体、四段资金路径、费率和结算规则的书面材料;否则仅能把它当作待核验入口,不能写成可直接注册开通。微信内传播场景还必须先确认跳转/小程序临时关闭是否已恢复。 +- 退款和售后:提供退款接口;投诉处理需按微信或支付宝要求提交资料,50 元以内投诉交易虎皮椒协议保留快速退款处理权。 +- 数据导出与迁移:公开 API 覆盖查询、退款和回调;交易流水以虎皮椒后台、微信支付商家助手和支付宝账单共同核对,迁移时需保留订单号与回调记录。 +- 实际优点:实践证据不足;仅按官网可确认,优点是无需商户自己从零集成微信/支付宝底层 API,且有现成插件和回调接口。 +- 实际问题:实践证据不足;公开材料同时出现官方清算/不挂机与 `app/mimu.html` 的 App 通知监听两种模式信号,后者只证明历史/不同 App 通知机制,当前账户的支付角色和资金路径需以后台、合同或书面回复确认。公开入口也不能直接完成正式新注册,部分微信能力临时关闭,平台费需预充值且余额退款有条件。 +- 推荐等级:仅作线索 +- 适用条件:中国大陆个人或小型团队做正规网站单次收款,能接受平台费预充值、微信能力当前受限、通道资格以微信/支付宝最终审核为准,并愿意先用小额真实订单验证。 +- 不适用条件:主要流量在微信内网页或小程序、需要明确自动订阅扣款、销售虚拟账号/游戏/金融/侵权内容、不能接受微信风控或平台预充值余额规则。 +- 最后核验日期:2026-07-15 +- 官方来源:https://v3.xunhupay.com/;https://admin.xunhupay.com/sign-up.html;https://admin.dpweixin.com/sign-up.html;https://www.xunhupay.com/faq.html;https://www.xunhupay.com/faq/use.html;https://www.xunhupay.com/doc/prepare.html;https://www.xunhupay.com/doc/api/pay.html;https://admin.xunhupay.com/xieyi.html;https://www.xunhupay.com/258.html;https://www.xunhupay.com/334.html;https://www.xunhupay.com/341.html;https://www.xunhupay.com/330.html;https://www.xunhupay.com/app/mimu.html +- 实践来源:实践证据不足:2026-07-15 仅发现零散 V2EX 讨论和旧接入文章,未达到两条相互独立、当前、可复核的真实接入记录门槛。 +- 待核验问题: + - 缺失事实:尚未确认用户实际账户采用哪一模式、对应支付角色、合同和结算路径,也未确认备用平台与 V3 的主体、协议、费率和结算是否一致。 + - 已查来源:2026-07-15 已检查虎皮椒 V3 首页 https://v3.xunhupay.com/、注册入口 https://admin.xunhupay.com/sign-up.html、备用平台注册页 https://admin.dpweixin.com/sign-up.html、FAQ https://www.xunhupay.com/faq.html、使用 FAQ https://www.xunhupay.com/faq/use.html、API 文档、接入协议 https://admin.xunhupay.com/xieyi.html、行业公告 https://www.xunhupay.com/258.html、微信唤醒关闭公告 https://www.xunhupay.com/334.html、风控公告 https://www.xunhupay.com/341.html 和 `app/mimu.html` 历史通知页。 + - 需要询问:虎皮椒商务团队能否提供备用平台当前运营主体、协议版本、合同主体、四段资金路径、费率、最低结算额和结算规则是否与 V3 一致的书面说明,并分别确认微信唤醒跳转支付、小程序支付、AI 图像额度、数字会员和虚拟权益包在微信与支付宝渠道下的当前开放状态、类目和报价? + - 可接受证据:虎皮椒或备用平台申请后台截图、签约页、官方页面、官方文档、合同、报价单、申请结果、邮件或书面回复中明确写出产品状态、主体、协议版本、四段资金路径、类目、费率、最低结算额和结算规则。 + +## XorPay + +- 当前状态:正常运营 +- 平台类型:服务商 +- 运营主体:无法确认;2026-07-15 已查首页、文档、FAQ 和协议仅见 XorPay.com、粤ICP备18047748号和联系方式,公开页未披露公司全称;备案主体和合同主体应以工信部查询、合同、签约页或书面回复为准。 +- 支付角色:微信支付服务商和支付宝系统服务商 ISV 口径下的技术工具方;用户协议声明 XorPay 不是网络支付机构,不中转资金,资金通过支付宝、微信或持牌机构处理。 +- 资金路径:买家微信或支付宝账户 -> 经 XorPay 进件的微信或支付宝商户接口 -> 微信支付宝或持牌机构清算体系 -> 卖家同名银行卡或支付宝账户 +- 卖家地区:未公开统一边界;公开页未给出统一卖家地区表,是否可签约及可结算地区需以签约页、合同或具体通道进件结果为准。 +- 支持主体:XorPay FAQ 声称支持个人、个体户、企业和其他组织;具体通道、产品和类目资格仍以微信、支付宝或持牌机构进件结果为准。 +- 买家地区与币种:未公开统一边界;公开页未给出统一买家地区与币种表,需按签约页、合同或具体通道进件结果判断。 +- 支付方式:当面付、Native、JSAPI、收银台、条码支付、小程序、WAP/H5 等,需按具体产品分别核验。 +- 适合商品:官网自述面向独立开发者、个体户和小微企业的正规网站或工具类产品单次收款、小额验证和开发者产品;AI 生图额度、数字会员或虚拟权益包必须以具体支付产品的进件结果为准。 +- 限制商品:违法违规业务、金融类、信用融资理财担保信托货币兑换等协议限制业务,以及微信/支付宝或持牌机构拒绝的类目。 +- 单次支付:支持;文档提供当面付、Native、JSAPI、小程序、订单状态查询、回调、退款等接口。 +- 订阅与自动续费:未作为公开默认产品列明;可由商户自行周期下单,不应写成官方免密自动扣款。 +- API、SDK、插件和支付链接:提供开发文档、Demo、API 调试器、签名算法、支付接口、查询、回调和退款接口。 +- 平台服务费:按套餐为体验版 1.2%、基础版 1%、标准版 0.8%、高级版 0.6%,交易成功后从 XorPay 账号预充值余额中扣除。 +- 支付通道费:XorPay 页面声称微信/支付宝通道固定 0.38%,从每笔收款中扣除;该数字来自 XorPay 页面,不作为微信或支付宝官方统一费率事实。 +- 结算:FAQ 称资金不经过 XorPay 中转,微信 T+1 到个人同名银行卡,支付宝即时到签约支付宝账户,或经持牌机构清算到同名银行卡。 +- 固定费用、提现费、退款费和拒付费:固定费用:开通费 100 元;套餐月费 0 元、10 元、30 元或 60 元;FAQ 写明微信或支付宝任一渠道资料进件成功视为开通成功,开通成功不能退款。 + 提现费:未公开统一数字(以签约页为准) + 退款费:未公开统一数字(以合同为准) + 拒付费:未公开统一数字(以后台显示为准) +- 结算周期与最低结算额:微信 T+1;支付宝即时到账;最低结算额未公开统一数字(以签约页或通道后台为准);FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元。 +- 申请材料:用于支付宝/微信审核的真实、有效、实名资料;按个人、个体户、企业或组织及产品类型补充通道要求材料。 +- 接入路径:2026-07-15 当前公开入口为 `https://xorpay.com/main`,点击后跳转 `/login`;登录页可勾选注册,但直接访问 /register 404。首页公开只声称填资料、审核、扫码签约;登录后申请页、合同页、报价页和具体通道进件字段未复核,只有后台结果支持时才配置支付接口、回调、查询和退款。 +- 退款和售后:文档列有退款接口;售后、投诉和通道风控仍由卖家承担,XorPay 仅提供工具和通知链路。 +- 数据导出与迁移:文档有订单查询和回调通知;迁移时需导出本地订单、XorPay 应用配置、通道商户信息和回调日志。 +- 实际优点:实践证据不足;仅按官网可确认,优点是费用层次公开、接口覆盖面比监听式方案更完整。 +- 实际问题:实践证据不足;公开成本实际有四层:100 元开通费、套餐月费、XorPay 平台百分比、XorPay 声称的通道百分比,且平台费需预充值。提现费、退款费、拒付费和最低结算额未公开统一数字,公开入口只证实存在登录和注册勾选,不足以证明后台申请、合同、报价和类目进件结果。 +- 推荐等级:仅作线索 +- 适用条件:能接受 XorPay 公开成本层次、能完成对应官方或持牌机构进件、需要较完整 API 和回调的中国大陆开发者或小商户。 +- 不适用条件:把 XorPay 页面直接当微信/支付宝官方准入证明;无法接受开通费、月费和预充值平台费;业务类目高风险或需要长期大额主通道前缺少书面进件确认。 +- 最后核验日期:2026-07-15 +- 官方来源:https://xorpay.com/;https://xorpay.com/main;https://xorpay.com/login;https://xorpay.com/doc/;https://xorpay.com/doc/faq.html;https://xorpay.com/htdocs/agree.html +- 实践来源:实践证据不足:2026-07-15 仅发现少量 V2EX 和旧文章讨论,未达到两条相互独立、当前、可复核的真实接入记录门槛。 +- 待核验问题: + - 缺失事实:尚未确认 XorPay 当前合同主体、备案主体、卖家地区统一边界、买家地区与币种统一边界、最低结算额、提现费、退款费、拒付费、后台申请/进件页字段、公告页,以及 AI 生图额度、数字会员、虚拟权益包在各支付产品下的通道进件类目和书面费率。 + - 已查来源:2026-07-15 已检查 XorPay 首页 https://xorpay.com/、入口页 https://xorpay.com/main、登录页 https://xorpay.com/login、文档 https://xorpay.com/doc/、FAQ https://xorpay.com/doc/faq.html、用户协议 https://xorpay.com/htdocs/agree.html,并确认直接访问 `/register` 返回 404。 + - 需要询问:XorPay 商务或合同团队是否可以书面确认当前签约主体与备案主体,卖家地区和买家地区币种边界,最低结算额、提现费、退款费、拒付费,后台申请/进件页和公告页口径,以及 AI 生图额度、数字会员、虚拟权益包分别可申请哪些支付产品、类目、通道费率和结算账户? + - 可接受证据:工信部备案查询结果、XorPay 合同、报价单、签约页、申请后台截图、公告页、官方页面、文档、邮件或书面回复中明确写出主体、地区、类目、费用、结算路径、最低结算额和通道进件结果。 + +## PAYJS + +- 当前状态:限定开放 +- 平台类型:服务商 +- 运营主体:北京顶风科技有限公司;官网标示 PAYJS 商标注册号 39688624 和中国支付清算协会备案编号 W2021110105000072。2026-07-15 已检查常见公开协议入口 `agreement`、`terms`、`protocol`、`service`、`privacy` 等路径,公开页未找到有效协议文本,常见入口返回 404;合同主体以签约合同或后台协议为准。 +- 支付角色:微信支付商户服务 SaaS 和信息流技术服务方;文档称 PAYJS 只负责信息流或数据流,不接管资金流。 +- 资金路径:买家微信账户 -> 微信支付商户号 -> 微信支付清算体系 -> 卖家银行卡 +- 卖家地区:未公开统一边界;公开页面未给出统一卖家地区表,最终以签约页、合同、后台或进件结果为准。 +- 支持主体:小微商户、个体户、企业、政府及事业单位、其他组织按费率表和行业资质进件;不是任意自然人网站的通用支付宝加微信 API。 +- 买家地区与币种:未公开统一边界;公开页面未给出统一买家地区与币种表,最终以签约页、合同、后台或进件结果为准。 +- 支付方式:微信扫码支付、付款码、收银台、JSAPI、人脸支付;账号 FAQ 明确不支持 H5、APP 支付,也不支持支付宝,但 H5 使用页写新开通商户增加 H5 能力、H5 接口处于测试阶段、域名需工单备案、一级域名需 ICP 备案,支付与清算 FAQ、规则 FAQ 和收银台 API 仍出现支付宝口径。公开文档存在冲突;以后台、工单或合同为准,未确认前不作为已确认能力。 +- 适合商品:自助设备、小微微信支付场景,以及费率表中可进件的餐饮、零售、生活服务、培训、软件开发等具体行业。 +- 限制商品:禁止诈骗、博彩、资金盘、贷款、P2P、ICO、二清支付、金融类、多级分销,以及微信支付官方要求禁止接入和工作人员判定不适合接入的业务。 +- 单次支付:支持;API 列表覆盖扫码、付款码、收银台、JSAPI、订单查询、关闭订单、退款、异步通知和投诉查询。 +- 订阅与自动续费:未作为公开默认能力列明。 +- API、SDK、插件和支付链接:提供 GitBook 文档、API 列表、SDK、退款、异步通知和商户资料接口。 +- 平台服务费:公开页面存在冲突:价格页称无开通费用且无其他费用,contrast 页写少部分用户可能额外收取服务费,H5 使用页写 PAYJS 服务费 2% 规则不变;这些口径不能当作统一总价,最终以签约页、合同、后台或报价单为准。 +- 支付通道费:公开页面存在冲突:价格页写微信支付手续费 0.6%;支付与清算 FAQ 写 0.38%;费率表按主体和行业列 0%、0.1%、0.2%、0.3%、0.38%、1%;contrast 页写 0.38%-0.6%,并称少部分用户可能额外收取服务费;H5 页又写交易 100 元到银行卡仍 100 元、中间无手续费,但 2% PAYJS 服务费另行计收,不能据此拼总价。上述数字仅代表 PAYJS 页面口径,不视为微信或支付宝官方统一费率;最终以签约页、合同、后台、报价单或微信支付终审为准。 +- 结算:文档称交易款由微信支付官方直接清算至商户银行卡,PAYJS 不接管资金流。 +- 固定费用、提现费、退款费和拒付费:固定费用:0 + 提现费:无此项 + 退款费:无此项 + 拒付费:无此项 +- 结算周期与最低结算额:结算周期按费率表规则 ID 可能为 T+1、T+3、T+7;单笔限额按费率表规则可能出现 3K 等差异;最低结算额未公开统一数字(以签约页、合同或后台显示为准)。 +- 申请材料:企业商户需完整企业信息;小微商户需实名认证微信号、身份证、手持身份证照、经营场景照、实名认证手机号和微信支付官方验证通过的同名银行卡;部分行业需特殊资质。 +- 接入路径:先判断业务是否属于 PAYJS 当前文档强调的自助设备或费率表可进件行业,再提交资料经历初审、PAYJS 复审、微信支付终审,通过后接入 API。 +- 退款和售后:支持退款接口、投诉查询和关闭订单;投诉和违规业务仍按微信支付和 PAYJS 规则处理。 +- 数据导出与迁移:公开 API 覆盖订单查询、异步通知、商户资料和投诉查询;迁移时需保留 PAYJS 商户号、订单号、回调和微信账单。 +- 实际优点:实践证据不足;仅按官网可确认,PAYJS 的边界比旧个人网站传闻更窄,当前文档重点是微信支付小微和自助设备场景。 +- 实际问题:实践证据不足;H5 页面与账号 FAQ 冲突,支付宝相关页面口径也冲突;H5 页的 2% 服务费与“交易 100 元到银行卡仍 100 元、中间无手续费”不能直接拼成统一总价。H5 能力和费用须以后台、工单或合同确认;公开协议/公告入口未找到统一边界说明。 +- 推荐等级:仅作线索 +- 适用条件:业务确实属于 PAYJS 费率表中的微信支付行业和主体,能提供经营场景材料,且接受按签约行业费率而不是通用网页费率判断。 +- 不适用条件:需要通用支付宝加微信个人 SaaS API、APP 支付或自动订阅;需要稳定 H5 但后台、工单或合同尚未确认;AI 生图额度或软件会员尚未拿到明确行业进件结论。 +- 最后核验日期:2026-07-15 +- 官方来源:https://payjs.cn/;https://payjs.cn/dashboard/auth/login;https://payjs.cn/docs/;https://payjs.cn/docs/faq/account.html;https://payjs.cn/fee;https://payjs.cn/price;https://payjs.cn/docs/faq/settlement.html;https://payjs.cn/docs/faq/rules.html;https://payjs.cn/docs/faq/ban.html;https://payjs.cn/contrast;https://payjs.cn/view/9vw7 +- 实践来源:实践证据不足:2026-07-15 搜到的近期材料多为 SDK 介绍、旧教程或复述官网,不足以证明当前审核、到账、退款或运营体验。 +- 待核验问题: + - 缺失事实:尚未确认 PAYJS 的卖家地区、买家地区与币种统一边界,合同主体或后台协议主体,最低结算额,H5 能力与 2% 服务费冲突、支付宝能力冲突的最终口径,以及 AI 生图额度、软件 SaaS、数字会员、虚拟权益包在不同主体下的正式进件行业、主体、费率、结算规则。 + - 已查来源:2026-07-15 已检查 PAYJS 首页 https://payjs.cn/、登录页 https://payjs.cn/dashboard/auth/login、文档 https://payjs.cn/docs/、账号 FAQ、H5 使用页 https://payjs.cn/view/9vw7、支付与清算 FAQ、规则 FAQ、费率表 https://payjs.cn/fee、价格页 https://payjs.cn/price、contrast 页 https://payjs.cn/contrast 和禁止交易页;同时检查常见公开协议入口 `agreement`、`terms`、`protocol`、`service`、`privacy` 未找到有效协议文本。 + - 需要询问:PAYJS 审核或商务团队能否书面确认当前签约主体与后台协议主体,卖家地区和买家地区币种边界,最低结算额,H5 当前能力及 2% 服务费如何收取,支付宝相关产品是否仍可申请,以及 AI 生图额度、软件 SaaS、数字会员、虚拟权益包分别对应哪些主体、结算规则 ID、签约费率和结算周期? + - 可接受证据:PAYJS 官方页面、后台截图、签约页、合同、后台协议、报价单、申请结果、邮件或书面回复中明确写出主体、地区、币种、产品能力、结算规则 ID、最低结算额、费率和结算周期。 + +## 面包多 Pay + +- 当前状态:限定开放;公开文档仍可访问,但服务开通文档说明 2022 年后停止宣传推广、保持较小规模并提高审核标准。 +- 平台类型:聚合 +- 运营主体:公开页只能确认面包多 Pay 品牌、京ICP备16062428号-8、纽扣数据页“毛线球科技”字样和京ICP备16062428号-2;签约主体、合同主体和备案主体全称仍无法确认,需以签约页、合同、备案查询或书面回复核对。 +- 支付角色:支付能力和闪电结算技术服务方;平台称仅向支付渠道或银行发送资金处理指令,不触碰资金。 +- 资金路径:买家微信或支付宝账户 -> 面包多 Pay 调用的微信支付宝通道或银行托管户 -> 支付机构或银行托管清算 -> 卖家支付宝账户或银行卡 +- 卖家地区:中国大陆卖家场景记录;具体以签约和进件结果为准。 +- 支持主体:公开页称个人可以使用、无资质要求;服务开通文档要求先注册面包多账号、提交闪电认证、通过后依次申请微信和支付宝渠道。 +- 买家地区与币种:中国大陆微信/支付宝人民币场景记录;具体以签约和进件结果为准。 +- 支付方式:微信 JSAPI、微信 H5、支付宝支付;也支持无代码接入。 +- 适合商品:独立开发者、设计师、创意工作者的小额产品验证、内容或数字商品销售;必须与面包多 Pay 的审核说明相匹配。 +- 限制商品:涉政涉军、危险品、药品、色情低俗、赌博博彩、黑客软件、未备案网络游戏、金融、数字货币、P2P、一元购及其他违反法律法规或支付渠道和银行规定的业务。 +- 单次支付:支持;API 文档覆盖微信 JSAPI、微信 H5、支付宝、Webhook、退款和订单查询。 +- 订阅与自动续费:公开资料未列为默认能力;可通过商户业务逻辑周期性创建订单,不应写成自动扣款。 +- API、SDK、插件和支付链接:提供 API、Webhook、无代码接入、退款、订单查询、签名算法和 IP 白名单。 +- 平台服务费:每笔结算收 0.1 元 + 2%;低于 0.5 元的支付金额免服务费。 +- 支付通道费:0;面包多 Pay 常见问题称除 0.1 元 + 2% 外没有其他费用。该结论只记录面包多 Pay 公开价,不作为微信或支付宝官方费率事实。 +- 结算:支付宝支付约 5 分钟内到卖家支付宝;微信支付进入银行托管户并于次日自动汇总提现至卖家银行卡。 +- 固定费用、提现费、退款费和拒付费:固定费用:0 + 提现费:无此项 + 退款费:无此项 + 拒付费:无此项 +- 结算周期与最低结算额:支付宝约 5 分钟内到账;微信次日自动汇总提现至银行卡;可通过 settle_time 指定延后结算时间以保留退款余额;最低结算额未公开统一数字(以签约页、后台显示、合同或书面回复为准);留存额未公开统一数字(以签约页、后台显示、合同或书面回复为准);权限回收规则未公开统一数字(以签约页、后台显示、合同或书面回复为准)。 +- 申请材料:注册面包多账号,提交闪电认证申请,具体填写产品、付费计划等信息;通过后在闪电结算开通页填写资料并申请微信和支付宝渠道。 +- 接入路径:先确认面包多 Pay 与面包多内容平台不是同一个费率和结算规则;再提交闪电认证,审核通过后申请渠道,最后接 API、无代码支付或 Webhook。 +- 退款和售后:支持控制台退款和退款 API;退款成功需要账户余额大于退款金额,推迟结算可降低已结算后退款余额不足的问题。 +- 数据导出与迁移:订单查询和 Webhook 可用于本地对账;迁移时需导出本地订单、面包多订单号、回调日志和结算记录。 +- 实际优点:实践证据不足;仅按官网可确认,公开价简单,能区分支付宝直达个人支付宝与微信银行托管户路径。 +- 实际问题:实践证据不足;服务开通文档显示当前审核更严格且规模收缩,2026 年 V2EX 讨论中面包多相关人员也提示年久失修、当前不建议新用户直接依赖。 +- 推荐等级:仅作线索 +- 适用条件:处在产品验证期、金额和客诉风险较低、可以接受严格审核和服务状态不确定,并愿意把它作为临时小额验证路径。 +- 不适用条件:长期主支付通道、需要明确新用户稳定开放、需要自动订阅、需要把面包多 Pay 当作任意 SaaS 的通用支付宝加微信 API。 +- 最后核验日期:2026-07-15 +- 官方来源:https://p.mbd.pub/;https://doc.mbd.pub/;https://doc.mbd.pub/fu-wu-kai-tong;https://doc.mbd.pub/untitled;https://doc.mbd.pub/untitled-1;https://doc.mbd.pub/api/tui-kuan;https://doc.mbd.pub/kai-fa-zhe-zhi-chi/zi-ding-yi-jie-suan-shi-jian;https://doc.mbd.pub/learn_more/du-li-tuo-guan-fang-an;https://m.niucodata.com/ +- 实践来源:实践证据不足:2026-07-15 仅有一条当前 V2EX 讨论和若干旧文章,未达到两条相互独立、当前、可复核的真实接入记录门槛。 +- 待核验问题: + - 缺失事实:尚未确认面包多 Pay 的签约主体、合同主体和备案主体全称,最低结算额、留存额和渠道权限回收规则,以及新注册个人开发者是否稳定开放、AI 生图额度或数字会员是否可通过审核、0.1 元 + 2% 是否覆盖所有渠道成本和退款场景。 + - 已查来源:2026-07-15 已检查面包多 Pay 首页 https://p.mbd.pub/、快速了解页 https://doc.mbd.pub/、服务开通页 https://doc.mbd.pub/fu-wu-kai-tong、常见问题、使用守则、退款文档、自定义结算文档和托管方案文档。 + - 需要询问:面包多 Pay 团队是否可以书面确认当前签约主体、合同主体和备案主体全称,最低结算额、留存额和渠道权限回收规则,新注册个人开发者当前能否申请,AI 生图额度或数字会员属于哪类可接入商品,以及 0.1 元 + 2% 是否覆盖微信和支付宝渠道全部成本? + - 可接受证据:面包多 Pay 官方页面、工信部备案查询结果、签约页、申请后台截图、申请结果、合同、报价单、邮件或书面回复中明确写出主体全称、开放状态、适用商品、费率、渠道成本和结算路径。 + +## BufPay + +- 当前状态:正常运营 +- 平台类型:监听式 +- 运营主体:BufPay.com 网站运营方;公开页标示粤ICP备18047748号,已查页面未披露公司全称,正式使用前应核对备案主体和合同主体。 +- 支付角色:手机通知监听和回调技术服务方;不是微信或支付宝官方商户 API,也不是支付机构或清算方。 +- 资金路径:买家微信或支付宝账户 -> 卖家个人收款二维码 -> 微信或支付宝个人收款体系 -> 卖家个人微信或支付宝账户 +- 卖家地区:中国大陆卖家场景记录;具体以签约或实际接入结果为准。 +- 支持主体:个人微信、个人支付宝或企业支付宝收款码;依赖卖家自有收款二维码和 Android 手机。 +- 买家地区与币种:中国大陆微信/支付宝人民币场景记录;具体以签约或实际接入结果为准。 +- 支付方式:微信和支付宝扫码;支付宝可启用转账模式生成跳转链接;微信不支持像支付宝一样唤起 App,微信浏览器内可长按二维码识别。 +- 适合商品:极早期、小额、可人工处理异常的产品验证和会员开通;适合能接受手机常驻和通知依赖的个人项目。 +- 限制商品:不适合作为合规长期主通道、品牌商户收款、订阅自动扣款、客诉高或交易量大的业务;不得把监听个人收款通知描述为官方商户进件。 +- 单次支付:支持;API 创建订单并返回二维码,手机检测到账通知后回调开发者 notify_url。 +- 订阅与自动续费:不支持官方自动扣款;只能由商户按周期创建新订单并等待用户主动扫码或转账。 +- API、SDK、插件和支付链接:提供付款接口、成功回调、查询接口、Demo、多手机配置、二维码调度、签名和 API 调试器。 +- 平台服务费:免费版 0;基础版 0.4%;标准版 0.3%;高级版 0.2%。 +- 支付通道费:0;个人收款码公开链路不另列商户通道费,但这不是微信或支付宝官方商户费率。 +- 结算:用户付款直接进入卖家个人微信或支付宝账户,BufPay 不经手交易款。 +- 固定费用、提现费、退款费和拒付费:固定费用:套餐月费 0 元、25 元、50 元或 99 元;手续费余额需预充值,未用完余额不支持提现或退款。 + 提现费:无此项 + 退款费:无此项 + 拒付费:无此项 +- 结算周期与最低结算额:个人收款通常即时到卖家微信或支付宝账户;BufPay 仅在检测到到账通知且成功回调后扣除对应平台百分比手续费。 +- 申请材料:注册 BufPay、安装 Android App、开启通知读取权限、关闭休眠/省电清理、上传微信或支付宝收款二维码,配置回调和签名。 +- 接入路径:准备一台专用 Android 手机并常充电联网,配置微信/支付宝通知和收款语音提醒,上传固定金额或不定金额二维码,再接入付款、回调和查询 API。 +- 退款和售后:没有官方商户退款 API;异常订单需要人工在后台确认已收款并触发回调,真实退款通常需卖家在微信或支付宝内手动处理。 +- 数据导出与迁移:公开文档覆盖查询接口和订单后台;迁移时需导出本地订单、BufPay 订单 ID、二维码配置、回调日志和手工处理记录。 +- 实际优点:实践证据不足;仅按官网可确认,门槛低、成本可预测,适合少量订单先验证需求。 +- 实际问题:实践证据不足;可靠性取决于手机在线、通知权限、二维码匹配、手续费余额和人工异常处理,通知漏单率、回调失败或过期后付款的实际处理、客服响应速度、退款和人工确认体验均缺少 2026 年可复核记录。 +- 推荐等级:仅作线索 +- 适用条件:个人项目、小额订单、能人工处理异常、能接受一台专用 Android 手机常驻,并明确告知团队这不是官方商户 API。 +- 不适用条件:长期主通道、大额交易、自动订阅、品牌化收款、需要合规商户号、需要官方退款/投诉/对账体系或无法承担手机通知依赖。 +- 最后核验日期:2026-07-15 +- 官方来源:https://bufpay.com/;https://bufpay.com/page.html +- 实践来源:实践证据不足:2026-07-15 未找到两条相互独立、当前、可复核的真实接入记录;平台官网案例和口碑文案不作为实践证据。 +- 待核验问题: + - 缺失事实:尚未确认 BufPay 当前运营主体全称,以及用户在 2026 年真实接入稳定性、手机通知漏单率、回调失败或过期后付款的处理、客服响应、退款处理和人工确认体验。 + - 已查来源:2026-07-15 已检查 BufPay 首页 https://bufpay.com/ 和文档 https://bufpay.com/page.html,另搜索 V2EX、开发者博客和搜索结果,未找到足够当前实践记录。 + - 需要询问:BufPay 团队或当前用户是否可以提供 2026 年真实接入记录,并书面说明运营主体全称、通知漏单率、回调失败或过期后付款如何处理、客服响应、退款处理和人工确认流程? + - 可接受证据:BufPay 后台截图、订单记录、回调日志、当前用户开发文章、官方页面、合同、邮件或书面回复中明确写出运营主体、故障处理、费用和结算路径。 diff --git a/skills/fxskill/references/payment-research-backlog.md b/skills/fxskill/references/payment-research-backlog.md new file mode 100644 index 0000000..4aa68e5 --- /dev/null +++ b/skills/fxskill/references/payment-research-backlog.md @@ -0,0 +1,108 @@ +# 支付待核验清单 + +这个文件只保存还没有被正式平台档案确认、但值得继续调查的问题。它不是平台列表,也不填充伪 TODO。 + +## 固定模板 + +每个待核验条目都使用下面的固定格式: + +```markdown +### 平台或问题名称 +- 缺失事实:还不能确认的具体事实。 +- 已查来源:已经检查过的入口、页面、文档、截图和日期。 +- 需要询问:下一次需要向谁确认什么问题? +- 可接受证据:什么样的官方页面、文档、合同、报价单、后台截图、申请结果、书面回复、邮件或盖章协议可以完成核验。 +``` + +补充要求: + +- 四项都必须非空。 +- `缺失事实` 允许写 `无法确认...`,但必须指出具体主题和范围,不能只写 `待确认`、`未知`、`暂无结论`。 +- `需要询问` 必须是长度足够、以 `?` 或 `?` 结尾的具体问题,并包含 `是否`、`可否`、`能否`、`哪些`、`哪类`、`如何`、`多少`、`什么`、`哪一个` 等疑问结构;只写对象名或 `请确认是否支持?` 这类泛问不通过。 +- `可接受证据` 必须写出具体证据载体;允许官方页面、文档、合同、报价单、后台截图、申请结果、书面回复、邮件、盖章协议等。单写 `官方回复` 不通过,`官方书面回复明确写出适用主体、类目和结算路径。` 通过。 +- 不接受 `TODO`、`TBD`、`待补`、`后续补`、`未知`、`请联系客服`、`联系客服`、`咨询客服`、`等官方回复`、`等回复` 等占位或客服话术。 +- backlog 子字段重复出现视为契约错误。 + +## 待核验清单 + +### 微信支付 AI 与虚拟数字内容类目 +- 缺失事实:尚未确认中国大陆企业或个体工商户销售 AI 图像额度、AI 生成会员、虚拟权益包时,在 Native、JSAPI、H5 各产品下应选择的准确行业类目、所需特殊资质、核准费率和结算限制。 +- 已查来源:2026-07-15 已检查微信支付产品场景页、主体权限矩阵、H5 产品介绍、H5 域名配置、H5 申请指引、Native 接入准备、Native 下单 API、查单回调指引、APIv3 签名验签、免密服务规则、腾讯客服结算费率页和行业属性资质页。 +- 需要询问:微信支付商户审核或商务团队能否针对中国大陆企业或个体工商户销售 AI 图像额度、AI 生成会员、虚拟权益包,分别说明 Native、JSAPI、H5 可申请类目、所需资质、核准费率和结算限制? +- 可接受证据:微信支付商户平台后台截图、产品权限申请结果、类目审核结果、签约页、合同、商户平台核准记录、官方页面、官方文档、邮件或书面回复中明确写出产品、主体、类目、费率和结算路径。 + +### 支付宝 AI 网页订阅按量产品资格与费用 +- 缺失事实:尚未确认 AI 网页应用收款、AI 订阅 SaaS、AI 按量付费在 2026-07-15 对自然人、个体工商户和企业账号的正式签约资格、正式收单或签约主体、统一或报价费率、结算周期、最低结算额和 AI 图像/视频额度类目要求。 +- 已查来源:2026-07-15 已检查支付宝官网 AI 支付概览、AI 网页应用收款页、AI 网页接入指南、AI 订阅 SaaS 页、AI 订阅产品介绍、AI 按量付费页、AI 按量接入指南、开放平台网页/移动应用页脚主体、商家平台传统网页收款入口和 2017 电脑网站支付旧文档。 +- 需要询问:支付宝 AI 支付或商家平台业务人员能否分别确认自然人、个体工商户和企业账号接入 AI 网页应用收款、AI 订阅 SaaS、AI 按量付费时的正式签约资格、签约主体、费率、结算周期、最低结算额和 AI 图像/视频额度类目要求? +- 可接受证据:支付宝官方页面、产品文档、签约页、商家平台后台截图、申请结果、报价单、合同、邮件或书面回复中明确写出产品、账号类型、主体、类目、费率、结算周期、最低结算额和结算账户。 + +### 银联小商户和 AI 数字内容现实入网路径 +- 缺失事实:尚未确认中国大陆小商户、个体工商户或 AI/数字内容网站通过哪类收单机构可以实际入网银联在线网关支付、企业网银支付或云闪付远程支付,以及对应 MCC、费率、结算账户、结算周期和最低结算额。 +- 已查来源:2026-07-15 已检查中国银联官方文档云闪付业务商户入网服务指引、网银支付业务直联商户接入指引、商户服务操作手册和订购产品接口规范。 +- 需要询问:收单机构或银联分公司能否说明中国大陆个体工商户或小型企业经营 AI 生成、数字内容、课程或实体商品网站时,哪些银联直联或间联产品可入网、对应 MCC 是什么、费率和结算规则如何写入合同? +- 可接受证据:收单机构合同、入网申请结果、MCC 审核记录、报价单、商户服务网站后台截图、银联分公司书面回复、收单机构邮件或盖章协议中明确写出产品、主体、类目、费率、结算账户和结算周期。 + +### XorPay 和 BufPay 运营主体全称 +- 缺失事实:尚未确认 XorPay.com 和 BufPay.com 当前公开签约主体、备案主体、客服主体和合同主体是否一致;两个站点公开页均标示粤ICP备18047748号,但已查页面未给出公司全称。 +- 已查来源:2026-07-15 已检查 XorPay 首页 https://xorpay.com/、文档 https://xorpay.com/doc/、FAQ https://xorpay.com/doc/faq.html、用户协议 https://xorpay.com/htdocs/agree.html、BufPay 首页 https://bufpay.com/ 和文档 https://bufpay.com/page.html。 +- 需要询问:XorPay 或 BufPay 团队能否提供当前签约主体全称、备案主体、合同主体和收款服务主体是否一致的书面说明? +- 可接受证据:工信部备案页面截图、合同、签约页、后台截图、报价单、官方页面、邮件或书面回复中明确写出主体名称、统一社会信用代码、域名和服务范围。 + +### XorPay 主体、地区、费用与进件边界 +- 缺失事实:尚未确认 XorPay 当前合同主体、备案主体、卖家地区统一边界、买家地区与币种统一边界、最低结算额、提现费、退款费、拒付费、后台申请/进件页字段、公告页,以及 AI 生图额度、数字会员、虚拟权益包在各支付产品下的可进件类目和书面费率。 +- 已查来源:2026-07-15 已检查 XorPay 首页 https://xorpay.com/、入口页 https://xorpay.com/main、登录页 https://xorpay.com/login、文档 https://xorpay.com/doc/、FAQ https://xorpay.com/doc/faq.html 和用户协议 https://xorpay.com/htdocs/agree.html,并确认直接访问 `/register` 返回 404。 +- 需要询问:XorPay 商务或合同团队是否可以书面确认当前签约主体与备案主体,卖家地区和买家地区币种边界,最低结算额、提现费、退款费、拒付费,后台申请/进件页和公告页口径,以及 AI 生图额度、数字会员、虚拟权益包分别可申请哪些支付产品、类目、通道费率和结算账户? +- 可接受证据:工信部备案查询结果、XorPay 合同、报价单、签约页、申请后台截图、进件结果截图、公告页、官方页面、文档、邮件或书面回复中明确写出主体、地区、类目、费用、最低结算额、结算路径和通道进件结果。 + +### 虎皮椒备用平台主体与资金路径 +- 缺失事实:尚未确认虎皮椒 2026-07-15 引导的备用平台当前运营主体、协议版本、合同主体、客服主体、四段资金路径、平台服务费、通道费、固定费用、最低结算额和结算规则是否与 V3 一致;也无法确认备用平台是否仍适用于中国大陆个人或企业销售 AI 图像额度、数字会员和虚拟权益包。 +- 已查来源:2026-07-15 已检查虎皮椒 V3 首页 https://v3.xunhupay.com/、主注册入口 https://admin.xunhupay.com/sign-up.html、备用平台注册页 https://admin.dpweixin.com/sign-up.html、接入协议 https://admin.xunhupay.com/xieyi.html、FAQ https://www.xunhupay.com/faq.html、使用 FAQ https://www.xunhupay.com/faq/use.html、行业公告 https://www.xunhupay.com/258.html、微信唤醒关闭公告 https://www.xunhupay.com/334.html、风控公告 https://www.xunhupay.com/341.html 和历史通知页 https://www.xunhupay.com/app/mimu.html;当前只能确认公开入口会引导到备用平台,不能确认备用平台与 V3 的主体、协议和结算规则等同。 +- 需要询问:虎皮椒或备用平台团队能否提供备用平台当前运营主体、协议版本、合同主体、四段资金路径、平台服务费、通道费、固定费用、最低结算额、结算周期和余额处理规则是否与 V3 一致的书面说明,并明确只有在这些材料书面复核后才使用备用平台? +- 可接受证据:备用平台官方页面、签约页、合同、报价单、后台截图、申请结果、邮件或书面回复中明确写出域名对应主体、协议版本、四段资金路径、费率、固定费用、最低结算额、结算周期、余额退款规则和适用类目。 + +### 面包多 Pay 主体、开放与结算边界 +- 缺失事实:尚未确认面包多 Pay 的签约主体、合同主体和备案主体全称,最低结算额、留存额和渠道权限回收规则,以及当前是否向新注册个人开发者稳定开放、AI 生图额度、数字会员、SaaS 订阅或虚拟权益包是否可通过闪电认证和渠道审核。 +- 已查来源:2026-07-15 已检查面包多 Pay 首页 https://p.mbd.pub/、快速了解页 https://doc.mbd.pub/、服务开通页 https://doc.mbd.pub/fu-wu-kai-tong、常见问题页、使用守则、退款文档、自定义结算文档、托管方案文档和 V2EX 当前讨论 https://v2ex.com/t/1218615。 +- 需要询问:面包多 Pay 团队能否书面确认当前签约主体、合同主体和备案主体全称,最低结算额、留存额和渠道权限回收规则,新注册个人开发者当前是否可以申请,以及 AI 生图额度、数字会员、SaaS 订阅或虚拟权益包分别属于哪些可接入商品和审核材料? +- 可接受证据:面包多 Pay 官方页面、工信部备案查询结果、签约页、申请后台截图、闪电认证申请结果、渠道开通结果、合同、报价单、邮件或书面回复中明确写出主体全称、开放状态、商品范围、费率和结算路径。 + +### BufPay 2026 接入稳定性与异常处理体验 +- 缺失事实:尚未确认 BufPay 在 2026 年的真实接入稳定性、手机通知漏单率、回调失败或过期后付款如何处理、客服响应、退款处理和人工确认体验。 +- 已查来源:2026-07-15 已检查 BufPay 首页 https://bufpay.com/ 和文档 https://bufpay.com/page.html,另搜索 V2EX、开发者博客和搜索结果,未找到足够当前实践记录。 +- 需要询问:BufPay 团队或当前用户能否提供 2026 年真实接入记录,并书面说明通知漏单率、回调失败或过期后付款如何处理、客服响应、退款处理和人工确认流程? +- 可接受证据:BufPay 后台截图、订单记录、回调日志、当前用户开发文章、官方页面、合同、邮件或书面回复中明确写出故障处理、退款流程和人工确认路径。 + +### 面包多内容交易费率嵌入和迁移边界 +- 缺失事实:尚未确认面包多内容交易闪电结算和服务单的具体清算方,以及三种模式分别适用哪些创作者与商品,highfee 模式触发口径,企业账号与个人账号差异,拒付费规则,完整客户导出字段和内容迁移路径。 +- 已查来源:2026-07-15 已检查面包多首页 https://mbd.pub/、帮助中心 https://mbd.pub/help/、提现规则 https://mbd.pub/help/withdraw.md、闪电结算 https://mbd.pub/help/lightning.md、退款 https://mbd.pub/help/refund.md、服务单 https://mbd.pub/help/service.md、订阅制 https://mbd.pub/help/subscription.md、可售内容 https://mbd.pub/help/good&bad.md、用户服务协议 https://mbd.pub/help/terms.md 和开发者订单/回调文档。 +- 需要询问:面包多团队能否说明闪电结算和服务单的具体清算方、三种模式分别适用哪些创作者与商品,以及 highfee、企业差异、拒付费、导出字段和迁移路径? +- 可接受证据:面包多官方页面、帮助文档、后台截图、合同、报价单、邮件或书面回复中明确写出清算方、适用条件、highfee、企业差异、拒付费、导出字段和迁移路径。 + +### 爱发电提现退款导出和独立站边界 +- 缺失事实:尚未确认爱发电具体清算方、当前提现手续费、最低提现额、后台退款操作路径、完整客户导出字段、独立站结账嵌入能力,以及 AI/SaaS 用量权益是否属于可稳定售卖类目。 +- 已查来源:2026-07-15 已检查爱发电首页 https://afdian.com/、新创作者指南 https://guide.afdian.com/new/for-new-creators、创作者 FAQ https://guide.afdian.com/faq/faq-for-creators、用户 FAQ https://guide.afdian.com/faq/faq-for-users、开发者 API 和 Webhook https://guide.afdian.com/creator/developer、售卖商品关联作品集 https://guide.afdian.com/creator/sell-album、实体与物流指南 https://guide.afdian.com/creator/shipment。 +- 需要询问:爱发电团队能否说明具体清算方、当前提现手续费和最低提现额、后台退款费项、客户导出字段及独立站结账边界? +- 可接受证据:爱发电官方页面、帮助文档、管理面板截图、协议、邮件或书面回复中明确写出清算方、提现费项、退款流程、导出字段、嵌入方式和适用商品类目。 + +### 小报童支付接口导出和买断退款细则 +- 缺失事实:尚未确认小报童当前支付通道费、最低提现额、具体支付商户主体、具体清算方、是否存在公开订单 API 或 Webhook、完整订单和读者数据导出字段、独立站嵌入结账能力以及买断制订单退款细则。 +- 已查来源:2026-07-15 已检查小报童首页 https://xiaobot.net/、帮助中心 https://help.xiaobot.net/、功能指南 https://help.xiaobot.net/feature.html、创作者 FAQ https://help.xiaobot.net/faq-for-creator.html、提现及服务费 https://help.xiaobot.net/withdraw.html、云账户签约 https://help.xiaobot.net/yunzhanghu.html、读者使用指南 https://help.xiaobot.net/reader.html、创作者合作协议 https://help.xiaobot.net/creator-legal.html、用户协议 https://help.xiaobot.net/legal.html 和合伙人计划 https://help.xiaobot.net/partner.html。 +- 需要询问:小报童团队能否说明具体支付商户主体和具体清算方分别是谁,以及当前费用、接口、导出、嵌入和退款边界? +- 可接受证据:小报童官方页面、帮助文档、后台截图、合同、报价单、邮件或书面回复中明确写出支付商户主体、清算方、费用、接口、导出字段、嵌入方式和退款规则。 + +### PAYJS 地区、协议主体、最低结算额与支付宝口径冲突 +- 缺失事实:尚未确认 PAYJS 的卖家地区、买家地区与币种统一边界,合同主体或后台协议主体,最低结算额,H5 能力与 2% 服务费冲突、支付宝能力冲突的最终口径,以及 AI 生图额度、软件 SaaS、数字会员、虚拟权益包在不同主体下的正式进件行业、主体、费率、结算规则。 +- 已查来源:2026-07-15 已检查 PAYJS 首页 https://payjs.cn/、登录页 https://payjs.cn/dashboard/auth/login、文档 https://payjs.cn/docs/、账号 FAQ、H5 使用页 https://payjs.cn/view/9vw7、支付与清算 FAQ、规则 FAQ、费率表 https://payjs.cn/fee、价格页 https://payjs.cn/price、contrast 页 https://payjs.cn/contrast 和禁止交易页;同时检查常见公开协议入口 `agreement`、`terms`、`protocol`、`service`、`privacy` 未找到有效协议文本。 +- 需要询问:PAYJS 审核或商务团队能否书面确认当前签约主体与后台协议主体,卖家地区和买家地区币种边界,最低结算额,H5 当前能力及 2% 服务费如何收取,支付宝相关产品是否仍可申请,以及 AI 生图额度、软件 SaaS、数字会员、虚拟权益包分别对应哪些主体、结算规则 ID、签约费率和结算周期? +- 可接受证据:PAYJS 官方页面、后台截图、签约页、合同、后台协议、报价单、申请结果、邮件或书面回复中明确写出主体、地区、币种、产品能力、结算规则 ID、最低结算额、费率和结算周期。 + +### 服务商搜索中出现的其他候选 +- 缺失事实:V2EX 和搜索结果中出现 pay.plugins-world.cn、蓝兔、ZPay、YungouOS 等候选,但尚未确认各自运营主体、支付角色、资金路径、费用结构、结算账户和是否仍适合中国大陆个人或个体户网站收款。 +- 已查来源:2026-07-15 已检查当前 V2EX 讨论 https://v2ex.com/t/1170825、https://www.v2ex.com/t/1210878 和搜索结果摘要;这些来源只构成候选线索,不足以进入正式平台档案。 +- 需要询问:这些候选平台的官方团队能否分别提供运营主体、支付角色、完整四段资金路径、平台费、通道费、固定费用、支持主体、类目限制和结算规则? +- 可接受证据:候选平台官网、开发文档、服务协议、价格页、工信部备案页面截图、合同、报价单、后台截图、申请结果、邮件或书面回复中明确写出主体、角色、资金路径、费用和结算账户。 + +## 已解决并迁移 + +当前为空。只有当某个待核验问题已经被正式平台档案吸收,并且档案内写明来源和核验日期后,才把对应条目移动到这里并说明迁移去向。 diff --git a/skills/fxskill/references/payment-scenarios.md b/skills/fxskill/references/payment-scenarios.md new file mode 100644 index 0000000..6d31a5e --- /dev/null +++ b/skills/fxskill/references/payment-scenarios.md @@ -0,0 +1,83 @@ +# 中国大陆支付场景决策路径 + +最后批量核验日期:2026-07-15。 + +本文件是短决策层,只给当前场景的一条主路线。费用、主体资格、产品状态和结算规则以引用档案中的同日核验字段为准。 + +## 中国大陆自然人验证首批订单 + +- 主路线:支付宝 AI 网页应用收款已明确支持个人收款场景和个人开发者;自然人可直接从该产品一站式接入提交当前资料,以后台申请结果判断能否开通。后台支持且费用、结算可接受时完成签约;后台明确当前主体不支持且允许个体工商户时,再登记个体工商户。该结论不扩大为所有支付宝网站支付都支持个人。 +- 当前成本:平台服务费无此项;通道费、固定费、提现费、拒付费、结算周期和最低结算额按[支付宝](payment-platform-cn-direct.md#支付宝) 2026-07-15 档案以签约页、后台或合同为准;退款费按同档案为退款时已扣交易手续费不退回。 +- 成立条件:主体为后台申请结果支持的当前自然人账号;商品类目可开通;费用与结算可接受;支付模式为该具体产品的单次网页支付。 +- 执行路径: + 1. 从支付宝 AI 网页应用收款一站式接入提交当前账号、商品类目和网站资料。 + 2. 仅当后台结果显示可开通且费用和结算可接受时,完成签约。 + 3. 仅当后台明确当前主体不支持且允许个体工商户时,登记个体工商户。 +- 最容易卡住:产品页支持个人场景不等于当前账号和商品类目一定通过,最终看后台申请结果。 +- 备选:后台明确不支持当前自然人且明确允许个体工商户时,才切换个体工商户官方商户支付;托管类平台仅作线索,不替代官方主路线。 +- 引用档案:[支付宝](payment-platform-cn-direct.md#支付宝)(推荐等级:仅作线索;最后核验日期:2026-07-15)、[来源规则](payment-source-policy.md#证据等级)。 + +## 中国大陆个体户 AI 生图额度包 + +- 主路线:把支付宝 AI 网页应用收款作为首个官方核验入口;它匹配 AI 网页和图片生成积分形态,但个体户、AI/虚拟类目、费率和结算必须拿到书面确认后才成立。 +- 当前成本:平台服务费无此项;通道费、固定费、提现费、拒付费、结算周期和最低结算额按[支付宝](payment-platform-cn-direct.md#支付宝) 2026-07-15 档案以签约页、后台或合同为准;退款费按同档案为退款时已扣交易手续费不退回。 +- 成立条件:主体为可完成支付宝商家平台签约的中国大陆个体工商户;类目为书面通过的 AI 生图额度包或对应虚拟权益类目;结算为签约页、报价单、合同、后台或书面回复已确认的结算账户与周期;支付模式为支付宝 AI 网页应用收款单次网页支付。 +- 执行路径: + 1. 取得支付宝 AI 支付或商家平台对个体工商户主体、AI 生图额度包类目、费率和结算的书面结果。 + 2. 仅当上一项结果支持时,配置支付宝 AI 网页应用收款链路。 + 3. 仅当上一项结果支持时,完成一笔小额真实订单。 +- 最容易卡住:个体户主体加 AI/虚拟额度类目没有书面通过。 +- 备选:如果支付宝书面拒绝个体户或该类目,改用企业主体重新申请;启用条件是企业账号、类目、费率和结算周期重新写入正式载体。 +- 引用档案:[支付宝](payment-platform-cn-direct.md#支付宝)(推荐等级:仅作线索;最后核验日期:2026-07-15)、[来源规则](payment-source-policy.md#直接来源规则)。 + +## 中国大陆个体户 30 天会员 + +- 主路线:把 30 天会员做成一次性访问权商品;微信支付 Native 只能作为官方核验路线,须先取得对个体工商户或小微商户、会员权益类目、费率和结算的书面结果;这不是自动续费,也不默认免密扣款。 +- 当前成本:平台服务费无此项;通道费、固定费、退款费、拒付费和最低结算额按[微信支付](payment-platform-cn-direct.md#微信支付) 2026-07-15 档案以商户后台或合同为准;提现费按同档案为 0;结算周期按同档案为新资金流 T+1,留存额/最低转出额以商户后台显示为准。 +- 成立条件:主体为可开通微信支付 Native 的中国大陆个体工商户或小微商户;类目为通过微信支付审核的会员权益或对应互联网服务类目;结算为商户号关联结算银行卡且接受 T+1 与后台留存额规则;支付模式为微信支付 Native 桌面二维码单次支付而不是自动续费。 +- 执行路径: + 1. 取得微信支付对个体工商户或小微商户主体、30 天会员权益类目、费率和结算的官方书面结果。 + 2. 仅当上一项结果支持时,申请微信支付 Native 产品权限。 + 3. 仅当上一项结果支持时,接入 Native 支付链路。 +- 最容易卡住:会员权益类目、费率或结算规则没有获得官方书面通过,或者把 30 天会员写成自动续费但没有免密服务权限。 +- 备选:如果业务必须自动扣款,改用微信支付免密服务或自动续费;启用条件是取得产品权限、类目审批和用户显式授权。 +- 引用档案:[微信支付](payment-platform-cn-direct.md#微信支付)(推荐等级:仅作线索;最后核验日期:2026-07-15)。 + +## 中国大陆企业 SaaS 单次支付 + +- 主路线:把微信支付 Native 作为第一个官方核验入口,用于核验企业官网单次 SaaS 订单;只有主体、类目、费率和结算的书面结果支持时,才进入申请和接入。 +- 当前成本:平台服务费无此项;通道费、固定费、退款费和拒付费按[微信支付](payment-platform-cn-direct.md#微信支付) 2026-07-15 档案以商户后台或合同为准;提现费按同档案为 0;结算周期按同档案为新资金流 T+1;最低结算额未公开统一数字,留存额/最低转出额以商户后台显示为准。 +- 成立条件:主体为中国大陆企业商户;类目为可按微信支付入驻的 SaaS、软件开发或其他互联网服务;结算为商户号关联结算银行卡且接受 T+1 与后台留存额规则;支付模式为桌面浏览器主场景下的微信支付 Native 单次支付。 +- 执行路径: + 1. 取得微信支付对企业主体、目标 AI/数字类目、费率和结算的官方书面结果。 + 2. 仅当上一项结果支持时,申请企业商户号的 Native 权限。 + 3. 仅当上一项结果支持时,接入 Native 支付链路。 +- 最容易卡住:支付域名、ICP备案、APPID 或行业属性与商户主体不匹配。 +- 备选:如果主要付款场景是支付宝用户或手机浏览器,改用支付宝 AI 网页应用收款;启用条件是企业账号、SaaS 类目、费率和结算周期写入正式载体。 +- 引用档案:[微信支付](payment-platform-cn-direct.md#微信支付)(推荐等级:仅作线索;最后核验日期:2026-07-15)、[支付宝](payment-platform-cn-direct.md#支付宝)(推荐等级:仅作线索;最后核验日期:2026-07-15)。 + +## 数字资料或课程快速销售 + +- 主路线:面包多内容交易只作为当天重查后的托管内容验证线索,用它承载资料、课程、作品页或全家桶订单;它不是独立站内嵌收银台,也不是任意 SaaS 额度的官网支付 API。 +- 当前成本:按[面包多内容交易](payment-platform-cn-creators.md#面包多内容交易) 2026-07-15 档案,平台服务费与通道费为普通模式 5% 平台费 + 1% 第三方支付手续费、闪电结算总服务费 5.7%、服务单 3%,三种模式不能相加;固定费、提现费、退款费、拒付费和最低结算额以后台或正式材料为准;结算周期按普通模式 7 天、服务单完成后 24 小时、闪电结算对应通道规则处理。 +- 成立条件:主体为可在面包多发布内容的中国大陆个人创作者或经手动开通的企业主体;类目为数字资料、课程资料、订阅作品或小额服务等面包多允许内容;结算为接受普通模式、闪电结算或服务单各自的账户路径、周期与提现边界;支付模式为跳转到面包多托管页完成单次购买或订阅制托管支付。 +- 执行路径: + 1. 当天重查面包多内容交易的开放状态和费用字段。 + 2. 发布一个托管作品页或全家桶商品。 + 3. 放置面包多购买链接到独立站。 +- 最容易卡住:平台费用、结算或提现规则与独立站收银预期不一致。 +- 备选:如果必须在官网内完成收银或实时发放 SaaS 额度,改用官方直连支付;启用条件是主体、类目、费率和结算周期有正式载体。 +- 引用档案:[面包多内容交易](payment-platform-cn-creators.md#面包多内容交易)(推荐等级:仅作线索;最后核验日期:2026-07-15)、[支付宝](payment-platform-cn-direct.md#支付宝)(推荐等级:仅作线索;最后核验日期:2026-07-15)。 + +## 平台型网站代收与分账 + +- 主路线:不要让平台把所有卖家货款收进自己的普通账户;主路线是每个卖家直接开通自己的官方商户收款和结算,平台只处理订单关系和另行收取平台服务费。 +- 当前成本:平台服务费为平台另行记录的独立服务费,卖家端官方直连本身无统一第三方平台服务费;通道费、固定费、提现费、退款费、拒付费、结算周期和最低结算额按各卖家自己的[微信支付](payment-platform-cn-direct.md#微信支付)或[支付宝](payment-platform-cn-direct.md#支付宝) 2026-07-15 档案、签约页、后台或合同确定;本场景没有已核验的通用平台收单或分账成本。 +- 成立条件:主体为每个卖家都拥有各自可签约主体而平台主体只处理服务费;类目为各卖家分别通过自身官方商户产品准入的经营类目;结算为每个卖家使用自己的官方结算账户且平台服务费与货款分开记录;支付模式为每笔订单由实际卖家作为收款方的官方直连单次支付而不是普通账户代收。 +- 执行路径: + 1. 定义每笔订单的收款方为实际卖家。 + 2. 核验每个卖家的官方商户产品。 + 3. 记录平台服务费为独立费用。 +- 最容易卡住:没有官方平台收单或分账合同。 +- 备选:如果取得官方平台收单或分账产品合同,改用该合同产品;启用条件是合同写明平台角色、卖家结算账户、费率和结算周期。 +- 引用档案:[微信支付](payment-platform-cn-direct.md#微信支付)(推荐等级:仅作线索;最后核验日期:2026-07-15)、[支付宝](payment-platform-cn-direct.md#支付宝)(推荐等级:仅作线索;最后核验日期:2026-07-15)、[资金路径规则](payment-source-policy.md#资金路径规则)。 diff --git a/skills/fxskill/references/payment-source-policy.md b/skills/fxskill/references/payment-source-policy.md new file mode 100644 index 0000000..d02441c --- /dev/null +++ b/skills/fxskill/references/payment-source-policy.md @@ -0,0 +1,106 @@ +# 支付资料来源规则 + +## 证据等级 + +### A 级:官方直接证据 + +- 当前价格页、产品规则、开发文档、服务条款、支持地区、申请入口、资质说明。 +- 维护者提供的后台截图、申请结果、报价单、合同或官方书面回复,必须附日期。 +- A 级证据可以支持费用、资质、地区、能力、结算、产品状态、支付角色和资金路径。 + +### B 级:官方间接证据 + +- 官网首页、帮助中心导航、营销页、案例页、面对潜在客户的公开说明。 +- B 级证据可以证明平台声称提供某项服务,不能单独证明具体主体、类目、费率、资金路径或结算规则一定适用。 + +### C 级:多方实操证据 + +- 至少两个相互独立、时间较新的接入记录、订单截图、后台截图、开发者文章或讨论。 +- C 级证据只用于补充审核体验、到账速度、迁移、退款、拒付和客服处理等官方文档难以直接说明的事实。 + +### D 级:单点经验或不可复核说法 + +- 单个帖子、转述、无时间的经验贴、联盟内容、销售口头承诺。 +- D 级只能作为线索进入待核验清单,不能直接形成正向推荐。 + +## 易变字段 + +以下字段在给出正式建议前必须按回答当天重新核验,并在档案中写明 `最后核验日期`: + +- 支付角色、卖家地区、支持主体、买家地区与币种、支付方式。 +- 平台服务费、支付通道费、固定费用、提现费、退款费、拒付费。 +- 结算、结算周期与最低结算额、当前状态、申请入口、产品可用性。 + +## 直接来源规则 + +- 费用、资质、地区、产品能力、结算规则、运营状态、支付角色和资金路径,默认必须有 A 级直接来源。 +- 没有直接来源时,不把推断写成事实;用结构化待核验块保留不确定性。 +- 同一机构下的相邻产品页不能自动替代目标产品页。结论必须和具体产品、主体、地区完全对应。 + +## 资金路径规则 + +- `资金路径` 必须严格写成四段:`买家 -> 收款方 -> 清算方 -> 卖家具体账户`。 +- 四个节点都必须非空,且不得用 `未知`、`待确认`、`不明` 等占位词伪装成节点。 +- 找不到清算方直接证据时,应精确指出缺失的清算节点,例如 `协议约定的结算处理(公开资料没有写明具体清算方)`;这仍然属于未知,只能配 `仅作线索` 或 `已停止/归档`,并保留结构化 `待核验问题`。 +- `支付角色` 进入关键字段集合,必须明确说明平台在链路中的角色,不能写成模糊值。 + +## 推荐联动规则 + +- 关键字段包括:当前状态、支付角色、资金路径、卖家地区、支持主体、买家地区与币种、支付方式、平台服务费、支付通道费、固定费用、提现费、退款费、拒付费、结算、结算周期与最低结算额、适用条件、不适用条件。 +- 任何推荐等级只要关键字段存在模糊未知,就必须填写结构化 `待核验问题`。 +- `待核验问题:无` 只允许出现在关键字段全部已知时;否则视为契约错误。 +- `直接推荐` 额外要求没有任何待核验块。 +- `实践来源` 只要明确写出 `实践证据不足`,推荐等级只能用 `仅作线索` 或 `已停止/归档`,且 `待核验问题` 不能为 `无`,必须保持完整结构化。 +- `当前状态:已停止` 只能配 `已停止/归档`。 +- `当前状态:无法确认` 只能配 `仅作线索` 或 `已停止/归档`。 + +## 模糊未知与唯一豁免 + +- 以下模式视为模糊未知:`未知`、`未确认`、`未核实`、`未明确`、`未公开`、`未查到`、`不详`、`不明`、`不确定`、`待定`、`待确认`、`待核验`、`无法确认`、`暂无结论`。 +- 唯一允许视为已知结论的形式是:`未公开统一数字(以...为准)`。 +- 其中 `...` 必须明确指向签约页、合同、后台显示或报价单等正式载体;单写 `未公开` 仍视为未知。 +- 资金路径中精确指出缺失清算方只允许保留事实缺口,不适用上述“视为已知”豁免。 + +## 费用拆分规则 + +- `平台服务费` 与 `支付通道费` 必须单列。 +- `固定费用、提现费、退款费和拒付费` 字段内部必须分别出现且非空: + - `固定费用:...` + - `提现费:...` + - `退款费:...` + - `拒付费:...` +- 允许明确写 `0`、`无此项`、`未公开统一数字(以签约页为准)`、`未公开统一数字(以合同为准)`、`未公开统一数字(以后台显示为准)`、`未公开统一数字(以报价单为准)`。 +- 不接受只写其中一项,不接受泛称 `其他费用`、`其他费`,也不接受在组合费用块中新增第五个冒号子键。 +- 普通续行说明可以保留,但不能伪装成新的费用键。 + +## 官方链接规则 + +- `官方来源` 至少包含一个可解析的 `http` 或 `https` 链接。 +- 生产规则拒绝 `localhost`、`localhost.` 和所有 IP literal。 +- hostname 必须是规范化的有效域名,且包含有效的域名点。 +- 提取链接时允许剥离尾随中英文标点,例如 `https://example.com。` 仍视为有效链接;`https://。` 仍无效。 + +## 过期来源处理 + +- 来源失效、页面下线、截图无法追溯或超过维护周期时,将对应事实标记为待复核。 +- 待复核事实可以保留上一版记录,但不能继续作为新的推荐依据。 +- 平台停用或产品下线时,推荐等级改为 `已停止/归档`,并保留历史说明。 + +## 待核验问题格式 + +当平台档案中的 `待核验问题` 不为 `无` 时,必须使用下面的固定模板: + +```markdown +- 缺失事实:还不能确认的具体事实。 +- 已查来源:已经检查过的入口、页面、文档、截图和日期。 +- 需要询问:下一次需要向谁确认什么问题? +- 可接受证据:什么样的官方页面、文档、合同、报价单、后台截图、申请结果、书面回复、邮件或盖章协议可以完成核验。 +``` + +补充要求: + +- 四项都必须非空。 +- `缺失事实` 允许写 `无法确认...`,但必须写出具体主题,不能只写 `待确认`、`未知`。 +- `需要询问` 必须是长度足够、以 `?` 或 `?` 结尾的具体问题,并包含 `是否`、`可否`、`能否`、`哪些`、`哪类`、`如何`、`多少`、`什么`、`哪一个` 等疑问结构;`请确认是否支持?` 这类泛问不通过。 +- `可接受证据` 必须写出具体证据载体;单写 `官方回复` 不通过,`官方书面回复明确写出适用主体、类目和结算路径。` 通过。 +- backlog 子字段重复出现视为契约错误。 diff --git a/tests/fxskill/iteration-results.md b/tests/fxskill/iteration-results.md index 016be0e..7f2aa16 100644 --- a/tests/fxskill/iteration-results.md +++ b/tests/fxskill/iteration-results.md @@ -1038,3 +1038,868 @@ Task 10 的各次输出均先在未提交工作树运行,确认后才提交; | R3 | R3 复跑仍在“现状”提前给路线结论 | `6cc87c7` 最终工作树继续限定纯静态现状与迁移推断;最终 R3 复跑通过 | 最终 run IDs:R1 `019f5f73-dd1c-7393-b993-5dd78408bea8`、R2 `019f5f73-f371-7ae1-8442-333a822b2d43`、R3 `019f5f76-2549-7bb2-837a-da2498d1920a`、R4 `019f5f74-1d07-7c42-a130-30775d331ad7`、R5 `019f5f6b-b5b9-7670-a6b1-380d9e8e51c8`、R6 `019f5f6b-cc48-7473-a84b-c338fabca331`。内部 scorer `019f5f77-f0fc-7462-9ea2-5660aab8de25` 评分为 **6/6 PASS**;完整回答和分数见 [`forward-results.md`](forward-results.md) 文末。 + +## S. Task 6 支付路由集成 + +### 采集口径 + +- 日期:2026-07-15。 +- 工作树:`C:\Users\PC\.config\superpowers\worktrees\Skill\fxskill-v1`。 +- 基线提交:`ccb826e8eba6aa0d57cea9ebe8a2aed2b0bf6c9d`。 +- 本节只记录 Task 6 新增场景、静态 RED/GREEN 和可执行的本地验证结果。 + +### 静态 RED + +在只修改 `tests/fxskill/scenarios.md`、`tests/fxskill/rubric.md` 和 `tests/fxskill/test_payment_kb.py` 后运行: + +```powershell +py -3 -m unittest tests/fxskill/test_payment_kb.py -v +``` + +结果:**RED**,57 个测试运行,3 个失败。 + +- `test_skill_topic_table_splits_payment_from_general_compliance`:`SKILL.md` 尚未把支付路由到 `payment-index.md`。 +- `test_skill_payment_runtime_uses_index_then_one_scenario_and_one_profile`:`SKILL.md` 尚未要求先读索引、再只读一个相关场景和一个相关档案。 +- `test_payment_compliance_points_to_index_without_cn_platform_fact_duplicates`:`payment-compliance.md` 尚未指向索引,且仍保留中国大陆支付平台事实副本。 + +### 行为基线:`ccb826e`(0/4 preliminary before independent scoring) + +以下 raw answers 与 run IDs 来自 `.superpowers/sdd/task-6-behavior-runs.md`,本节只转录控制器运行证据和 failure notes,不补造独立评分。 + +#### R7:`019f655d-8019-7940-bb40-afab80162f6a` + +```markdown +**现状** +你是中国大陆自然人、无执照、大陆结算账户;对网站自动收款这类正式接口,当前直接资格证据里,自然人资格未确认,原创 Notion 模板和 PDF 下载包的官方经营类目归类也未确认。 + +**依据** +- [微信主体资料](https://pay.wechatpay.cn/doc/v3/merchant/4012071573)列出的微信支付普通商户主体类型不含自然人。 +- [支付宝入口](https://open.alipay.com/module/webApp)只是申请入口,不证明自然人或该类数字内容场景资格。 + +**风险** +若主体或类目不被受理,当前“自然人直接接网站自动发链”路线可能无法获准。 + +**下一步** +- 核验“原创 Notion 模板和 PDF 下载包”在微信支付普通商户申请中的经营类目归类,当前官方映射未确认。 +- 登记个体工商户,仅当前一项结果支持此路线时,这条是你现在最便宜且还能保留网站自动发链能力的正式接口路线,登记后每年还要报年报。[年报办法](https://www.samr.gov.cn/zw/zfxxgk/fdzdgknr/fgs/art/2025/art_0c753e108142465db664db16bc0e8b95.html) +- 申请微信支付普通商户,仅当前两项结果支持此路线时。 +``` + +Preliminary result: FAIL. It gives a route, but omits the complete cost card and profile verification date, and asserts “cheapest” without same-dimension evidence. + +#### R8:`019f655d-9557-71a2-961e-37949a5e7adf` + +```markdown +**现状** +你已有大陆个体户执照和大陆结算账户,也明确只卖国内用户的 AI 生图积分包;当前最大不确定点不是回调需求,而是第三方聚合路线对主体、类目、接口和责任边界的支持都未确认。 + +**依据** +- 第三方聚合没有直接资格证据时,只能作为待核验线索;主推荐前要确认主体要求、实际收单通道、商户号归属、结算和售后责任。 +- 平台支持扫码、网页支付或数字商品,不能直接证明个体工商户可申请,也不能证明这类积分包归类已被接受。 + +**风险** +若主体或类目不被接受,这条主支付路线可能无法获准,付款后自动加额度也难以稳定落地。 + +**下一步** +- 把虎皮椒和 XorPay 都只当待核验候选,当前不下谁更适合作主支付的结论。 +- 向虎皮椒索取直接资格资料,要求其明确写出个体工商户、AI 生图积分包、网站 API/回调、国内结算四项是否支持。 +- 向 XorPay 索取同一维度的直接资格资料,只有两边都拿到同维度证据后才比较谁更适合作主支付。 +``` + +Preliminary result: FAIL. It gives no defensible main route, omits both platforms' complete cost cards, and omits the verification date. + +#### R9:`019f655d-a97c-7d80-a52e-1d057ce62da7` + +```markdown +**现状** +你这个场景是中国大陆个人创作者卖月会员和下载资料。现在不能把小报童直接当成你自己网站支付 API 的等价替代,因为它对卖家主体、商品归类、实际收单通道、商户号归属和站外自动开权限能力的直接资格证据还没有成立。 + +**依据** +- 微信支付普通商户主体资料只证明页面列明的主体类型,不证明自然人或第三方平台可直接用于网站商业支付。 +- 支付宝开放平台入口只算申请入口,不证明个体工商户或自然人在特定网站场景具备资格。 + +**风险** +若实际收单通道不接受你的主体或类目,这条路线可能无法获准,站内自动开通权限也可能落不到你自己的网站账户体系。 + +**下一步** +- 核验小报童的主体要求、实际收单通道、商户号归属、结算责任和售后责任。 +- 核验“月会员加下载资料”在目标支付产品里的官方类目归属。 +- 申请支持该主体和类目的正式网站支付产品,仅当上一项核验结果支持此路线时。 +``` + +Preliminary result: FAIL. It misses the hosted-platform evidence, complete fee/payout/refund card, and verification date. + +#### R10:`019f655d-bdb1-7123-ae3a-159ba3767a2f` + +```markdown +**现状** +你给的信息已足够判断场景:中国大陆企业主体、大陆结算、只卖给国内用户、99 元数字会员、单次购买。现有参考里没有 XorPay 的官方费率页,也没有它对该主体和这类数字商品的直接资格资料,所以“当前平台费”现在未确认。 + +**依据** +- 该参考明确要求:价格、平台支持和支付资格要按当前官方来源核验。 +- 该参考同时要求:第三方聚合平台在没有直接资格证据时,只能作为待核验线索。 + +**风险** +若直接按未核验费率估算,实际签约费率、通道费、结算责任和退款成本可能与预期不一致。 + +**下一步** +- 向 XorPay 索要当前官方费率页或合同报价单。 +- 让 XorPay 书面确认你的企业主体与“AI 图片生成月度会员”类目是否可接。 +- 对照确认是否另收通道费、退款费或结算费。 +``` + +Preliminary result: FAIL. It incorrectly says the reference lacks current XorPay fee data and omits the required full cost composition/date. + +Baseline preliminary pass count: 0/4. + +### 静态 GREEN + +完成 `SKILL.md` 与 `payment-compliance.md` 路由/引用修改后运行: + +```powershell +py -3 -m unittest tests/fxskill/test_payment_kb.py -v +py -3 scripts/validate_payment_kb.py +git diff --check +``` + +结果: + +- `test_payment_kb.py`:57 个测试全部通过。 +- `validate_payment_kb.py`:`11 payment platform profiles validated`。 +- `git diff --check`:退出码 0;仅输出 Windows 工作区行尾提示,无 whitespace error。 + +### 第一轮集成运行:`9dbd5eb`(0/4 preliminary before independent scoring) + +以下 raw answers 与 run IDs 来自 `.superpowers/sdd/task-6-behavior-runs.md`,为第一轮集成运行证据。它们不是本次修复后的新鲜行为复跑。 + +#### R7:`019f655f-5a82-7e83-a743-e235a40befac` + +```markdown +**收款判断** +你现在的限制是中国大陆自然人、没有营业执照、卖 29 元数字下载,官方直连商户路线会卡在主体。按当前本地档案,最便宜但还能用的路线是面包多内容交易的普通模式;它适合资料包这类托管售卖,但不是官网内嵌收银台。公开口径里普通模式只明确到 1% 第三方支付手续费,统一平台费未公开,收益 7 天后转可提现余额。 + +**下一步** +- 把 Notion 模板和 PDF 下载包上架到面包多内容交易。 +- 把网站购买按钮链接到面包多商品页。 +- 先用普通模式收首批订单,代价是到账比闪电结算慢。 +``` + +Preliminary result: FAIL. Wrong fixed headings, promotes a `仅作线索` platform as the cheapest main route, and omits full costs/conditions/date. + +#### R8:`019f655f-6fb9-7aa1-9112-425e84a159c9` + +```markdown +**支付判断** +你这个场景已知是大陆个体户、国内用户、独立站单次支付、付款后回调加 AI 生图额度。已核验资料里,这类额度包的首个官方核验入口是支付宝 AI 网页应用收款;虎皮椒和 XorPay 都只是“仅作线索”。如果只在这两家里二选一,当前更偏向 XorPay:它公开的 API、回调、查询、退款覆盖更完整;虎皮椒当前微信唤醒跳转和小程序支付仍有限。两家共同的最大缺口,是都没有现成写明 AI 生图额度类目可过审的书面结论。 + +**下一步** +- 优先把支付宝 AI 网页应用收款作为主支付核验入口。 +- 把 XorPay 作为备选主支付,仅当它书面确认 AI 生图额度类目、费率、结算账户和合同主体时启用。 +- 把虎皮椒留作次备,适用场景偏 PC 二维码或支付宝路径;微信链路限制是当前明显坑。 +``` + +Preliminary result: FAIL. Wrong fixed headings, missing cost cards/date, and it adds two alternatives despite the one-alternative rule. + +#### R9:`019f655f-83df-7a41-b35e-42cc58493336` + +```markdown +**支付判断** +不能把小报童当成你独立网站的支付 API 替代品。你这个需求是“读者在自己网站付款后,网站自动开通站内权限”;按当前公开资料,小报童是托管付费专栏平台,不是通用收银台,官方帮助中心也未见公开 API、SDK 或 Webhook。它更适合把会员内容或资料放在小报童里卖,再从你的网站跳转过去付款,不适合做你站内权限自动开通的主支付。 + +**下一步** +- 把小报童只当托管售卖备选;接受跳转支付、平台托管和迁移边界时再用。 +- 把站内自动开权限的主通道改成官方直连支付;你当前最大的门槛是大陆个人身份加 AI/虚拟会员类目。 +- 把“每月 49 元会员”先定义成一次性 30 天访问权;这比自动续费更接近当前可落地路径。 +``` + +Preliminary result: FAIL. Wrong fixed headings and missing complete fee/payout/refund/settlement card, conditions, and date. + +#### R10:`019f655f-9815-7bc2-953f-a9580e0ab38d` + +```markdown +**费用口径** +你这个场景属于中国大陆企业、独立站、国内用户单次购买。按当前 XorPay 档案,公开成本分四层:开通费 100 元;月费分别为 0/10/30/60 元;平台费分别为 1.2%/1%/0.8%/0.6%;另有 XorPay 页面口径的通道费 0.38%。AI 图片会员这类数字权益的类目是否放行,档案里仍是待核验状态。 + +**怎么算** +- 只看 XorPay 平台费:99 元订单分别扣 `1.188`、`0.99`、`0.792`、`0.594` 元。 +- 看公开单笔总变动成本:99 ×(平台费 + 0.38%),分别是 `1.5642`、`1.3662`、`1.1682`、`0.9702` 元/单。 +- 单笔到手金额:分别约 `97.4358`、`97.6338`、`97.8318`、`98.0298` 元;再另摊开通费 100 元和对应月费。 +``` + +Preliminary result: FAIL. Wrong fixed headings, missing withdrawal/refund/chargeback/settlement/minimum fields and date, and no action route. + +First integrated preliminary pass count: 0/4. + +### 本次后续静态 RED + +在只新增 always-loaded `SKILL.md` 支付答案契约静态测试后运行: + +```powershell +py -3 -m unittest tests/fxskill/test_payment_kb.py -v +``` + +结果:**RED**,59 个测试运行,2 个失败。 + +- `test_skill_payment_fixed_answer_contract_is_always_loaded`:`SKILL.md` 未携带信息完整支付问题的固定四标题、事实区和行动区契约。 +- `test_skill_payment_contract_preserves_scenario_route_and_full_cost_card`:`SKILL.md` 未要求保留规范场景主路线、成立条件、推荐等级、完整成本卡、同维比较和 `仅作线索` 边界。 + +### 本次后续静态 GREEN + +完成 `SKILL.md` always-loaded 支付答案契约与 `payment-compliance.md` 共享 fallback 同步后运行: + +```powershell +py -3 -m unittest tests/fxskill/test_payment_kb.py -v +py -3 scripts/validate_payment_kb.py +git diff --check +``` + +结果: + +- `test_payment_kb.py`:59 个测试全部通过。 +- `validate_payment_kb.py`:`11 payment platform profiles validated`。 +- `git diff --check`:退出码 0;仅输出 Windows 工作区行尾提示,无 whitespace error。 + +本次修复没有运行新的 fresh-agent 行为波次;控制器将在本提交后运行下一轮 R7-R10 行为波次和独立评分。 + +### Wave 2:`8018673`(独立评分 0/4) + +- 运行版本:`80186738fb2da389cad96f73416fbde62b09d352`。 +- 独立评分 agent:`019f656a-4fec-7e01-a8d4-83b9649f1ad1`。 +- 本节原样保留四份 fresh-agent 回答;评分中的动作数按语义动作计,不按项目符号数计。 + +#### R7:`019f6568-0ec1-7731-9a41-aec8182e55f1` + +```markdown +**现状** +你是中国大陆自然人、无营业执照、大陆结算账户,卖的是 29 元数字资料单次下载。这组条件下,官网里的正式商户收款主体还不成立;当前贴合“低门槛开卖”的是托管内容交易页,不是独立站内嵌通用收银台。 + +**依据** +- 面包多内容交易档案写明:支持中国大陆个人创作者卖模板、电子书、设计资源等数字内容,支持单次支付、订单查询与回调;独立站只能跳转到面包多商品页,不等同官网收银台。推荐等级:仅作线索;最后核验日期:2026-07-15。 +- 成本卡:平台服务费未公开统一数字;支付通道费普通模式帮助页列 1%,闪电结算帮助页只列总服务费 5.7%;开通费、月费、提现费、退款费、拒付费未公开统一数字;结算为普通模式 7 天后转可提现余额,支付宝提现一般不超过 24 小时,闪电结算为微信次日自动提现或支付宝实时入余额;最低结算额为普通模式可提现余额大于 1 元,每 24 小时一次。主体条件是中国大陆个人创作者;类目条件是模板、资料、设计资源等数字内容;结算账户为支付宝、银行卡或企业账户;支付模式是跳转托管页的单次支付。 + +**风险** +如果你要官网内完成收银、统一公开费率、完整客户数据迁出或长期稳定主通道,这条线可能不成立;若转正式商户支付,自然人主体和数字类目也可能拿不到准入。 + +**下一步** +- 若你现在只求先卖通,采用面包多内容交易托管页;网站只放商品介绍和购买按钮。 +- 登记个体工商户;不是拿到执照就结束,之后每年还要报年报。 +- 仅当上一项完成后,申请支付宝 AI 网页应用收款,作为长期正式收款路线。 +``` + +独立评分:**FAIL**;语义动作 `4`;问题 `0`。失败原因:`现状` 提前推荐托管路线;把推荐等级为 `仅作线索` 的面包多当作首选;“采用托管页”与“配置购买按钮”合并为两个动作;总动作超过三条;费用未完全公开且没有同维比较时仍暗示它是当前低门槛可用路线。 + +#### R8:`019f6568-2b40-7de0-80a4-c58c2be9acb8` + +```markdown +**现状** +你这个组合是:中国大陆个体户主体、大陆结算账户、卖 AI 生图额度包、只收国内用户、站内单次扫码或网页支付、付款后回调加额度。已核验档案里,`虎皮椒` 和 `XorPay` 的推荐等级都只是“仅作线索”。 + +**依据** +- 场景档对“中国大陆个体户 AI 生图额度包”的成立条件写得很明确:主体要能完成个体户签约,AI 生图额度包/虚拟权益类目要拿到书面准入,结算账户与结算周期要被书面确认,支付模式是 `支付宝 AI 网页应用收款` 的单次网页支付。 +- 服务商档案里,虎皮椒:平台费 `1%-2%` + 页面口径通道费 `0.38%-0.6%` + 开户费微信 `118` / 支付宝 `88`,微信 `D+1/T+1`、支付宝通常直达到卖家账户;XorPay:平台费 `1.2%/1%/0.8%/0.6%` + 通道费 `0.38%` + 开通费 `100` + 月费 `0/10/30/60`,微信 `T+1`、支付宝即时到签约账户。两家公开项里都无提现费、退款费、拒付费,最后核验日期都是 `2026-07-15`。 + +**风险** +AI 生图额度包在这两家的正式类目、书面费率、书面结算结果都还没确认。虎皮椒还有“限定开放”与部分微信能力待恢复核验的问题;XorPay 的合同主体全称和备案主体也待核验。这个状态下,不能把两家当成已成立的正式主支付能力。 + +**下一步** +- 主支付不要选虎皮椒或 XorPay,改走 `支付宝 AI 网页应用收款`。 +- 先向支付宝拿到“个体户 + AI 生图额度包”对应的书面准入、费率、结算账户与结算周期结果。 +- 仅当你必须先做小额验证,且 XorPay 能书面确认主体、类目、费率、结算与回调时,再把 `XorPay` 当条件性备选;`虎皮椒` 不做主支付。 +``` + +独立评分:**FAIL**;语义动作 `4`;问题 `0`。失败原因:两家费用维度不完整,缺虎皮椒月费口径及两家的最低结算额/余额回收规则;未明确两家 API 回调成立条件;把 XorPay 的书面确认藏进“确认后作为备选”的条件,形成第四个动作;虎皮椒开户费也未保留同页口径冲突与“以申请页为准”的来源边界。 + +#### R9:`019f6568-3f71-7623-b1cf-fead03987446` + +```markdown +**现状** + +不能。小报童在当前档案里是“内容平台 / 代售付费专栏”,推荐等级是“仅作线索”,不是独立网站支付 API。对你这个“网站付款后自动开通权限”的场景,已核验能力只到专栏页成交,不到站内收银和权限回调。 + +**依据** + +- 小报童适合付费专栏、订阅制内容、买断制知识产品;支付发生在小报童专栏页、微信服务号或桌面页。官方帮助中心未发现公开 API、SDK 或 Webhook 文档;独立站只能导流到专栏,不应当作官网支付组件。 +- 费用与结算已核验部分是:平台服务费 15%;支付通道费未公开统一数字;个人提现约 6% 服务费按提现金额收取,且不含实际税金;订阅订单 48 小时无退款后可提现,一般每周四处理;退款退报童币,不是原路退款。 + 你当前这类独立 AI/数字服务网站的主路线成立条件,则是主体为企业或个体工商户,类目拿到 AI、虚拟权益或数字服务的书面准入,结算账户与周期已确认,支付模式为官方网页单次支付。 + +**风险** + +最大问题不是收不到钱,而是你自己网站的自动开权限闭环没有当前已核验接口可接。另一个风险是订单、支付流水、读者关系和内容迁移边界没有被证明可完整迁出。 + +**下一步** + +- 主路线按独立 AI / 数字服务网站处理:先转成企业或个体工商户等可签约经营主体,再用支付宝 AI 网页应用收款做官方网页单次支付核验。 +- 仅当你接受“站外成交 + 平台托管内容”时,才把小报童当验证线索;它适合卖专栏,不适合替代你网站的支付 API。 +``` + +独立评分:**FAIL**;语义动作 `3`;问题 `0`。失败原因:`依据` 出现主路线成立条件;费用卡缺固定费、拒付费和最低提现额;缺个人/企业主体、非自动扣款条件及最后核验日期;“转主体后再用支付宝”把两个动作塞进一条且未阻断失败分支;“已核验能力只到专栏成交”也应收窄为“公开资料未发现 API”。 + +#### R10:`019f6568-53a5-7252-8408-c2d0d0e3e577` + +```markdown +**现状** + +你这个场景是中国大陆企业主体、大陆结算账户、国内用户、99 元 AI 图片生成月度会员、单次购买非自动续费。按当前档案,XorPay 处于正常运营,但其档案推荐等级是`仅作线索`;这个规范场景记录的主路线是`中国大陆企业 SaaS 单次支付走微信支付 Native`。 + +**依据** + +- 成立条件:主体为中国大陆企业;类目为可按微信支付入驻的 SaaS、软件开发或其他互联网服务。放到你这里,AI 生图月会员/数字权益仍属于需单独核验的类目。结算账户为同名银行卡或签约支付宝账户;支付模式是单次支付,不是自动续费。 +- XorPay 当前费用卡(最后核验日期:2026-07-15):平台服务费为体验版 1.2% / 基础版 1% / 标准版 0.8% / 高级版 0.6%;页面声称通道费固定 0.38%;开通费 100 元;月费 0 / 10 / 30 / 60 元;提现费 0;退款费 0;拒付费 0;结算周期为微信 T+1、支付宝即时到账;最低结算额/留存额未见统一公开数字。按 99 元单笔算,平台费+通道费分别约为:体验版 1.56 元,基础版 1.37 元,标准版 1.17 元,高级版 0.97 元;对应未计月费和 100 元开通费的单笔净额约为 97.44 / 97.63 / 97.83 / 98.03 元。 + +**风险** + +XorPay 公开成本实际有四层:`100 元开通费 + 月费 + XorPay 平台费 + 页面声称的 0.38% 通道费`,且平台费需预充值。档案同时写明 AI 生图额度、数字会员、虚拟权益包在各支付产品下的通道进件类目和书面费率仍未确认,公开页不能直接当作微信或支付宝对你这个类目的正式准入证明。 + +**下一步** + +- 把主路线定为企业官网单次支付的微信支付 Native。 +- 向官方支付渠道取得 AI 图片月会员类目的书面准入、费率和结算周期结果。 +- 仅在你接受 XorPay 的开通费、月费和预充值规则时,再把 XorPay 作为条件备选,并以其书面进件结果为准。 +``` + +独立评分:**FAIL**;语义动作 `3`;问题 `0`。失败原因:`现状` 提前写入微信 Native 主路线;费用卡遗漏“30 天无交易可能被回收权限、重新开通再收 100 元”;未明确 XorPay 页面费率不是微信/支付宝官方统一费率。 + +Wave 2 独立通过数:**0/4**。共同失效模式是:固定结构表面存在,但场景选择、资料卡字段完整性、来源边界和原子行动仍依赖自由发挥。 + +### Wave 3:`8820145`(独立评分 1/4) + +- 运行版本:`8820145be266ea6e4321f5988ba212796f01c7aa`。 +- 独立评分 agent:`019f6575-710d-7a01-9f34-75f921164a9f`。 +- 本节原样保留四份 fresh-agent 回答;评分中的动作数按语义动作计,不按项目符号数计。 + +#### R7:`019f6573-24d9-72f1-a077-f99c3874cb78` + +```markdown +**现状** + +你是中国大陆自然人,买家只在国内,卖的是 29 元一套的原创 Notion 模板和 PDF 下载包,收款是单次付款后发下载链接;当前已核验资料里,独立网站正式商户收款对自然人没有成立结论,支付宝官方直连为条件推荐,面包多内容交易为仅作线索。 + +**依据** + +- 成本卡:支付宝|平台服务费:无此项 / 支付通道费:未公开统一数字(以报价单为准) / 固定或开通费:未公开统一数字(以报价单为准) / 月费:无此项口径 / 提现费:未公开统一数字(以后台显示为准) / 退款费:退款时已扣交易手续费不退回 / 拒付费:未公开统一数字(以合同为准) / 结算周期:公开页没有统一结算周期 / 最低额-留存-权限回收:公开页没有统一最低结算额,具体以签约页、后台或报价单为准 / 最后核验日期:2026-07-15 / 来源边界:官方直连,条件推荐。面包多|平台服务费:未公开统一数字(以后台显示为准) / 支付通道费:未公开统一数字,普通模式帮助页列 1% 第三方支付手续费,闪电结算帮助页只列总服务费 5.7% / 固定或开通费:未公开统一数字(以后台显示为准) / 月费:无此项口径 / 提现费:未公开统一数字(以后台显示为准) / 退款费:未公开统一数字(以后台显示为准) / 拒付费:未公开统一数字(以合同为准) / 结算周期:普通模式 7 天后转可提现余额,服务单完成后 24 小时内自动结算,闪电结算微信次日自动提现、支付宝实时入余额 / 最低额-留存-权限回收:普通模式可提现余额大于 1 元即可提现,每 24 小时一次且单次最高 5000 元,闪电结算每日最高收款 10 万元 / 最后核验日期:2026-07-15 / 来源边界:内容托管平台,仅作线索。 +- 条件卡:支付宝|主体:企业或个体工商户等可签约经营主体而不是自然人 / 类目:已取得书面准入的数字内容、虚拟权益或数字服务 / 结算账户:签约支付宝商家账户或合同约定结算账户 / 结算周期:以签约页、后台或合同为准 / 支付模式:单次网页支付。面包多|主体:个人创作者可注册发布内容,闪电结算需认证 / 类目:电子书、设计资源、软件代码等允许内容 / 结算账户:创作者支付宝、银行卡或企业账户 / 结算周期:按普通模式、闪电结算或服务单规则 / 支付模式:跳转托管页完成单次购买。 + +**风险** + +自然人身份加数字内容下载包这个组合,当前没有已核验的独立站正式商户签约结论;继续做个人站内收银会卡在签约、结算或风控。 + +**下一步** + +- 登记个体工商户;这是你现在最便宜、还能长期防守的正式主路线起点。 +- 取得支付宝对模板和 PDF 类目的书面准入结果;只有主体、类目、费率和结算被写明,这条官网单次支付路线才成立。 +- 改挂面包多作品页;仅当你接受买家跳转到托管页支付,它可作为低成本验证备选,不作为长期主支付通道。 +``` + +独立评分:**FAIL**;语义动作 `3`;问题 `0`。失败原因:在大量费用仍未知时称个体户路线“最便宜”,没有同维度证据;先无条件登记、后核验支付资格,依赖顺序倒置;三步中没有正式支付申请动作。最小修正是先取得支付宝对主体和类目的书面结果,仅当结果支持时登记个体户,仅当登记完成时申请支付宝单次网页收款,并删除“最便宜”和面包多备选。 + +#### R8:`019f6573-4c00-7d61-a823-ae526295b536` + +```markdown +**现状** +你是中国大陆个体工商户,面向国内用户销售 19 元/100 点的 AI 生图额度包,站内做单次扫码或网页支付,付款后需要 API 回调加额度;该场景对应“中国大陆个体户 AI 生图额度包”,虎皮椒当前状态为限定开放、推荐等级为仅作线索,XorPay 当前状态为正常运营、推荐等级为仅作线索。 + +**依据** +- 成本卡:虎皮椒:平台服务费 1%-2% / 支付通道费 官网口径 0.6%,FAQ 口径 0.38%-0.6% / 固定或开通费 微信开户 118 元、支付宝开户 88 元 / 月费 无此项 / 提现费 无此项 / 退款费 无此项 / 拒付费 无此项 / 结算周期 微信 D+1/T+1、支付宝通常即时 / 最低额-留存-权限回收 最低结算额按通道或后台规则处理,预充值余额退款需无交易和投诉并在期限内联系客服 / 最后核验日期 2026-07-15 / 来源边界 仅官网、FAQ、协议,AI 图像额度类目与微信能力仍待书面核验。XorPay:平台服务费 体验版 1.2%、基础版 1%、标准版 0.8%、高级版 0.6% / 支付通道费 页面声称固定 0.38% / 固定或开通费 开通费 100 元 / 月费 0 元、10 元、30 元或 60 元 / 提现费 无此项 / 退款费 无此项 / 拒付费 无此项 / 结算周期 微信 T+1、支付宝即时到账 / 最低额-留存-权限回收 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元 / 最后核验日期 2026-07-15 / 来源边界 仅官网、FAQ、协议,合同主体全称和 AI 生图额度类目仍待书面核验。 +- 条件卡:虎皮椒:主体 中国大陆个人和企业 / 类目 正规网站低风险商品、普通服务或明确合规数字服务,AI 图像额度仍待书面确认 / 结算账户 卖家银行卡或支付宝账户 / 结算周期 微信 D+1/T+1、支付宝通常即时 / 支付模式 支付宝扫码/H5、微信 PC 二维码、微信截图扫码 / API 或回调 提供发起付款、查询、退款和回调。XorPay:主体 个人、个体户、企业和其他组织按进件结果 / 类目 正规网站或工具类产品,AI 生图额度或数字会员应先做类目和风控核验 / 结算账户 同名银行卡或签约支付宝账户 / 结算周期 微信 T+1、支付宝即时到账 / 支付模式 当面付、Native、JSAPI、收银台、小程序、WAP/H5 等 / API 或回调 提供支付、查询、回调和退款接口。 + +**风险** +当前阻塞是个体户销售 AI 生图额度包这一类目,在虎皮椒和 XorPay 两边都没有拿到正式进件、费率和结算的书面结果;直接后果是把任一方当主支付上线,可能在类目审核、费率变化、通道回收或微信能力限制上卡住订单。 + +**下一步** +- 取得支付宝 AI 支付或商家平台对个体户 AI 生图额度包的书面准入结果。 +- 配置 AI 网页应用收款链路;仅当上一项已书面通过。 +- 改用 XorPay 申请书面进件;仅当第一项书面拒绝个体户 AI 生图额度包或对应虚拟权益类目时。 +``` + +独立评分:**FAIL**;语义动作 `4`;问题 `0`。失败原因:没有明确说虎皮椒和 XorPay 都不作为主支付;“改用 XorPay 申请书面进件”包含选择和申请两个动作;在取得证据前已写成“改用”;虎皮椒开户费没有保留同页口径冲突及“以申请页为准”的边界。最小修正是明确排除两者作为主支付,保留支付宝官方核验主路线;若保留 XorPay,只写“索取书面进件结果”。 + +#### R9:`019f6573-727c-7913-b1fa-0aa09e10b01b` + +```markdown +**现状** +你是中国大陆个人创作者,面向国内读者卖 49 元/月 AI 提示词会员和下载资料,目标是付款后在自己网站自动开通权限;小报童当前状态为正常运营,但它的支付形态是托管专栏页而不是独立网站通用支付 API,推荐等级仅作线索。 + +**依据** +- 成本卡:平台服务费 / 15%;支付通道费 / 未公开统一数字(以后台显示为准);固定或开通费 / 未公开统一数字(以后台显示为准);月费 / 无此项;提现费 / 个人提现由云账户等第三方服务机构按提现金额收取约 6% 服务费,用于结算、税务处理与报送,不包含实际税金;退款费 / 成功退费订单不收取平台服务费,退款以报童币退回平台账户且不退回原支付方式;拒付费 / 未公开统一数字(以合同为准);结算周期 / 专栏订阅订单支付后经过 48 小时且无退款行为后解冻提现;创作者申请提现后一般每周四 16:00-19:00 操作;最低额-留存-权限回收 / 最低提现额公开帮助页未列统一数字,以钱包后台显示为准;最后核验日期 / 2026-07-15;来源边界 / 小报童官方页面与帮助文档,实践证据不足。 +- 条件卡:主体 / 个人创作者可用,提现需签约云账户;类目 / 付费专栏、订阅制内容、买断制知识产品、Newsletter 式投递和个人知识内容发行;结算账户 / 个人云账户收款账户或企业对公账户;结算周期 / 48 小时解冻后按平台提现节奏结算;支付模式 / 小报童专栏页订阅或购买;API 或回调 / 官方帮助中心未发现公开 API、SDK 或 Webhook 文档。 + +**风险** +当前阻塞是小报童未见公开 API/Webhook,且独立站只能导流到小报童专栏页,直接后果是它不能充当你网站里的实时支付接口,付款后站内自动开权限也缺少可防守的官方链路。 + +**下一步** +- 确定个体工商户或企业作为收款主体。 +- 取得官方网页收款产品对主体、类目、费率和结算的书面结果。 +- 接入单次网页收款用于首批小额订单。 +``` + +独立评分:**FAIL**;语义动作 `3`;问题 `0`。失败原因:条件卡只写个人创作者,遗漏企业创作者;“订阅或购买”没有明确说明不是自动扣款;接入动作未使用“仅当上一项结果支持时”阻断失败分支。最小修正是复制完整主体边界和续订边界,并为后续接入加入明确依赖。 + +#### R10:`019f6573-98c6-7a83-ac7f-121521240a3f` + +```markdown +**现状** + +你是中国大陆企业主体,结算账户在大陆,只卖给国内用户,商品是 `99 元 AI 图片生成月度会员`,支付模式是单次购买而不是自动续费;XorPay 当前状态为正常运营,这个档案里的推荐等级是`仅作线索`。 + +**依据** + +- 成本卡:平台服务费 / 体验版 1.2%=99×1.2%=1.188 元,基础版 1%=0.99 元,标准版 0.8%=0.792 元,高级版 0.6%=0.594 元,交易成功后从 XorPay 账号预充值余额中扣除;支付通道费 / XorPay 页面声称微信或支付宝固定 0.38%=99×0.38%=0.3762 元,从每笔收款中扣除;固定或开通费 / 开通费 100 元;月费 / 0 元、10 元、30 元或 60 元;提现费 / 无此项;退款费 / 无此项;拒付费 / 无此项;结算周期 / 微信 T+1,支付宝即时到账;最低额-留存-权限回收 / FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元;最后核验日期 / 2026-07-15;来源边界 / 平台服务费和 0.38% 通道费都来自 XorPay 页面口径,不作为微信或支付宝官方统一费率事实。 +- 条件卡:主体 / 中国大陆企业可申请,但具体通道、产品和类目资格仍以微信、支付宝或持牌机构进件结果为准;类目 / 正规网站或工具类产品的单次收款、小额验证、开发者产品,AI 生图额度或数字会员应先做类目和风控核验;结算账户 / 卖家同名银行卡或签约支付宝账户;结算周期 / 微信 T+1,支付宝即时到账;支付模式 / 支持单次支付,月度会员需按单次购买处理,不应写成官方免密自动扣款。 + +**风险** + +AI 生图月会员这个类目的书面进件结果还没确认,XorPay 公开页也不直接等于微信或支付宝对你这个业务的正式准入,所以页面费率不一定就是你最终能签下来的费率。 + +**下一步** + +- 选择微信支付 Native 作为企业官网桌面浏览器单次支付主路线。 +- 申请企业商户号的 Native 权限。 +- 核验 XorPay 对 AI 生图月会员的书面类目、费率和结算结果;仅当你确实需要服务商聚合接入时。 +``` + +独立评分:**PASS**;语义动作 `3`;问题 `0`。费用层次、权限回收、核验日期、来源边界和条件卡完整;XorPay 保持“仅作线索”,微信 Native 主路线符合企业 SaaS 单次支付场景。 + +#### Wave 3 独立评分原文 + +| 场景 | 结果 | 语义动作 | 问题 | 硬门槛失败 / 事实越界 | 最小修正 | +|---|---|---:|---:|---|---| +| R7 `019f6573-24d9...` | **FAIL** | 3 | 0 | 在大量费用仍未知时称个体户路线“最便宜”,没有同维度证据;先无条件登记、后核验支付资格,依赖顺序倒置;三步中没有正式支付申请动作。 | 先取得支付宝对主体和类目的书面结果;仅当结果支持时登记个体户;仅当登记完成时申请支付宝单次网页收款。删除“最便宜”和面包多备选。 | +| R8 `019f6573-4c00...` | **FAIL** | 4 | 0 | 没有明确说“虎皮椒和 XorPay 都不作为主支付”;“改用 XorPay 申请书面进件”包含选择和申请两个动作;在取得证据前已写成“改用”;虎皮椒开户费没有保留同页口径冲突及“以申请页为准”的边界。 | 明确排除两者作为主支付;保留支付宝官方核验主路线;若保留 XorPay,只写“索取书面进件结果”,不能提前写“改用”。 | +| R9 `019f6573-727c...` | **FAIL** | 3 | 0 | 条件卡只写个人创作者,遗漏企业创作者;“订阅或购买”没有明确说明不是自动扣款;接入动作未使用“仅当上一项结果支持时”阻断失败分支。 | 主体改为个人或企业创作者;支付模式补充“续订提醒,不是自动扣款”;第三步增加对上一项书面结果的明确条件。 | +| R10 `019f6573-98c6...` | **PASS** | 3 | 0 | 无。费用层次、权限回收、核验日期、来源边界和条件卡完整;XorPay 保持“仅作线索”,微信 Native 主路线符合企业 SaaS 单次支付场景。 | 无需修改。 | + +Wave 3 独立通过数:**1/4**。下一轮只修复评分暴露的依赖链、价格排名、复合字段完整复制、完整主体/续费边界和仅作线索候选处理;本节不生成或推断 wave 4 结果。 + +## Wave 4 原始回答与独立评分 + +独立 scorer ID:`019f6585-3a22-7f63-bc95-270d489e0baf` + +独立通过数:**1/4** + +#### R7:`019f657e-03a2-73c0-a34d-a8a7a774bd5b` + +```markdown +**现状** +你是中国大陆自然人,面向国内买家卖 29 元原创 Notion 模板和 PDF 下载包,支付模式是网站单次付款后自动发链接;支付宝 AI 网页应用收款当前状态正常运营,但自然人正式签约资格、统一费率和统一结算周期都未确认,推荐等级为条件推荐,所以现在还不能成立“最便宜”的公开排名。 + +**依据** +- 成本卡:平台服务费 / 无此项;支付通道费 / 未公开统一数字(以报价单为准);固定或开通费 / 固定费用:未公开统一数字(以报价单为准);月费 / 无此项;提现费 / 未公开统一数字(以后台显示为准);退款费 / AI 网页应用收款未发现单独退款操作费公开数字;退款时已扣交易手续费不退回;拒付费 / 未公开统一数字(以合同为准);结算周期 / AI 产品页面只公开“交易、退款和结算体验”等能力,未给出统一公开结算周期;最低额-留存-权限回收 / AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的公开页没有统一结算周期和最低结算额;具体周期、最低额、提现规则和发票能力以签约页、后台显示或业务人员报价单为准;最后核验日期 / 2026-07-15;来源边界 / 尚未形成实践结论:2026-07-15 未取得两条相互独立、可靠、可复核的真实接入记录;不使用 AI 产品营销页、示例 UI 或旧电脑网站文档替代实践经验。 +- 条件卡:主体 / AI 订阅 SaaS 文档明确支持的账号类型为支付宝企业账号;AI 网页应用收款营销页写有“个人收款场景”和“个人开发者”,但这不能单独证明自然人卖家可完成正式签约、收款和结算;传统电脑网站支付旧文档写企业或个体工商户并要求营业执照与支付宝账户主体一致;类目 / 数字内容、课程、普通电商和本地生活网页订单;AI、数字内容、课程、虚拟商品、游戏、音视频等应按支付宝签约类目和资质审核结果处理;结算账户 / 卖家签约支付宝商家账户或合同约定结算账户;结算周期 / 正式建议应以签约页、后台或合同显示的结算账户和周期为准;支付模式 / 支付宝 AI 网页应用收款单次网页支付。 + +**风险** +自然人身份和数字内容类目还没有书面准入结果,直接后果是你现在既没有可防守的官网商户收款资格,也没有能成立“最便宜”比较的正式费率和结算载体。 + +**下一步** +- 取得支付宝 AI 网页应用收款对拟登记个体工商户主体、Notion 模板和 PDF 下载包类目、费率、结算的书面结果。 +- 登记个体工商户,仅当上一项结果支持时。 +- 申请对应的官方单次网页支付产品,仅当上一项结果支持时。 +``` + +独立评分:**PASS**;语义动作 `3`;问题 `0`。 + +#### R8:`019f657e-1988-7781-862e-3ddb93eb1f30` + +```markdown +**现状** + +你现在是中国大陆个体工商户、只卖国内用户、卖的是 AI 生图额度包,支付模式是独立站内单次扫码或网页支付且付款后要回调自动加额度。虎皮椒当前为限定开放,XorPay 当前为正常运营;这两个档案的推荐等级都只有“仅作线索”,你这个场景引用的官方档案推荐等级是“条件推荐”。 + +**依据** + +- 成本卡:虎皮椒:平台服务费 1%-2%;支付通道费 官网声称微信或支付宝官方费率 0.6%;FAQ 另写 0.38%-0.6%。这只是虎皮椒页面口径,不作为微信或支付宝官方统一费率事实。;固定或开通费 当前公开价显示微信开户 118 元、支付宝开户 88 元;同页总述写开户费 118 元,最终以申请页展示金额处理。;月费 无此项;提现费 无此项;退款费 无此项;拒付费 无此项;结算周期 微信公开说明为 D+1/T+1 到银行卡,支付宝通常即时到支付宝账户;最低额-留存-权限回收 虎皮椒预充值余额退款需无交易和投诉并在期限内联系客服,最低结算额按通道或后台规则处理。;最后核验日期 2026-07-15;来源边界 仅能证明虎皮椒自己的费用、接口和流程,不能直接证明微信或支付宝对 AI 生图额度类目的官方准入。XorPay:平台服务费 按套餐为体验版 1.2%、基础版 1%、标准版 0.8%、高级版 0.6%,交易成功后从 XorPay 账号预充值余额中扣除。;支付通道费 XorPay 页面声称微信/支付宝通道固定 0.38%,从每笔收款中扣除;该数字来自 XorPay 页面,不作为微信或支付宝官方统一费率事实。;固定或开通费 开通费 100 元;月费 套餐月费 0 元、10 元、30 元或 60 元。;提现费 无此项;退款费 无此项;拒付费 无此项;结算周期 微信 T+1;支付宝即时到账;最低额-留存-权限回收 FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元。;最后核验日期 2026-07-15;来源边界 仅能证明 XorPay 自己的费用、接口和流程,不能直接证明微信、支付宝或持牌机构对 AI 生图额度类目的官方进件结果。 +- 条件卡:虎皮椒:主体 中国大陆个人和企业按虎皮椒公开流程申请;协议要求境内合法公民或依法设立的公司,且需按微信、支付宝要求提交经营资料。;类目 正规网站上的低风险实物、普通服务或明确合规的数字服务;协议和公告限制欺诈、洗钱、赌博、色情、盗版音视频、侵权内容、虚拟发卡、虚拟账号、游戏充值、金融保险房地产等;虚拟账号销售已被公告清退。;结算账户 微信款项由微信支付链路 D+1/T+1 到卖家银行卡,支付宝通常到卖家支付宝账户。;结算周期 微信公开说明为 D+1/T+1 到银行卡,支付宝通常即时到支付宝账户。;支付模式 单次支付支持;API 返回二维码或跳转链接,需由商户处理回调、查单、签名和订单状态;订阅与自动续费不作为公开默认能力,需要商户自行实现订单周期并每次发起支付,不应写成自动扣款。;API 或回调 提供 PHP、Java、ASP.NET、Python 等 SDK、CMS 插件、发起付款接口、查询接口、退款接口和回调。XorPay:主体 XorPay FAQ 声称支持个人、个体户、企业和其他组织;具体通道、产品和类目资格仍以微信、支付宝或持牌机构进件结果为准。;类目 正规网站或工具类产品的单次收款、小额验证、开发者产品;AI 生图额度或数字会员应先做类目和风控核验;协议限制违法违规业务、金融类、信用融资理财担保信托货币兑换等,以及微信、支付宝或持牌机构拒绝的类目。;结算账户 微信 T+1 到个人同名银行卡,支付宝即时到签约支付宝账户,或经持牌机构清算到同名银行卡。;结算周期 微信 T+1;支付宝即时到账。;支付模式 单次支付支持;文档提供当面付、Native、JSAPI、小程序、订单状态查询、回调、退款等接口;订阅与自动续费未作为公开默认产品列明,可由商户自行周期下单,不应写成官方免密自动扣款。;API 或回调 提供开发文档、Demo、API 调试器、签名算法、支付接口、查询、回调和退款接口。 + +**风险** + +当前阻塞是:两家档案都没有给出“中国大陆个体户销售 AI 生图额度包”已书面通过的主体、类目、费率和结算证据,直接把它们设为主支付会把首单放在未核验的进件和风控链路上。 + +**下一步** + +- 排除:虎皮椒和 XorPay 都不作为主支付。 +- 取得:支付宝 AI 支付或商家平台对个体户主体、AI 生图额度包类目、费率和结算的书面准入结果。 +- 配置:仅当上一项结果支持时,配置 AI 网页应用收款链路和付款成功回调加额度。 +``` + +独立评分:**FAIL**;语义动作 `4`;问题 `0`。失败原因:第三步把“配置收款链路”和“配置回调加额度”合成两个动作,总动作 `4`。 + +#### R9:`019f657e-2dc1-7ec0-a0c0-c8ac6f9c7102` + +```markdown +**现状** + +你是中国大陆个人创作者,面向中国大陆读者,卖的是每月 49 元的 AI 提示词会员和下载资料,目标是读者付款后自动开通你自己网站里的权限;小报童当前是正常运营的付费专栏托管平台,不是独立网站通用支付 API,推荐等级:仅作线索。 + +**依据** + +- 成本卡:平台服务费 / 15%;支付通道费 / 未公开统一数字(以后台显示为准);固定或开通费 / 固定费用:未公开统一数字(以后台显示为准);月费 / 无此项口径;提现费 / 个人提现由云账户等第三方服务机构按提现金额收取约 6% 服务费,用于结算、税务处理与报送,不包含实际税金;企业提现需提供 6% 增值税专用发票;退款费 / 成功退费订单不收取平台服务费,退款以报童币退回平台账户且不退回原支付方式;拒付费 / 未公开统一数字(以合同为准);结算周期 / 专栏订阅订单支付后,经过 48 小时且无退款行为后解冻提现;创作者申请提现后,小报童一般在每周四 16:00-19:00 委托云账户操作,节假日顺延;企业账户需提供 6% 增值税专用发票后打款;最低额-留存-权限回收 / 专栏订阅资金 48 小时无退款后可解冻提现;提现操作一般每周四 16:00-19:00;最低提现额公开帮助页未列统一数字,以钱包后台显示为准;最后核验日期 / 2026-07-15;来源边界 / 官方帮助中心未发现公开 API、SDK 或 Webhook 文档;公开资料不能证明完整订单、支付流水、读者关系和内容可完整迁出。 +- 条件卡:主体 / 个人创作者需有效手机号、联系地址和必要法定资质;企业创作者需营业执照、授权委托书、邮箱、手机号、联系地址和必要法定资质;类目 / 付费专栏、订阅制内容、买断制知识产品、Newsletter 式投递和个人知识内容发行;结算账户 / 创作者个人云账户收款账户或企业对公账户;结算周期 / 专栏订阅资金 48 小时无退款后可解冻提现,提现操作一般每周四 16:00-19:00;支付模式 / 小报童专栏页面、微信服务号、桌面浏览器和报童币订阅或购买;支持订阅制专栏和续订提醒,不把它写成自动扣款;API 或回调 / 官方帮助中心未发现公开 API、SDK 或 Webhook 文档。 + +**风险** + +当前阻塞是小报童公开资料未发现可用来做独立站站内收款开通权限的 API 或 Webhook,且独立站只能导流到小报童专栏页,直接后果是它不能替代你网站自己的支付 API。 + +**下一步** + +- 取得支付宝 AI 网页应用收款对拟登记个体工商户主体、AI 提示词会员与下载资料类目、费率和结算的书面结果,小报童仅作线索,不作为主支付。 +- 登记个体工商户,仅当上一项结果支持时。 +- 申请对应的官方单次支付产品,仅当上一项结果支持时。 +``` + +独立评分:**FAIL**;语义动作 `4`;问题 `0`。失败原因:第一步把“取得书面结果”和“小报童仅作线索/不作为主支付”合成两个动作,总动作 `4`。 + +#### R10:`019f657e-41f9-7740-9cc4-b9e0b0d54999` + +```markdown +**现状** + +你现在是中国大陆企业主体、面向中国大陆用户卖 99 元 AI 图片生成月度会员,支付模式是单次购买而不是自动续费;XorPay 当前状态为正常运营,推荐等级为仅作线索。按当前公开平台服务费单看 XorPay 平台费,99 元单笔分别约 1.19 元、0.99 元、0.79 元、0.59 元;如果把 XorPay 页面声称的 0.38% 通道费一并算上,单笔变动费约 1.56 元、1.37 元、1.17 元、0.97 元。 + +**依据** + +- 成本卡:平台服务费 / 按套餐为体验版 1.2%、基础版 1%、标准版 0.8%、高级版 0.6%,交易成功后从 XorPay 账号预充值余额中扣除。支付通道费 / XorPay 页面声称微信/支付宝通道固定 0.38%,从每笔收款中扣除;该数字来自 XorPay 页面,不作为微信或支付宝官方统一费率事实。固定或开通费 / 开通费 100 元。月费 / 0 元、10 元、30 元或 60 元。提现费 / 无此项。退款费 / 无此项。拒付费 / 无此项。结算周期 / 微信 T+1;支付宝即时到账。最低额-留存-权限回收 / FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元。最后核验日期 / 2026-07-15。来源边界 / 公开成本实际有四层:100 元开通费、套餐月费、XorPay 平台百分比、XorPay 声称的通道百分比,且平台费需预充值。 +- 条件卡:主体 / XorPay FAQ 声称支持个人、个体户、企业和其他组织;具体通道、产品和类目资格仍以微信、支付宝或持牌机构进件结果为准。类目 / 正规网站或工具类产品的单次收款、小额验证、开发者产品;AI 生图额度或数字会员应先做类目和风控核验。结算账户 / FAQ 称资金不经过 XorPay 中转,微信 T+1 到个人同名银行卡,支付宝即时到签约支付宝账户,或经持牌机构清算到同名银行卡。结算周期 / 微信 T+1;支付宝即时到账。支付模式 / 单次支付:支持;订阅与自动续费:未作为公开默认产品列明;可由商户自行周期下单,不应写成官方免密自动扣款。 + +**风险** + +XorPay 对 AI 生图额度、数字会员这类商品的进件类目和书面费率尚未确认,直接按公开页估算只能得到平台公开价,不能视为你这个商品的最终签约价。 + +**下一步** + +- 选择微信支付 Native 作为桌面浏览器二维码产品。 +- 申请企业商户号的 Native 权限。 +- 接入 Native 支付链路,仅当上一项结果支持时。 +``` + +独立评分:**FAIL**;语义动作 `3`;问题 `0`。失败原因:AI 类目尚未核验时直接选择/申请/接入微信 Native,缺少先取官方主体+类目+费率+结算书面结果的依赖阻断。评分者建议改走 XorPay 套餐,但这会把“仅作线索”抬为主路线,不能采用;应保持规范场景的官方主路线,并把第一步改为取得微信支付对企业主体、AI 图片月度会员类目、费率和结算的书面结果,再条件申请、再条件接入。 + +#### Wave 4 独立评分原文 + +| 场景 | 结果 | 语义动作 | 问题 | 失败原因 / 有效根因 | +|---|---|---:|---:|---| +| R7 `019f657e-03a2...` | **PASS** | 3 | 0 | 无。 | +| R8 `019f657e-1988...` | **FAIL** | 4 | 0 | 第三步把“配置收款链路”和“配置回调加额度”合成两个动作,总动作 4。 | +| R9 `019f657e-2dc1...` | **FAIL** | 4 | 0 | 第一步把“取得书面结果”和“小报童仅作线索/不作为主支付”合成两个动作,总动作 4。 | +| R10 `019f657e-41f9...` | **FAIL** | 3 | 0 | AI 类目尚未核验时直接选择/申请/接入微信 Native,缺少先取官方主体+类目+费率+结算书面结果的依赖阻断。 | + +Wave 4 独立通过数:**1/4**。本轮后续修复只针对评分暴露的三类行为失败:动作条目里用“和/以及”等连接词塞入第二个操作、把“仅作线索/不作为主支付”结论塞进行动条目、以及类目未确认前先写官方产品的选择/申请/接入。 + +## Wave 5 原始回答与独立评分 + +- 运行版本:`735f539321a59a0907f2c0f91b6725890b182c00`。 +- 独立评分 agent:`019f6598-11c4-73c2-a852-eef1c4e2061b`。 +- 本节原样保留四份 fresh-agent 回答;评分中的动作数按独立 scorer 结论记录。 + +#### R7:`019f6594-36a5-7011-b0d4-4c4752551a65` + +```markdown +**现状** +你是中国大陆自然人,面向国内买家销售 29 元数字内容,采用网站单次付款后自动发链接;支付宝正常运营,属于官方直连,推荐等级为条件推荐。 + +**依据** +- 成本卡:平台服务费:无此项;本档案按官方直连支付机构记录。AI 订阅或按量产品若另有商业报价,应以报价单或合同记录,不把营销页示例写成统一平台费。 / 支付通道费:未公开统一数字(以报价单为准) / 固定或开通费:固定费用:未公开统一数字(以报价单为准) / 月费:未公开统一数字(以报价单为准) / 提现费:未公开统一数字(以后台显示为准) / 退款费:AI 网页应用收款未发现单独退款操作费公开数字;退款时已扣交易手续费不退回(官方 AI 网页应用收款接入指南,2026-07-15 核验;仅限 AI 网页应用收款口径,不外推到支付宝其它产品) / 拒付费:未公开统一数字(以合同为准) / 结算周期:AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的公开页没有统一结算周期和最低结算额;具体周期、最低额、提现规则和发票能力以签约页、后台显示或业务人员报价单为准。 / 最低额-留存-权限回收:AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的公开页没有统一结算周期和最低结算额;具体周期、最低额、提现规则和发票能力以签约页、后台显示或业务人员报价单为准。 / 最后核验日期:2026-07-15 / 来源边界:本档案只覆盖面向国内支付宝用户的人民币收款;尚未形成实践结论:2026-07-15 未取得两条相互独立、可靠、可复核的真实接入记录;不使用 AI 产品营销页、示例 UI 或旧电脑网站文档替代实践经验。 +- 条件卡:主体:AI 订阅 SaaS 文档明确支持的账号类型为支付宝企业账号;AI 网页应用收款营销页写有“个人收款场景”和“个人开发者”,但这不能单独证明自然人卖家可完成正式签约、收款和结算;传统电脑网站支付旧文档写企业或个体工商户并要求营业执照与支付宝账户主体一致,但该页更新时间为 2017-05-16,不能作为 2026-07-15 新 AI 产品主体资格的唯一依据。 / 类目:AI、数字内容、课程、虚拟商品、游戏、音视频等应按支付宝签约类目和资质审核结果处理;传统电脑网站旧文档要求网站 ICP 备案、页面可访问、经营内容和商品信息完整,并提示个体工商户部分行业受限。 / 结算账户:签约支付宝商家账户或合同约定结算账户 / 结算周期:AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的公开页没有统一结算周期和最低结算额;具体周期、最低额、提现规则和发票能力以签约页、后台显示或业务人员报价单为准。 / 支付模式:单次支付:支持。AI 网页应用收款接入指南使用 alipay.trade.page.pay 发起电脑网站页面支付,并要求以异步通知或查询接口结果为准。订阅与自动续费:支持。AI 订阅 SaaS 官方文档列出个人与团体订阅、周期扣款、席位增减、低代码收银台、订阅升降级、续费失败策略和按量自动续购;准入条件目前明确指向支付宝企业账号和联系销售提交信息。 + +**风险** +自然人身份和数字内容类目不能直接完成正式签约,费率、月费与结算仍未确认,因此“最便宜”的价格排名尚未成立。 + +**下一步** +- 取得支付宝 AI 网页应用收款对拟登记个体工商户主体、目标类目、费率和结算的书面结果。 +- 仅当上一项结果支持时,登记个体工商户。 +- 仅当上一项结果支持时,申请对应的官方单次支付产品。 +``` + +独立评分:`14/14` **PASS**;动作 `3`。 + +#### R8:`019f6594-4d60-7b62-aa5e-7144bf9f1f41` + +```markdown +**现状** +你是中国大陆个体工商户,面向国内用户销售 19 元/100 点的 AI 生图额度包,采用单次扫码或网页支付,付款后需要 API 回调自动加额度。虎皮椒当前状态为限定开放,XorPay 为正常运营;两者推荐等级均为“仅作线索”。 + +**依据** +- **成本卡**:虎皮椒:平台服务费:1%-2%,虎皮椒平台交易费需要提前充值到虎皮椒账户后按交易扣除。/ 支付通道费:平台官网声称微信或支付宝官方费率 0.6%;FAQ 另写 0.38%-0.6%。这只是虎皮椒页面口径,不作为微信或支付宝官方统一费率事实。/ 固定或开通费:当前公开价显示微信开户 118 元、支付宝开户 88 元;同页总述写开户费 118 元,最终以申请页展示金额处理。/ 月费:档案未列明 / 提现费:无此项 / 退款费:无此项 / 拒付费:无此项 / 结算周期:微信公开说明为 D+1/T+1 到银行卡,支付宝通常即时到支付宝账户 / 最低额-留存-权限回收:虎皮椒预充值余额退款需无交易和投诉并在期限内联系客服,最低结算额按通道或后台规则处理。/ 最后核验日期:2026-07-15 / 来源边界:实践证据不足:2026-07-15 仅发现零散 V2EX 讨论和旧接入文章,未达到两条相互独立、当前、可复核的真实接入记录门槛。XorPay:平台服务费:按套餐为体验版 1.2%、基础版 1%、标准版 0.8%、高级版 0.6%,交易成功后从 XorPay 账号预充值余额中扣除。/ 支付通道费:XorPay 页面声称微信/支付宝通道固定 0.38%,从每笔收款中扣除;该数字来自 XorPay 页面,不作为微信或支付宝官方统一费率事实。/ 固定或开通费:开通费 100 元 / 月费:套餐月费 0 元、10 元、30 元或 60 元。/ 提现费:无此项 / 退款费:无此项 / 拒付费:无此项 / 结算周期:微信 T+1;支付宝即时到账 / 最低额-留存-权限回收:最低结算额档案未列明;交易成功后从 XorPay 账号预充值余额中扣除;FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元。/ 最后核验日期:2026-07-15 / 来源边界:实践证据不足:2026-07-15 仅发现少量 V2EX 和旧文章讨论,未达到两条相互独立、当前、可复核的真实接入记录门槛。 +- **条件卡**:虎皮椒:主体:中国大陆个人和企业按虎皮椒公开流程申请;协议要求境内合法公民或依法设立的公司,且需按微信支付、支付宝要求提交经营资料。/ 类目:正规网站上的低风险实物、普通服务或明确合规的数字服务;协议和公告限制欺诈、洗钱、赌博、色情、盗版音视频、侵权内容、虚拟发卡、虚拟账号、游戏充值、金融保险房地产等;虚拟账号销售已被公告清退;尚未确认中国大陆个人或企业销售 AI 图像额度、数字会员和虚拟权益包时的正式类目、费率和风控结论。/ 结算账户:微信款项由微信支付链路 D+1/T+1 到卖家银行卡,支付宝通常到卖家支付宝账户,若违规或风控可能调整结算。/ 结算周期:微信公开说明为 D+1/T+1 到银行卡,支付宝通常即时到支付宝账户;虎皮椒预充值余额退款需无交易和投诉并在期限内联系客服,最低结算额按通道或后台规则处理。/ 支付模式:支付宝扫码/H5、微信 PC 二维码、微信截图扫码;微信 App 唤醒跳转和小程序支付按 2025-11-06 公告临时关闭。单次支付支持;订阅与自动续费不作为公开默认能力,需要商户自行实现订单周期并每次发起支付,不应写成自动扣款。/ API 或回调:API 返回二维码或跳转链接,需由商户处理回调、查单、签名和订单状态;提供 PHP、Java、ASP.NET、Python 等 SDK、CMS 插件、发起付款接口、查询接口、退款接口和回调。XorPay:主体:XorPay FAQ 声称支持个人、个体户、企业和其他组织;具体通道、产品和类目资格仍以微信、支付宝或持牌机构进件结果为准。/ 类目:正规网站或工具类产品的单次收款、小额验证、开发者产品;违法违规业务、金融类、信用融资理财担保信托货币兑换等协议限制业务,以及微信/支付宝或持牌机构拒绝的类目;尚未确认 XorPay 当前公开合同主体全称、备案主体,以及 AI 生图额度、数字会员、虚拟权益包在各支付产品下的通道进件类目和书面费率。/ 结算账户:微信 T+1 到个人同名银行卡,支付宝即时到签约支付宝账户,或经持牌机构清算到同名银行卡。/ 结算周期:微信 T+1;支付宝即时到账;FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元。/ 支付模式:当面付、Native、JSAPI、收银台、条码支付、小程序、WAP/H5 等,需按具体产品分别核验。单次支付支持;订阅与自动续费未作为公开默认产品列明,可由商户自行周期下单,不应写成官方免密自动扣款。/ API 或回调:提供开发文档、Demo、API 调试器、签名算法、支付接口、查询、回调和退款接口。 + +**风险** +两家都缺少 AI 生图额度类目、费率与结算的书面确认,现有证据不足以确认任一方可承担主支付。 + +**下一步** +- 虎皮椒与 XorPay 都不作为主支付。 +- 取得支付宝 AI 支付或商家平台对个体户主体、AI 生图额度类目、费率、结算账户和周期的书面结果。 +- 仅当上一项结果支持时,配置支付宝 AI 网页应用收款链路。 +``` + +独立评分:`14/14` **PASS**;真动作 `2` + 结论 `1`。 + +#### R9:`019f6594-61b3-7aa0-baf3-906566cdcf34` + +```markdown +**现状** +你是中国大陆自然人,面向国内读者销售每月 49 元的 AI 提示词会员和下载资料,支付模式是独立站付款后自动开通权限。小报童当前正常运营,属于代售付费专栏的内容平台,推荐等级为仅作线索。 + +**依据** +- **成本卡**:平台服务费:15%;官方提现页和创作者合作协议均写明订单支付时扣除订单金额的 15%,合伙人分销收入不收平台服务费。 / 支付通道费:未公开统一数字(以后台显示为准) / 固定或开通费:未公开统一数字(以后台显示为准) / 月费:档案未列统一口径 / 提现费:个人提现由云账户等第三方服务机构按提现金额收取约 6% 服务费,用于结算、税务处理与报送,不包含实际税金;企业提现需提供 6% 增值税专用发票。 / 退款费:成功退费订单不收取平台服务费,退款以报童币退回平台账户且不退回原支付方式。 / 拒付费:未公开统一数字(以合同为准) / 结算周期:专栏订阅资金 48 小时无退款后可解冻提现;提现操作一般每周四 16:00-19:00 / 最低额-留存-权限回收:最低提现额公开帮助页未列统一数字,以钱包后台显示为准;专栏订阅订单支付后,经过 48 小时且无退款行为后解冻提现;档案未列独立站权限回收口径 / 最后核验日期:2026-07-15 / 来源边界:官方资料;实践证据不足,尚未确认小报童当前支付通道费、最低提现额、是否存在公开订单 API 或 Webhook、完整订单和读者数据导出字段、独立站嵌入结账能力以及买断制订单退款细则。 +- **条件卡**:主体:中国大陆个人创作者和企业创作者;平台要求首次创建专栏或提现前按要求提交真实身份和资质材料。个人创作者需有效手机号、联系地址和必要法定资质;企业创作者需营业执照、授权委托书、邮箱、手机号、联系地址和必要法定资质。 / 类目:付费专栏、订阅制内容、买断制知识产品、Newsletter 式投递和个人知识内容发行;任意 SaaS/AI 用量收费不适用。 / 结算账户:创作者个人云账户收款账户或企业对公账户 / 结算周期:专栏订阅订单支付后,经过 48 小时且无退款行为后解冻提现;创作者申请提现后,小报童一般在每周四 16:00-19:00 委托云账户操作,节假日顺延;企业账户需提供 6% 增值税专用发票后打款。 / 支付模式:支持订阅制专栏和续订提醒;公开读者指南描述到期前和过期后的续订提醒,不把它写成自动扣款。 / API 或回调:官方帮助中心未发现公开 API、SDK 或 Webhook 文档;小报童更像托管专栏后台和微信投递服务,不应作为任意网站支付接口。 + +**风险** +当前阻塞是小报童未发现公开 API、SDK 或 Webhook 文档;它不能替代独立站支付 API,付款后自动开通权限缺少可靠的实时订单回调。 + +**下一步** +- 取得支付宝 AI 网页应用收款对拟登记个体工商户主体、目标类目、费率和结算的书面结果。 +- 仅当上一项结果支持时,登记个体工商户。 +- 仅当上一项结果支持时,申请对应的官方单次支付产品。 +``` + +独立评分:`14/14` **PASS**;动作 `3`。 + +#### R10:`019f6594-76e8-7090-a9db-c3cf66cf6bcc` + +```markdown +**现状** +中国大陆企业主体,收款账户在大陆,面向国内用户销售 99 元 AI 图片生成月度会员,采用单次购买且不自动续费;XorPay 当前正常运营,推荐等级为仅作线索。 + +**依据** +- 成本卡:平台服务费:按套餐为体验版 1.2%、基础版 1%、标准版 0.8%、高级版 0.6%,交易成功后从 XorPay 账号预充值余额中扣除。99 元订单按公开百分比直接测算,叠加 0.38% 支付通道费后的每单变动费为:体验版 1.5642 元、基础版 1.3662 元、标准版 1.1682 元、高级版 0.9702 元。 / 支付通道费:XorPay 页面声称微信/支付宝通道固定 0.38%,从每笔收款中扣除;该数字来自 XorPay 页面,不作为微信或支付宝官方统一费率事实。 / 固定或开通费:固定费用:开通费 100 元;套餐月费 0 元、10 元、30 元或 60 元。 / 月费:套餐月费 0 元、10 元、30 元或 60 元。 / 提现费:无此项 / 退款费:无此项 / 拒付费:无此项 / 结算周期:微信 T+1;支付宝即时到账 / 最低额-留存-权限回收:FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元。 / 最后核验日期:2026-07-15 / 来源边界:实践证据不足;仅按官网可确认;该数字来自 XorPay 页面,不作为微信或支付宝官方统一费率事实。 +- 条件卡:主体:XorPay FAQ 声称支持个人、个体户、企业和其他组织;具体通道、产品和类目资格仍以微信、支付宝或持牌机构进件结果为准。 / 类目:正规网站或工具类产品的单次收款、小额验证、开发者产品;AI 生图额度或数字会员应先做类目和风控核验。 / 结算账户:微信 T+1 到个人同名银行卡,支付宝即时到签约支付宝账户,或经持牌机构清算到同名银行卡。 / 结算周期:微信 T+1;支付宝即时到账 / 支付模式:单次支付:支持;文档提供当面付、Native、JSAPI、小程序、订单状态查询、回调、退款等接口。订阅与自动续费:未作为公开默认产品列明;可由商户自行周期下单,不应写成官方免密自动扣款。续订提醒:档案未列明。 + +**风险** +XorPay 尚未书面确认当前合同主体、AI 生图月度会员类目、通道费率和结算账户,因此上述 99 元订单测算不能视为最终签约账单。 + +**下一步** +- 不把 XorPay 作为主支付。 +- 取得微信支付对企业主体、AI 生图月度会员类目、费率、结算的书面结果。 +- 仅当上一项结果支持时,选择微信支付 Native 作为桌面浏览器二维码产品。 +``` + +独立评分:`14/14` **PASS**;真动作 `2` + 结论 `1`。 + +Wave 5 独立通过数:**4/4**。 + +## Task 6 独立审查否决 + +- 审查基线:`3142ca0df7d12e17be71c3955dccf4da819f39a8`。 +- Wave 5 的四份原始回答、runner IDs、scorer ID 与 `4/4 PASS` 行为评分均按历史原样保留;该评分不等同于 Task 6 最终审查通过。 +- Task 6 独立审查结论:**未通过**。规范场景与共享合规规则仍有以下缺口: + 1. `中国大陆个体户 AI 生图额度包` 的配置收款链路与真实订单步骤缺少 `仅当上一项结果支持时`,书面准入失败后仍可能继续执行。 + 2. `中国大陆企业 SaaS 单次支付` 从选择微信支付 Native 开始,缺少企业主体、目标 AI/数字类目、费率和结算的官方书面结果门槛。 + 3. 静态测试没有锁定上述两个场景的严格三步依赖序列,无法阻止只写到“选择产品”的不完整路径。 + 4. `payment-compliance.md` 的原子行动连接词禁用列表未与 `SKILL.md` 同步,缺少 `和`。 +- 本次修复以场景级静态契约锁定书面结果 -> 条件申请/配置 -> 条件接入/真实订单的依赖顺序,并同步共享合规连接词规则;最终结论仍以新的独立审查为准。 + +## Wave 6 原始回答与独立评分 + +- 运行版本:`aa88ee200cfa418314c752182436058a6ac6d3e7`。 +- 独立评分 agent:`019f65af-5954-7583-9f2f-0f4f24dfbbe2`。 +- 本节原样保留四份 fresh-agent 回答;评分中的动作数按独立 scorer 结论记录。 + +#### R7:`019f65ac-5d72-7e21-8864-13a9919eeb52` + +```markdown +**现状** +中国大陆自然人,面向国内买家销售 29 元原创 Notion 模板和 PDF 下载包,单次付款后自动交付;支付宝 AI 网页应用收款当前状态为正常运营,推荐等级为条件推荐。 + +**依据** +- 成本卡:平台服务费:无此项;本档案按官方直连支付机构记录。AI 订阅或按量产品若另有商业报价,应以报价单或合同记录,不把营销页示例写成统一平台费。 / 支付通道费:未公开统一数字(以报价单为准) / 固定或开通费:固定费用:未公开统一数字(以报价单为准) / 月费:未公开统一数字(以报价单为准) / 提现费:未公开统一数字(以后台显示为准) / 退款费:AI 网页应用收款未发现单独退款操作费公开数字;退款时已扣交易手续费不退回(官方 AI 网页应用收款接入指南,2026-07-15 核验;仅限 AI 网页应用收款口径,不外推到支付宝其它产品) / 拒付费:未公开统一数字(以合同为准) / 结算周期:AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的公开页没有统一结算周期和最低结算额;具体周期、最低额、提现规则和发票能力以签约页、后台显示或业务人员报价单为准。 / 最低额-留存-权限回收:AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的公开页没有统一结算周期和最低结算额;具体周期、最低额、提现规则和发票能力以签约页、后台显示或业务人员报价单为准。 / 最后核验日期:2026-07-15 / 来源边界:尚未形成实践结论:2026-07-15 未取得两条相互独立、可靠、可复核的真实接入记录;不使用 AI 产品营销页、示例 UI 或旧电脑网站文档替代实践经验。 +- 条件卡:主体:AI 订阅 SaaS 文档明确支持的账号类型为支付宝企业账号;AI 网页应用收款营销页写有“个人收款场景”和“个人开发者”,但这不能单独证明自然人卖家可完成正式签约、收款和结算;传统电脑网站支付旧文档写企业或个体工商户并要求营业执照与支付宝账户主体一致,但该页更新时间为 2017-05-16,不能作为 2026-07-15 新 AI 产品主体资格的唯一依据。 / 类目:适合商品:AI SaaS 会员、AI 创作工具订阅、视频/图片生成积分与订阅混合计费、API/Skill/MCP 按调用计费、数字内容、课程、普通电商和本地生活网页订单。限制商品:AI、数字内容、课程、虚拟商品、游戏、音视频等应按支付宝签约类目和资质审核结果处理;传统电脑网站旧文档要求网站 ICP 备案、页面可访问、经营内容和商品信息完整,并提示个体工商户部分行业受限。 / 结算账户:AI 产品页面只公开“交易、退款和结算体验”等能力,未给出统一公开结算周期;传统电脑网站旧文档写交易款项到商户支付宝账户。正式建议应以签约页、后台或合同显示的结算账户和周期为准。 / 结算周期:AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的公开页没有统一结算周期和最低结算额;具体周期、最低额、提现规则和发票能力以签约页、后台显示或业务人员报价单为准。 / 支付模式:单次支付:支持。AI 网页应用收款接入指南使用 alipay.trade.page.pay 发起电脑网站页面支付,并要求以异步通知或查询接口结果为准。订阅与自动续费:支持。AI 订阅 SaaS 官方文档列出个人与团体订阅、周期扣款、席位增减、低代码收银台、订阅升降级、续费失败策略和按量自动续购;准入条件目前明确指向支付宝企业账号和联系销售提交信息。 + +**风险** +当前阻塞是自然人主体、数字内容类目、费率和结算均无书面确认;直接后果是价格排名尚未成立,且不能直接完成正式签约。 + +**下一步** +- 取得支付宝 AI 网页应用收款对拟登记个体工商户主体、原创 Notion 模板和 PDF 下载包类目、费率和结算的书面结果。 +- 仅当上一项结果支持时,登记个体工商户。 +- 仅当上一项结果支持时,申请对应的官方单次支付产品。 +``` + +独立评分:`14/14` **PASS**;动作 `3`。 + +#### R8:`019f65ac-72c2-7c21-b5f1-435a42099c9b` + +```markdown +**现状** + +你是中国大陆个体工商户,结算账户在大陆;面向国内用户销售 19 元/100 点的 AI 生图额度包,采用独立站单次扫码或网页支付,依赖 API 回调加额度。虎皮椒当前为“限定开放”,XorPay 为“正常运营”,两者推荐等级均为“仅作线索”。 + +**依据** + +- **成本卡**:虎皮椒|平台服务费:1%-2%,虎皮椒平台交易费需要提前充值到虎皮椒账户后按交易扣除。/ 支付通道费:平台官网声称微信或支付宝官方费率 0.6%;FAQ 另写 0.38%-0.6%。这只是虎皮椒页面口径,不作为微信或支付宝官方统一费率事实。/ 固定或开通费:当前公开价显示微信开户 118 元、支付宝开户 88 元;同页总述写开户费 118 元,最终以申请页展示金额处理。/ 月费:无此项 / 提现费:无此项 / 退款费:无此项 / 拒付费:无此项 / 结算周期:微信公开说明为 D+1/T+1 到银行卡,支付宝通常即时到支付宝账户 / 最低额-留存-权限回收:虎皮椒预充值余额退款需无交易和投诉并在期限内联系客服,最低结算额按通道或后台规则处理。/ 最后核验日期:2026-07-15 / 来源边界:实践证据不足:2026-07-15 仅发现零散 V2EX 讨论和旧接入文章,未达到两条相互独立、当前、可复核的真实接入记录门槛。XorPay|平台服务费:按套餐为体验版 1.2%、基础版 1%、标准版 0.8%、高级版 0.6%,交易成功后从 XorPay 账号预充值余额中扣除。/ 支付通道费:XorPay 页面声称微信/支付宝通道固定 0.38%,从每笔收款中扣除;该数字来自 XorPay 页面,不作为微信或支付宝官方统一费率事实。/ 固定或开通费:开通费 100 元 / 月费:套餐月费 0 元、10 元、30 元或 60 元。/ 提现费:无此项 / 退款费:无此项 / 拒付费:无此项 / 结算周期:微信 T+1;支付宝即时到账 / 最低额-留存-权限回收:FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元。/ 最后核验日期:2026-07-15 / 来源边界:实践证据不足:2026-07-15 仅发现少量 V2EX 和旧文章讨论,未达到两条相互独立、当前、可复核的真实接入记录门槛。 +- **条件卡**:虎皮椒|主体:中国大陆个人和企业按虎皮椒公开流程申请;协议要求境内合法公民或依法设立的公司,且需按微信支付、支付宝要求提交经营资料。/ 类目:尚未确认虎皮椒在 2026-07-15 后是否已恢复微信唤醒跳转支付和小程序支付,以及中国大陆个人或企业销售 AI 图像额度、数字会员和虚拟权益包时的正式类目、费率和风控结论。/ 结算账户:微信款项由微信支付链路到卖家银行卡,支付宝通常到卖家支付宝账户 / 结算周期:微信公开说明为 D+1/T+1 到银行卡,支付宝通常即时到支付宝账户;虎皮椒预充值余额退款需无交易和投诉并在期限内联系客服,最低结算额按通道或后台规则处理。/ 支付模式:支付宝扫码/H5、微信 PC 二维码、微信截图扫码;微信 App 唤醒跳转和小程序支付按 2025-11-06 公告临时关闭。单次支付:支持;API 返回二维码或跳转链接,需由商户处理回调、查单、签名和订单状态。订阅与自动续费:不作为公开默认能力;需要商户自行实现订单周期并每次发起支付,不应写成自动扣款。/ API 或回调:提供 PHP、Java、ASP.NET、Python 等 SDK、CMS 插件、发起付款接口、查询接口、退款接口和回调。XorPay|主体:XorPay FAQ 声称支持个人、个体户、企业和其他组织;具体通道、产品和类目资格仍以微信、支付宝或持牌机构进件结果为准。/ 类目:尚未确认 XorPay 当前公开合同主体全称、备案主体,以及 AI 生图额度、数字会员、虚拟权益包在各支付产品下的通道进件类目和书面费率。/ 结算账户:微信 T+1 到个人同名银行卡,支付宝即时到签约支付宝账户,或经持牌机构清算到同名银行卡 / 结算周期:微信 T+1;支付宝即时到账;FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元。/ 支付模式:当面付、Native、JSAPI、收银台、条码支付、小程序、WAP/H5 等,需按具体产品分别核验。单次支付:支持;文档提供当面付、Native、JSAPI、小程序、订单状态查询、回调、退款等接口。订阅与自动续费:未作为公开默认产品列明;可由商户自行周期下单,不应写成官方免密自动扣款。/ API 或回调:提供开发文档、Demo、API 调试器、签名算法、支付接口、查询、回调和退款接口。 + +**风险** + +两者均缺少 AI 生图额度类目的正式进件、书面费率和结算证据,直接后果是主通道资格与总成本无法确认。 + +**下一步** + +- 不把虎皮椒或 XorPay 作为主支付。 +- 取得支付宝 AI 支付或商家平台对个体工商户主体、AI 生图额度包类目、费率和结算的书面结果。 +- 仅当上一项结果支持时,配置支付宝 AI 网页应用收款链路。 +``` + +独立评分:`14/14` **PASS**;真动作 `2` + 结论 `1`。 + +#### R9:`019f65ac-86d4-7ee0-af05-fbc59c5debd2` + +```markdown +**现状** + +中国大陆个人创作者面向国内读者销售每月 49 元的 AI 提示词会员和下载资料,支付后需由独立网站自动开通权限;小报童正常运营,属于内容平台 / 代售付费专栏,不是独立网站通用支付 API,推荐等级为“仅作线索”。 + +**依据** + +- 成本卡:平台服务费:15%;官方提现页和创作者合作协议均写明订单支付时扣除订单金额的 15%,合伙人分销收入不收平台服务费。/ 支付通道费:未公开统一数字(以后台显示为准)/ 固定或开通费:固定费用:未公开统一数字(以后台显示为准)/ 月费:档案无此项口径 / 提现费:个人提现由云账户等第三方服务机构按提现金额收取约 6% 服务费,用于结算、税务处理与报送,不包含实际税金;企业提现需提供 6% 增值税专用发票。/ 退款费:成功退费订单不收取平台服务费,退款以报童币退回平台账户且不退回原支付方式。/ 拒付费:未公开统一数字(以合同为准)/ 结算周期:专栏订阅资金 48 小时无退款后可解冻提现;提现操作一般每周四 16:00-19:00;最低提现额公开帮助页未列统一数字,以钱包后台显示为准。/ 最低额-留存-权限回收:最低提现额公开帮助页未列统一数字,以钱包后台显示为准;留存额档案无此项口径;独立站权限回收档案无此项口径。/ 最后核验日期:2026-07-15 / 来源边界:官方来源为小报童首页、帮助中心、功能指南、创作者 FAQ、提现及服务费、云账户签约、读者使用指南、创作者合作协议、用户协议和合伙人计划;实践证据不足。 +- 条件卡:主体:个人创作者需有效手机号、联系地址和必要法定资质;企业创作者需营业执照、授权委托书、邮箱、手机号、联系地址和必要法定资质。/ 类目:付费专栏、订阅制内容、买断制知识产品、Newsletter 式投递和个人知识内容发行;平台不欢迎利益噱头与内容价值不匹配、剽窃、散播谣言、分发盗版、挑战法律法规边界的内容;免费专栏当前不提供。/ 结算账户:创作者个人云账户收款账户或企业对公账户 / 结算周期:专栏订阅资金 48 小时无退款后可解冻提现;提现操作一般每周四 16:00-19:00;最低提现额公开帮助页未列统一数字,以钱包后台显示为准。/ 支付模式:小报童专栏页面、微信服务号、桌面浏览器和报童币订阅或购买;平台提供订阅制和买断制专栏。支持订阅制专栏和续订提醒;公开读者指南描述到期前和过期后的续订提醒,不把它写成自动扣款;自动续费和免密扣款档案无支持口径。/ API 或回调:官方帮助中心未发现公开 API、SDK 或 Webhook 文档;小报童更像托管专栏后台和微信投递服务,不应作为任意网站支付接口。 + +**风险** + +当前阻塞是小报童没有可核验的公开订单 API、Webhook 或独立站嵌入结账能力,因此无法据此实现付款后由你的网站自动开通会员或下载权限。 + +**下一步** + +- 取得支付宝 AI 网页应用收款对拟登记个体工商户主体、目标类目、费率和结算的书面结果。 +- 仅当上一项结果支持时,登记个体工商户。 +- 仅当上一项结果支持时,申请对应的官方单次支付产品。 +``` + +独立评分:`14/14` **PASS**;动作 `3`。 + +#### R10:`019f65ac-9ce3-7543-8ca8-293cd21193af` + +```markdown +**现状** +你是中国大陆企业,结算账户在大陆,向国内用户销售 99 元 AI 图片生成月度会员,采用单次支付且不自动续费;XorPay 当前正常运营,推荐等级为“仅作线索”。 + +**依据** +- 成本卡:平台服务费:按套餐为体验版 1.2%、基础版 1%、标准版 0.8%、高级版 0.6%,交易成功后从 XorPay 账号预充值余额中扣除;99 元单笔分别为 1.188 元、0.99 元、0.792 元、0.594 元。支付通道费:XorPay 页面声称微信/支付宝通道固定 0.38%,从每笔收款中扣除;该数字来自 XorPay 页面,不作为微信或支付宝官方统一费率事实;99 元单笔为 0.3762 元。固定或开通费:开通费 100 元。月费:套餐月费 0 元、10 元、30 元或 60 元。提现费:无此项。退款费:无此项。拒付费:无此项。结算周期:微信 T+1;支付宝即时到账。最低额-留存-权限回收:FAQ 提到 30 天无交易可能被通道回收权限,重新开通需重新收费 100 元。最后核验日期:2026-07-15。来源边界:官方来源为 https://xorpay.com/、https://xorpay.com/doc/、https://xorpay.com/doc/faq.html、https://xorpay.com/htdocs/agree.html;实践证据不足:2026-07-15 仅发现少量 V2EX 和旧文章讨论,未达到两条相互独立、当前、可复核的真实接入记录门槛。 +- 条件卡:主体:XorPay FAQ 声称支持个人、个体户、企业和其他组织;具体通道、产品和类目资格仍以微信、支付宝或持牌机构进件结果为准。类目:正规网站或工具类产品的单次收款、小额验证、开发者产品;AI 生图额度或数字会员应先做类目和风控核验。结算账户:微信 T+1 到个人同名银行卡,支付宝即时到签约支付宝账户,或经持牌机构清算到同名银行卡。结算周期:微信 T+1;支付宝即时到账。支付模式:单次支付支持;订阅与自动续费未作为公开默认产品列明,可由商户自行周期下单,不应写成官方免密自动扣款。 + +**风险** +XorPay 尚未书面确认 AI 生图数字会员对应的支付产品、进件类目、通道费率和结算账户,99 元订单的最终实扣成本与可进件性因此尚未确定。 + +**下一步** +- XorPay 不作为主支付。 +- 取得微信支付对企业主体、目标 AI/数字类目、费率和结算的官方书面结果。 +- 仅当上一项结果支持时,申请企业商户号的 Native 权限。 +``` + +独立评分:`14/14` **PASS**;真动作 `2` + 结论 `1`。 + +Wave 6 独立通过数:**4/4**。 + +## Task 7 简洁支付回答复测 + +- 运行工作树:`b681e13` 后的等价工作树;后续只收紧资金路径未知联动和自然人备选条件,不改变下列答案结构。 +- R7 runner:`019f6637-192a-73b2-897d-7566cdc6ea6e`。 +- R10 runner:`019f6640-8a88-7403-b743-51d63821ce58`。 +- 独立 scorer:`019f664a-8866-7a21-ba8c-e4d938267f4f`。 + +### R7 最终回答 + +```markdown +**结论** + +当前最可行的是把支付宝“AI 网页应用收款”作为官方核验入口;因费率、固定费、提现与结算规则未公开,暂不能判定它“最便宜”。 + +- 官方页面明确该产品支持个人收款,覆盖电脑与手机网页;核验日期:2026-07-15。 +- Notion 模板和 PDF 的类目准入仍以后台结果为准。 +- 支付成功可通过通知与查单确认;自动发送下载链接由你的网站完成。 + +**下一步** + +1. 向一站式接入提交现有账号、商品类目和网站资料。 +2. 仅当后台支持且费用、结算可接受时完成签约。 +3. 仅当后台明确不支持自然人且允许个体工商户时登记个体工商户。 +``` + +独立评分:**PASS**;Critical `0`,Important `0`,动作 `3`。 + +### R10 最终回答 + +```markdown +**费用结论** + +截至 2026-07-15,XorPay 公示费用为: + +- 平台费:体验版 1.2% + 0 元/月;基础版 1% + 10 元/月;标准版 0.8% + 30 元/月;高级版 0.6% + 60 元/月。99 元订单按所选档费率计算,平台费从预充值余额扣除。 +- 通道费:XorPay 自述微信、支付宝均为 0.38%/笔,从收款扣除;这不是微信或支付宝官方统一费率。 +- 开通费:100 元,任一渠道开通成功后不退。微信 T+1,支付宝即时到账。提现费、最低结算额未公开,其他费用未公开。 + +AI 图片 30 天会员能否进件尚无公开确认,因此 XorPay 目前只能作为核验线索。 + +**下一步** + +- 向 XorPay 索取企业主体销售 AI 图片 30 天会员的类目、通道费率、结算规则书面确认。 +``` + +独立评分:**PASS**;Critical `0`,Important `0`,动作 `1`。 + +## Task 8 清楚优先复测 + +- R8 runner:`019f666e-c711-75c0-a070-666224cd5031`。 +- R9 runner:`019f666e-dd43-74e1-898c-a392cff7a0d8`。 +- 独立 scorer:`019f6670-99fb-7c01-8b6c-776797608731`。 + +### R8 最终回答 + +```markdown +**结论** + +虎皮椒和 XorPay 都不应作为主支付;当前先走支付宝 AI 网页应用收款这一官方核验入口,但书面通过前也不算已成立。[支付宝网页应用](https://open.alipay.com/module/webApp) + +- **当前可注册性**:虎皮椒正式注册临时关闭、V3 已满员;XorPay 入口仍在,但不能证明后台进件一定成功。[虎皮椒](https://admin.xunhupay.com/sign-up.html)|[XorPay](https://xorpay.com/) +- **主体或类目**:两者均仅自述支持个体户,均无 AI 生图额度包已获通道准入的证据。 +- **主要费用**:虎皮椒开户费 88/118 元、平台费 1%-2%;XorPay 开通费 100 元、月费 0-60 元、平台费 0.6%-1.2%。两者声称的通道费都不是支付机构统一官方费率,价格排名尚未成立。 +- **资金或结算路径**:虎皮椒资料同时出现官方清算与通知监听信号,实际路径不清;XorPay 自述不经手资金,微信 T+1 至同名银行卡、支付宝即时到账。[XorPay FAQ](https://xorpay.com/doc/faq.html) + +**下一步** + +1. 取得支付宝对个体户主体、AI 生图额度包类目、费率及结算的书面结果。 +2. 仅当结果支持时,配置支付宝 AI 网页应用收款链路。 +3. 完成一笔 19 元真实订单,以付款后自动增加 100 点为验收标准。 +``` + +独立评分:**PASS**;Critical `0`,Important `0`,动作 `3`。 + +### R9 最终回答 + +```markdown +**结论** + +不能。你要求付款后自动开通独立站权限,小报童不能替代网站支付 API;它只适合把内容、会员和订单全部托管在小报童。当前独立站主路线是[支付宝 AI 网页应用收款](https://aipay.alipay.com/)的官方核验入口。 + +- **接口**:截至 2026-07-15,小报童未公开 API、SDK 或 Webhook,无法据订单实时自动授权。 +- **费用**:订单收取 15% 平台服务费;个人提现另收约 6% 第三方服务费且不含实际税金,不能简单称为 21% 订单费。[官方说明](https://help.xiaobot.net/withdraw.html) +- **边界**:支持个人创作者及订阅制、买断制知识内容,但续订不是自动扣款,类目以审核结果为准。 +- **结算退款**:订单通常冻结 48 小时;退订款退为报童币,不原路退回。[创作者协议](https://help.xiaobot.net/creator-legal.html) + +**下一步** + +1. 从支付宝 AI 网页应用收款入口提交账号、商品类目和网站资料。 +2. 后台支持且费用、结算可接受时完成签约。 +3. 后台明确不支持自然人且允许个体工商户时登记个体工商户。 +``` + +独立评分:**PASS**;Critical `0`,Important `0`,动作 `3`。 + +## Task 8 整分支审查纠正 + +- 上一节 R8 的 PASS 记录因漏写核验日期、真实订单未显式依赖配置完成而失效;保留原文用于审计,不作为最终通过证据。 +- R8 runner:`019f6677-bded-7470-88e7-96d2514313fc`。 +- 独立 scorer:`019f6679-428b-7ab1-8a31-b66f13d613e0`。 + +```markdown +结论:虎皮椒和 XorPay 都不作为主支付;当前先走支付宝 AI 网页应用收款这个官方核验入口。 + +**截至 2026-07-15** +- 当前可注册性:[虎皮椒](https://admin.xunhupay.com/sign-up.html)正式平台已满员、注册通道暂关;[XorPay](https://xorpay.com/)仍有注册入口。 +- 主体或类目:两家均自述支持个体户及 API 回调,但 AI 生图额度包的通道准入均无书面结果。 +- 主要费用:虎皮椒开户 88/118 元、平台费 1%-2%;XorPay 开户 100 元、月费 0-60 元、平台费 0.6%-1.2%。两家声称的通道费不是支付机构官方统一费率,价格排名尚未成立。 +- 资金或结算:两家均自述不经手资金;虎皮椒称微信 D+1/T+1 到银行卡、支付宝到支付宝账户;[XorPay](https://xorpay.com/doc/faq.html)称微信 T+1 到同名银行卡、支付宝即时到账。 + +**下一步** +1. 取得支付宝对个体户、AI 生图额度包类目、费率和结算的书面结果。 +2. 仅当上一项支持时,配置[支付宝网页应用收款](https://open.alipay.com/module/webApp)。 +3. 仅当上一项配置完成时,完成一笔小额真实订单。 +``` + +独立评分:**PASS**;Critical `0`,Important `0`,动作 `3`。 diff --git a/tests/fxskill/rubric.md b/tests/fxskill/rubric.md index b2b83d2..818efea 100644 --- a/tests/fxskill/rubric.md +++ b/tests/fxskill/rubric.md @@ -10,11 +10,11 @@ | 来源 | 需要外部支持的关键主张无来源、来源过时或伪造经验 | 有来源但仍混淆事实与经验,或个别外部主张、经验缺少支持或标注 | 回答没有需要外部支持的主张;或适用的易变、当前及外部主张已核验,经验有标注,官方内容用白话解释 | | 边界 | 声称执行或保证结果 | 边界模糊 | 只做建议且不保证结果 | -直接专题正向输出的全局语义硬门槛:给出正向建议时,回答必须有一个纯描述诊断区和一个唯一行动区,标题可按专题自然命名;只做单一澄清问题的回复不适用本门槛。诊断区只写已成立事实、当前限制、资格未确认状态,或当前最大问题及影响;不得描述未来路线、方案、替代路径,也不得出现命令、建议、禁令或以动作名词暗示建议。只有行动区可出现命令、建议或禁令,且最多包含 3 个独立原子行动;备选如出现,必须作为行动区中的独立原子行动并占一个名额。行动按语义而非编号计数,并按所有层级累计;每一个登记、核验、选择或申请均是独立动作,向每个不同平台提交也分别计数,微信与支付宝不得合成一个动作。同一项包含多个主要动作时必须拆开;超过 3 个时按依赖顺序只保留前三个,不得总结或合并后续动作。发送前必须做语义行动自检:删除或改写行动区之外的未来操作,拆开复合动作,重新逐项计数并截断超额动作。诊断区出现未来行动或暗示建议、行动超过 3 个、行动不独立成项、一项包含多个动作或不同平台被合并,均即 RED,不再计算总分。S3 使用“最大问题”作为诊断区、“核心修改”作为行动区符合标题契约,不得仅因标题不是“现状”或“下一步”判 RED。 +直接专题正向输出的全局语义硬门槛:给出正向建议时,回答必须有一个纯描述诊断区和一个唯一行动区,标题可按专题自然命名;只做单一澄清问题的回复不适用本门槛。支付答案配方优先于全局语义输出契约:支付首句可以描述主路线或不选某个平台,这种描述性结论不计入行动;真正命令用户执行的操作只放在最后步骤区。其他专题的诊断区只写已成立事实、当前限制、资格未确认状态,或当前最大问题及影响;不得描述未来路线、方案、替代路径,也不得出现命令、建议、禁令或以动作名词暗示建议。只有行动区可出现命令、建议或禁令,且最多包含 3 个独立原子行动;备选如出现,必须作为行动区中的独立原子行动并占一个名额。行动按语义而非编号计数,并按所有层级累计;每一个登记、核验、选择或申请均是独立动作,向每个不同平台提交也分别计数,微信与支付宝不得合成一个动作。同一项包含多个主要动作时必须拆开;超过 3 个时按依赖顺序只保留前三个,不得总结或合并后续动作。发送前必须做语义行动自检:删除或改写行动区之外的未来操作,拆开复合动作,重新逐项计数并截断超额动作。诊断区出现未来行动或暗示建议、行动超过 3 个、行动不独立成项、一项包含多个动作或不同平台被合并,均即 RED,不再计算总分。S3 使用“最大问题”作为诊断区、“核心修改”作为行动区符合标题契约,不得仅因标题不是“现状”或“下一步”判 RED。 直接专题正向输出的实用性是独立硬门槛:必须解释为什么当前事项优先,并至少说明一项会改变用户决定的适用条件、不适用条件、主要成本、限制或坑,实用性评分必须为 2。只收集一个决定性缺口、尚未给出路线或方案的澄清回复不适用本门槛。条件限定可引用前一行动的结果,例如“仅当上一项核验结果支持此路线时”,这种限定本身不算新增动作;但不得在条件短语中藏入新的确认、选择、申请或其他操作。违反即 RED,不再按总分放行。 -支付直达专题固定标题和事实区范围是独立硬门槛:S2 必须依次使用“现状”“依据”“风险”“下一步”标题,其中前三个纯描述区块共同承担全局诊断区语义,不因专题固定拆分触发全局门槛。“现状”只写已经成立的主体事实、当前限制或资格尚未确认事实,不得描述未来路线、方案、替代路径,也不得以登记、核验、选择、申请、提交、办理、采用等动作名词暗示建议。“依据”只写支持现状的当前事实,“风险”只写当前事实可能产生的后果;这两个区块同样不得出现未来操作、路线、方案、替代路径或动作名词建议。只有“下一步”可出现命令、建议或禁令,且仍受全局语义输出契约的三项独立原子行动上限、备选占位、语义计数、复合动作拆分和发送前自检约束。标题缺失、顺序错误、事实区出现未来行动或暗示建议,均即 RED,不再计算总分。 +支付直达专题清晰度是独立硬门槛:默认先用一句话给出明确结论,再给 2-4 条会改变选择的信息,最后给最多三个按依赖顺序排列的原子步骤;不强制固定标题。支付答案配方优先于全局语义输出契约;结论可描述主路线或不选某个平台,描述性结论不计入行动,真正命令用户执行的操作只放在最后步骤区。关键信息优先写费用、主体或类目条件、结算或最大未知,不默认填满成本卡、条件卡或逐项念出所有未知。只有用户明确要求完整费用拆解或严谨对比时才展开;百科式清单、结论埋在末尾、只有“需要核验”而没有当前路线,均即 RED,不再计算总分。 支付依赖顺序是独立硬门槛:后续登记或申请依赖前一项主体/类目核验结果时,必须用不含新增操作的条件限定明确阻断失败分支,例如“仅当上一项核验结果支持此路线时”。不得把“核验、登记、申请”写成无条件连续路线,也不得用“确认可承担后登记”把确认和登记合成一项。违反即 RED,不再计算总分。 @@ -22,6 +22,8 @@ S2 支付来源范围是独立硬门槛:官方产品页只能证明该产品 支付平台比较是独立硬门槛:只有回答明确本次候选范围,并对范围内每个候选使用同一个已核验维度,才能给出“最容易”“最好”“最便宜”“最省事”“首选”等赢家或排序结论。分别引用不同平台的不同维度、只核验赢家、候选范围含糊、证据不足或擅自补充用户未提供的主体、地区、产品、风险信息,均不得产生赢家;此时只能说明下一步需要核验什么。违反即 RED,不再计算总分。 +支付路线与费用可信度是独立硬门槛:支付回答不得只说需要核验、咨询客服或等待平台确认而没有给出路线;当现有证据不足以推荐用户点名的平台时,必须给出可防守主路线,或明确这些平台不作为主路线的结论。平台清单或平台比较没有推荐或明确不作为主路线的结论即 RED。费用回答不得把一个标题百分比当作总成本;默认写清会改变决定的已知费用层和主体、类目、结算边界,其余未公开费用可以合并一句说明。用户明确要求完整费用拆解或严谨对比时,再按同一组决策维度展开,且不得用缺项拼出总价。涉及当前费用、产品状态或推荐等级时,必须注明来源核验日期。违反任一项即 RED,不再计算总分。 + 宽泛支付产品类别是独立硬门槛:输入只有“在线咨询”“顾问服务”等宽泛类目,且未说明实际服务内容与受监管风险时,关键产品维度视为未知。整个回答只能有一个询问该未知维度的开放式问题和最多一句纯描述原因,最多一个问号;不得出现候选、费率、资格或赢家,也不得用“若是普通”“非监管”或同义条件自行补足。违反即 RED,不再计算总分。 支付“先确认什么”是独立硬门槛:用户已说明中国大陆个人、国内买家和付费内容,并问“应该先确认什么”时,可以把承担经营主体责任的意愿作为唯一开放问题;整个回答只包含该问题和最多一句纯描述原因,最多一个问号,不出现平台、来源、年报等政策事实或核验日期。违反即 RED。 diff --git a/tests/fxskill/scenarios.md b/tests/fxskill/scenarios.md index 0bd70f7..13fe860 100644 --- a/tests/fxskill/scenarios.md +++ b/tests/fxskill/scenarios.md @@ -10,15 +10,15 @@ 用户:我人在中国大陆,个人,没有营业执照,想在网站卖数字资料,主要收国内用户的钱,支付怎么接? -验证:进入支付与主体诊断;默认正文不超过 450 个中文字符且 URL 不计,不使用二级清单;直接专题第一区必须题为“现状”,且只写已经成立的主体事实、当前限制或资格尚未确认事实,不得描述未来路线、方案、替代路径、候选范围,也不得以登记、核验、选择、申请、提交、办理、采用等动作名词暗示建议;“依据”只写支持现状的当前事实,“风险”只写当前事实可能产生的后果;只有题为“下一步”的区块可出现命令、建议或禁令,最多三个独立原子行动,编号数量不作为计数依据;每一个登记、核验、选择或申请均是独立动作,向每个不同平台提交也分别计数,不得把微信与支付宝合成一个动作;复合动作必须拆开,超过三个时按依赖顺序只保留前三个,不得总结或合并后续动作;发送前必须执行语义行动自检,删除或改写“下一步”之外的未来操作,拆开复合动作并截断超额动作;备选如出现,必须作为“下一步”中的独立行动并占一个名额;违反任一项即 RED,不再按总分放行;未问技术接入时不写各终端支付产品、验签、回调或限时链接;三条之后不追加材料、版权、资质、退款或其他操作要求,常见阻碍只描述风险;区分事实、实操建议和需要实时核验的事实;官方入口或流程页不能被用来暗示主体资格,平台支持数字商品、某支付方式或买家覆盖的页面不能代替无执照自然人卖家资格证据;官方产品页只能支持该产品范围内的主张,不得扩大为其他产品或全部网站商业支付的资格结论;微信普通商户主体类型主张必须使用 `4012071573`,不得用 Native、JSAPI、H5 等产品接入页替代;若引用具体产品页,主张必须明确写出该具体产品;未问技术接入时优先使用 `4012071573`,不主动引入终端支付产品;用户口语类目与官方类目之间没有直接映射证据时,必须写“归类尚未确认”,不得当作确定事实;资格主张须由直接支持它的当前官方页面紧邻作证,否则只描述资格仍未确认;没有直接来源时不得列出支付宝等候选,也不得写“个人收款码不能替代接口”等结论;只写主体或类目未确认、直接官方事实及其条件性后果。风险主张只能写直接来源支持的范围,或把资格、类目等未确认状态的直接后果写成条件性描述,不得无来源填入封号、冻结、资金损失或追责等库存式风险。 +验证:进入支付与主体诊断;默认先用一句话给出明确结论,再写 2-4 条真正影响选择的信息,优先说明费用、主体/类目条件、结算或最大未知,最后最多三个按依赖顺序排列的原子步骤。不强制“现状/依据/风险/下一步”标题,不默认输出完整成本卡或逐项念出所有未知。未问技术接入时不展开验签、回调或限时链接。官方产品页只能支持对应具体产品,不能扩大为其他支付宝或微信网站支付产品;用户口语类目没有直接映射时写“归类尚未确认”。需要实时核验的资格、费用和结算明确来源边界,不用无来源的封号、冻结或追责话术填充回答。 新增硬门槛:直达专题始终先读支付参考,不被阶段或目标市场缺失改路由;后续登记或申请依赖前一项核验结果时,必须使用不含新增操作的条件限定明确阻断失败分支,不得把核验、登记、申请写成无条件连续路线;正向建议必须解释当前优先级,并至少说明一项会改变决定的适用条件、不适用条件、主要成本、限制或坑,实用性必须为 2。 来源范围补充:本场景没有明确询问小微商户进件产品,不得引用 `4012165168`;只有用户明确询问该产品时,才可写出“微信支付小微商户进件产品”以及“该服务商进件渠道”的完整限定。 -上下文补充:卖家主体/地区、买家市场和产品均已提供,且用户问“支付怎么接”,不得再把是否愿意登记主体作为缺口;必须使用固定支付结构给条件化路线。路线含登记个体工商户时,只在登记行动的描述中用白话说明“不是拿到执照就结束,之后每年还要报年报”,并在同一行动使用当前年度报告办法直接支持;年报事实和来源出现在“现状”“依据”或“风险”即 RED。税务和注销只描述随实际经营情况变化,不增加操作。 +上下文补充:卖家主体/地区、买家市场和产品均已提供,不得重复追问。支付宝 AI 网页应用收款当前官方页面明确支持个人收款场景/个人开发者,但结论只限这个产品;直接从一站式接入提交当前账号、商品类目和网站资料,以后台申请结果判断能否签约,不在申请前等待模糊书面预审。路线含登记个体工商户时,用一句白话说明“不是拿到执照就结束,之后每年还要报年报”;税务和注销只描述随实际经营情况变化,不增加操作。 -实操与动作补充:没有直接来源时不得比较个体工商户与公司的维护轻重,也不得把类目资格与所在地维护责任合成一次核验;三步只保留一次主体/类目资格核验、条件成立后的登记、条件成立后的单个平台申请。 +实操与动作补充:没有直接来源时不得比较个体工商户与公司的维护轻重,也不得把类目资格与所在地维护责任合成一次核验;三步只保留从一站式接入提交资料、后台支持且费用/结算可接受时完成签约、后台明确当前主体不支持且允许个体工商户时登记个体工商户。 ## S3 设计专题直达 @@ -99,3 +99,27 @@ 输入:`$fxskill 网站做好后应该放在哪里?` 验证:只用一句白话说明网站需要放在服务器或不需要自己维护服务器的网站发布平台上,再输出一个决定服务器路线的网站功能问题;不得使用“你说的‘托管’”或暗示用户提过“托管”。网站功能尚未提供时,这两句是全部回答。用户回答前不得给出平台路线、行动、ICP、其他政策事实、来源或日期,也不得使用“现状”“下一步”模板。违反任一项即 RED。 + +## R7 大陆自然人最低可用收款路线 + +输入:`$fxskill 支付:我是中国大陆自然人,没有营业执照,收款账户在大陆;网站卖 29 元一套的原创 Notion 模板和 PDF 下载包,只面向国内买家,单次付款后自动发下载链接。现在最便宜但还能用的网站收款路线是什么?` + +验证:必须进入支付索引和大陆场景决策并直接下结论。直接从支付宝 AI 网页应用收款一站式接入提交当前账号、商品类目和网站资料,以后台申请结果判断能否签约;后台明确当前主体不支持且允许个体工商户时才登记个体工商户。不得扩大成所有支付宝网站支付都支持个人,也不得声称费率或结算已知。R7 的固定费用未知时不得称为低固定成本候选;R7 必须注明费用与资格的核验日期。费用只写已公开且影响决定的部分,其余未知合并一句;价格证据不足时不得判定“最便宜”。最后最多 3 个原子步骤。 + +## R8 个体户比较虎皮椒与 XorPay + +输入:`$fxskill 支付:我有中国大陆个体工商户执照,收款账户在大陆;做一个 AI 生图网站,卖 19 元/100 点的生图额度包,只收国内用户,独立站里单次扫码或网页支付,付款后要 API 回调自动加额度。虎皮椒和 XorPay 哪个更适合作为主支付?` + +验证:只按两边相同且会改变决定的维度比较,优先写当前可注册性、主体/AI 类目、主要费用和资金/结算路径。虎皮椒公开材料同时出现官方清算/不挂机与 App 通知监听两种模式信号,不能把路径写成统一已确认事实。两者均为“仅作线索”时明确不作为主支付,并回到可防守路线;不得只说“咨询客服”,也不得用一个标题费率拼出总价。R8 和 R9 的结论可描述路线或平台定位,这种描述不计为命令动作。最后最多 3 个原子步骤。 + +## R9 小报童不是网站支付 API + +输入:`$fxskill 支付:我是中国大陆个人创作者,独立网站卖每月 49 元的 AI 提示词会员和下载资料,国内读者付款后我想在自己网站自动开通权限。小报童能不能替代网站支付 API?` + +验证:一句话明确小报童是托管付费专栏/代售平台,不是独立网站通用支付 API;若要网站内自动开通权限,不把它作为主支付。补充 2-4 条影响决定的信息,至少包含主要费用口径、适用主体/内容边界和结算或退款限制;不得把不同模式费率简单相加。R8 和 R9 的结论可描述路线或平台定位,这种描述不计为命令动作。最后最多 3 个原子步骤。 + +## R10 当前平台费用组成 + +输入:`$fxskill 支付:我有中国大陆企业主体,收款账户在大陆;独立站卖 99 元的 AI 图片生成月度会员,只收国内用户单次购买,不做自动续费。现在 XorPay 的费用怎么算?请按当前平台费告诉我。` + +验证:先直接说明当前能确认的 XorPay 主要费用口径,再用 2-4 条信息讲清适用主体/AI 类目、结算和最大的费用未知。必须明确 0.38% 是 XorPay 页面口径,不是微信或支付宝官方统一费率;R10 必须给出结算边界:微信支付 T+1、支付宝支付即时,最低结算额和提现费仍未公开统一口径。未公开费用合并一句,不逐项念未知标签,也不得拼成总价。最后最多 3 个原子步骤。 diff --git a/tests/fxskill/test_payment_kb.py b/tests/fxskill/test_payment_kb.py new file mode 100644 index 0000000..9d1d1e5 --- /dev/null +++ b/tests/fxskill/test_payment_kb.py @@ -0,0 +1,1743 @@ +from pathlib import Path +import importlib.util +import re +import tempfile +import unittest +from urllib.parse import urlparse + + +ROOT = Path(__file__).resolve().parents[2] +SPEC = importlib.util.spec_from_file_location( + "validate_payment_kb", ROOT / "scripts" / "validate_payment_kb.py" +) +module = importlib.util.module_from_spec(SPEC) +SPEC.loader.exec_module(module) + + +PRECISE_UNPUBLISHED_PAGE = "未公开统一数字(以签约页为准)" +PRECISE_UNPUBLISHED_CONTRACT = "未公开统一数字(以合同为准)" +PRECISE_UNPUBLISHED_BACKEND = "未公开统一数字(以后台显示为准)" +PRECISE_UNPUBLISHED_QUOTE = "未公开统一数字(以报价单为准)" + +VALID_BACKLOG = "\n".join( + [ + "", + "- 缺失事实:尚未确认个体工商户是否可销售 AI 图像额度包。", + "- 已查来源:2026-07-15 已检查官网申请页、费率页和开发文档 https://example.com/help-center。", + "- 需要询问:商务团队是否支持个体工商户销售 AI 图像额度包?", + "- 可接受证据:官方页面、文档、合同、后台截图、申请结果、报价单、书面回复、邮件或盖章协议中明确写出适用主体、类目和结算路径。", + ] +) +INSUFFICIENT_PRACTICE_EVIDENCE = ( + "实践证据不足:2026-07-15 未找到两条相互独立、当前、可复核的真实接入记录。" +) +BACKLOG_WITH_UNIFIED_UNPUBLISHED_RATE = "\n".join( + [ + "", + "- 缺失事实:尚未确认该平台面向中国大陆企业的统一平台服务费。", + "- 已查来源:2026-07-15 已检查官网费率页 https://example.com/pricing ,该页面未公开统一费率。", + "- 需要询问:商务团队是否可以提供面向中国大陆企业商户的平台服务费报价?", + "- 可接受证据:官方页面、报价单、合同或书面回复中明确写出适用主体和费率。", + ] +) +BACKLOG_WITH_UNCONFIRMED_FACT = "\n".join( + [ + "", + "- 缺失事实:无法确认个体工商户是否可销售 AI 图像额度包。", + "- 已查来源:2026-07-15 已检查官网申请页和开发文档 https://example.com/help-center。", + "- 需要询问:商务团队是否支持个体工商户销售 AI 图像额度包?", + "- 可接受证据:官方书面回复明确写出适用主体、类目和结算路径。", + ] +) +FEE_BREAKDOWN = "\n".join( + [ + "固定费用:0", + "提现费:无此项", + "退款费:无此项", + f"拒付费:{PRECISE_UNPUBLISHED_PAGE}", + ] +) + +BASE_PROFILE = { + "当前状态": "正常运营", + "平台类型": "服务商", + "支付角色": "技术服务方", + "资金路径": "买家 -> 收款方 -> 清算方 -> 卖家对公银行账户", + "卖家地区": "中国大陆", + "支持主体": "企业", + "买家地区与币种": "中国大陆买家,人民币", + "支付方式": "微信支付、支付宝", + "适合商品": "数字服务", + "平台服务费": "1%", + "支付通道费": "0.6%", + "结算": "结算到中国大陆企业对公银行账户。", + "固定费用、提现费、退款费和拒付费": FEE_BREAKDOWN, + "结算周期与最低结算额": "T+1,最低结算额 100 元。", + "推荐等级": "直接推荐", + "适用条件": "中国大陆企业,销售数字服务。", + "不适用条件": "自然人直接收款。", + "最后核验日期": "2026-07-15", + "官方来源": "https://example.com/official", + "实践来源": "https://example.com/practice-one\nhttps://example.com/practice-two", + "待核验问题": "无", +} + +OPTIONAL_LABELS = ( + "运营主体", + "限制商品", + "单次支付", + "订阅与自动续费", + "API、SDK、插件和支付链接", + "申请材料", + "接入路径", + "退款和售后", + "数据导出与迁移", + "实际优点", + "实际问题", +) +DOMESTIC_SCENARIOS = ( + "中国大陆自然人验证首批订单", + "中国大陆个体户 AI 生图额度包", + "中国大陆个体户 30 天会员", + "中国大陆企业 SaaS 单次支付", + "数字资料或课程快速销售", + "平台型网站代收与分账", +) +DOMESTIC_SCENARIO_FIELDS = ( + "主路线", + "当前成本", + "成立条件", + "执行路径", + "最容易卡住", + "备选", + "引用档案", +) +DOMESTIC_SCENARIO_COST_LABELS = ( + "平台服务费", + "通道费", + "固定费", + "提现费", + "退款费", + "拒付费", + "结算周期", +) +DOMESTIC_SCENARIO_MINIMUM_OR_RETAINED_LABELS = ( + "最低结算额", + "留存额", + "最低转出额", + "可提现余额", +) +DOMESTIC_SCENARIO_CONDITION_LABELS = ( + "主体", + "类目", + "结算", +) +DOMESTIC_SCENARIO_PAYMENT_MODEL_LABELS = ( + "支付模式", + "支付模型", +) +TASK_6_SCENARIO_MARKERS = ( + "R7 大陆自然人最低可用收款路线", + "R8 个体户比较虎皮椒与 XorPay", + "R9 小报童不是网站支付 API", + "R10 当前平台费用组成", +) + + +class PaymentKnowledgeBaseTests(unittest.TestCase): + def render_profile(self, name: str = "测试平台", **overrides: str) -> str: + fields = dict(BASE_PROFILE) + fields.update(overrides) + lines = [f"## {name}", ""] + for label, value in fields.items(): + value_lines = value.splitlines() or [""] + lines.append(f"- {label}:{value_lines[0]}") + for extra_line in value_lines[1:]: + lines.append(f" {extra_line}") + lines.append("") + return "\n".join(lines) + + def write_profile_file(self, root: Path, content: str, filename: str = "payment-platform-test.md") -> Path: + path = root / "skills" / "fxskill" / "references" / filename + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content, "utf-8") + return path + + def remove_label(self, profile_text: str, label: str) -> str: + prefix = f"- {label}:" + return "\n".join( + line for line in profile_text.splitlines() if not line.startswith(prefix) + ) + + def parse_domestic_scenario_sections(self): + text = (ROOT / "skills/fxskill/references/payment-scenarios.md").read_text("utf-8") + sections = {} + matches = list(re.finditer(r"^## (.+)$", text, re.MULTILINE)) + for index, match in enumerate(matches): + start = match.end() + end = matches[index + 1].start() if index + 1 < len(matches) else len(text) + sections[match.group(1).strip()] = text[start:end] + return sections + + def parse_domestic_scenario_actions(self, heading): + section = self.parse_domestic_scenario_sections()[heading] + action_match = re.search( + r"^- 执行路径:\s*\n(?P(?: \d+\.[^\n]*(?:\n|$))+)", + section, + re.MULTILINE, + ) + self.assertIsNotNone(action_match, f"{heading} must keep one to three listed actions") + actions = [ + re.sub(r"^ \d+\.\s*", "", line).strip() + for line in action_match.group("actions").splitlines() + ] + self.assertGreaterEqual(len(actions), 1, f"{heading} must keep at least one listed action") + self.assertLessEqual(len(actions), 3, f"{heading} must keep at most three listed actions") + return actions + + def test_domestic_scenario_action_parser_rejects_fourth_action(self): + original_parser = self.parse_domestic_scenario_sections + try: + self.parse_domestic_scenario_sections = lambda: { + "四条行动场景": "\n".join( + [ + "", + "- 执行路径:", + " 1. 第一条行动。", + " 2. 第二条行动。", + " 3. 第三条行动。", + " 4. 第四条行动。", + "- 最容易卡住:第四条行动不应被解析器漏掉。", + ] + ) + } + + with self.assertRaises(AssertionError): + self.parse_domestic_scenario_actions("四条行动场景") + finally: + self.parse_domestic_scenario_sections = original_parser + + def test_domestic_scenario_action_parser_accepts_one_to_three_actions(self): + original_parser = self.parse_domestic_scenario_sections + try: + for count in (1, 2, 3): + with self.subTest(count=count): + lines = ["", "- 执行路径:"] + lines.extend(f" {index}. 第 {index} 条行动。" for index in range(1, count + 1)) + self.parse_domestic_scenario_sections = lambda lines=lines: { + "合法行动场景": "\n".join(lines) + } + self.assertEqual(count, len(self.parse_domestic_scenario_actions("合法行动场景"))) + finally: + self.parse_domestic_scenario_sections = original_parser + + def test_task_6_behavior_prompts_are_present_and_specific(self): + text = (ROOT / "tests/fxskill/scenarios.md").read_text("utf-8") + + for marker in TASK_6_SCENARIO_MARKERS: + self.assertIn(marker, text) + + expected_fragments = ( + "中国大陆自然人", + "没有营业执照", + "只面向国内买家", + "原创 Notion 模板和 PDF 下载包", + "中国大陆个体工商户", + "AI 生图网站", + "虎皮椒和 XorPay 哪个更适合", + "小报童能不能替代网站支付 API", + "XorPay 的费用怎么算", + ) + for fragment in expected_fragments: + self.assertIn(fragment, text) + + def test_task_6_rubric_hard_gates_are_present(self): + text = (ROOT / "tests/fxskill/rubric.md").read_text("utf-8") + + required_phrases = ( + "只说需要核验", + "没有给出路线", + "平台清单或平台比较", + "没有推荐或明确不作为主路线的结论", + "费用回答不得把一个标题百分比当作总成本", + "会改变决定的已知费用层", + "其余未公开费用可以合并一句说明", + "用户明确要求完整费用拆解或严谨对比时", + ) + for phrase in required_phrases: + self.assertIn(phrase, text) + + def test_skill_topic_table_splits_payment_from_general_compliance(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + table_lines = [line.strip() for line in text.splitlines() if line.startswith("|")] + + payment_rows = [line for line in table_lines if "payment-index.md" in line] + self.assertEqual(1, len(payment_rows), "payment topic must route to payment-index.md") + self.assertIn("支付", payment_rows[0]) + for compliance_term in ("备案", "隐私", "Cookie", "版权", "无障碍"): + self.assertNotIn(compliance_term, payment_rows[0]) + + compliance_rows = [line for line in table_lines if "payment-compliance.md" in line] + self.assertEqual(1, len(compliance_rows), "general compliance topic must route to payment-compliance.md") + for compliance_term in ("备案", "隐私", "Cookie", "条款", "版权", "无障碍"): + self.assertIn(compliance_term, compliance_rows[0]) + self.assertNotIn("国内外支付", compliance_rows[0]) + + def test_skill_payment_runtime_uses_index_then_one_scenario_and_one_profile(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + required_phrases = ( + "支付问题先读 `references/payment-index.md`", + "只读一个相关场景", + "只读一个相关类别或平台档案", + "不得一次倾倒全部支付档案", + "缺失的海外档案不存在时", + ) + for phrase in required_phrases: + self.assertIn(phrase, text) + + def test_skill_payment_answer_contract_is_clear_by_default(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + required_phrases = ( + "资料库深、回答浅", + "先给一句明确结论", + "再给 2-4 条真正影响选择的信息", + "优先费用、主体或类目条件、结算或最大未知", + "最后给最多三个按顺序的原子步骤", + "不强制固定标题", + "不默认输出完整成本卡或条件卡", + ) + for phrase in required_phrases: + self.assertIn(phrase, text) + + obsolete_phrases = ( + "一律使用固定标题", + "`依据` 恰好两个项目符号", + "每个候选都填写全部标签", + "从规范档案对应字段原样摘取", + ) + for phrase in obsolete_phrases: + self.assertNotIn(phrase, text) + + def test_skill_payment_contract_preserves_decision_boundaries(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + required_phrases = ( + "不得把 `仅作线索` 平台写成稳定主支付、最便宜或最好", + "价格证据不足时不得判定最便宜", + "未公开的费用合并为一句说明", + "不能为了完整把所有未知标签念一遍", + "保留来源边界", + ) + for phrase in required_phrases: + self.assertIn(phrase, text) + + def test_skill_payment_recipe_selects_subject_and_model_scenario_first(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + required_phrases = ( + "先按卖家主体 + 支付模式匹配场景标题", + "主体与支付模式场景优先于产品形式场景", + "自然人首单问题固定使用 `中国大陆自然人验证首批订单`", + "内容托管场景至多进入一个有条件备选槽", + ) + for phrase in required_phrases: + self.assertIn(phrase, text) + + def test_skill_payment_recipe_only_expands_on_explicit_request(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + required_phrases = ( + "只有用户明确要求完整费用拆解或严谨对比时才展开", + "不得用缺项拼总价", + "同类候选按相同且会改变决定的维度比较", + ) + for phrase in required_phrases: + self.assertIn(phrase, text) + + def test_skill_payment_recipe_keeps_actions_atomic(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + required_phrases = ( + "每一步只放一个主要动作", + "按依赖顺序排列", + "总步骤不超过三条", + "结论不要塞进行动项", + ) + for phrase in required_phrases: + self.assertIn(phrase, text) + + def test_payment_recipe_overrides_global_semantic_contract(self): + skill = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + rubric = (ROOT / "tests/fxskill/rubric.md").read_text("utf-8") + + for text in (skill, rubric): + self.assertIn("支付答案配方优先于全局语义输出契约", text) + self.assertIn("主路线或不选某个平台", text) + self.assertIn("描述性结论不计入行动", text) + self.assertIn("真正命令用户执行的操作只放在最后步骤区", text) + + def test_skill_payment_recipe_refuses_unproven_price_rankings(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + required_phrases = ( + "成本未知或比较维度不一致时", + "明确说明价格排名尚未成立", + "固定费用或关键费用未公开时,不得使用“低固定成本”“最省固定成本”", + "固定费用未知时,只能称为“当前可行的官方核验入口”,不得称“低成本候选”", + "当前费率、资格或状态必须简短标明核验日期", + ) + for phrase in required_phrases: + self.assertIn(phrase, text) + + def test_skill_explicit_fee_answers_keep_source_settlement_and_unknown_boundaries(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + for phrase in ( + "平台页面声称的通道费不得写成支付机构官方统一费率", + "平台费与平台自述通道费分开写", + "结算周期或到账口径", + "已公开的结算口径不得省略", + "最低结算额或提现费是否公开", + "未知项最多点名两项,其余统一写“其他费用未公开”", + "平台费率已按套餐列出时,不再逐档换算单笔金额", + "用户点名某一套餐时才换算该档", + "不得计算套餐销量分界或总成本", + ): + self.assertIn(phrase, text) + + def test_skill_natural_person_route_keeps_subject_branch_ahead_of_integration(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + for phrase in ( + "提交资料 → 支持且费用、结算可接受时签约 → 后台明确不支持且允许个体工商户时登记个体工商户", + "支付回调、验签等技术接入留到下一轮", + ): + self.assertIn(phrase, text) + + def test_skill_payment_recipe_keeps_lead_only_comparisons_on_official_route(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + required_phrases = ( + "被比较候选全部是 `仅作线索` 时,明确它们不作为主支付", + "不得再挑其中一个作备选或排序", + "回到规范场景的可防守路线", + "回到规范场景时称为官方核验入口,不得称为已成立主支付", + "四条关键信息依次为:当前可注册性、主体或类目、主要费用、资金或结算路径", + "比较答案必须按四条短信息输出,四项都出现,不合并省略", + "候选都不作为主支付;当前先走规范场景的官方核验入口", + "比较事实只描述当前证据,不写需要用户核验或确认的操作", + "真实订单验证只保留一个验收动作,不展开回调、查单、验签或幂等子动作", + "平台比较必须用“截至 YYYY-MM-DD”标明核验日期", + "真实订单验证写明“仅当上一项配置完成时”", + ) + for phrase in required_phrases: + self.assertIn(phrase, text) + + def test_skill_creator_platform_answer_keeps_api_and_business_boundaries(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + self.assertIn("托管内容平台能否替代网站支付 API", text) + self.assertIn("API 能力、主要费用、主体与内容边界、结算或退款限制", text) + + def test_skill_distinguishes_stable_main_payment_from_verification_entry(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + self.assertIn("不得把 `仅作线索` 平台写成稳定主支付", text) + self.assertIn("可以作为第一个官方核验入口", text) + self.assertIn("正式使用仍以后台或签约结果为条件", text) + + def test_skill_payment_recipe_stays_within_requested_length(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + section = text.split("### 支付答案配方", 1)[1].split("SEO/GEO 共用", 1)[0] + nonblank_lines = [line for line in section.splitlines() if line.strip()] + + self.assertGreaterEqual(len(nonblank_lines), 15) + self.assertLessEqual(len(nonblank_lines), 25) + + def test_payment_rubric_rewards_clear_answers_instead_of_full_cards(self): + text = (ROOT / "tests/fxskill/rubric.md").read_text("utf-8") + + self.assertIn("支付直达专题清晰度是独立硬门槛", text) + self.assertIn("不强制固定标题", text) + self.assertIn("其余未公开费用可以合并一句说明", text) + self.assertNotIn("支付直达专题固定标题", text) + self.assertNotIn("支付路线与费用完整性", text) + + def test_natural_person_scenario_enforces_official_evidence_dependencies(self): + section = self.parse_domestic_scenario_sections()["中国大陆自然人验证首批订单"] + actions = self.parse_domestic_scenario_actions("中国大陆自然人验证首批订单") + + self.assertIn("一站式接入", actions[0]) + for term in ("当前账号", "商品类目", "网站资料"): + self.assertIn(term, actions[0]) + self.assertIn("仅当后台结果显示可开通", actions[1]) + self.assertIn("费用和结算可接受", actions[1]) + self.assertIn("完成签约", actions[1]) + self.assertIn("仅当后台明确当前主体不支持且允许个体工商户时", actions[2]) + self.assertIn("登记个体工商户", actions[2]) + self.assertIn("个人收款场景", section) + self.assertIn("后台申请结果", section) + self.assertNotIn("最便宜", section) + self.assertNotIn("申请前先取得", section) + self.assertNotIn("面包多", "\n".join(actions)) + + alternative_match = re.search(r"^- 备选[::](.+)$", section, re.MULTILINE) + self.assertIsNotNone(alternative_match) + self.assertIn("明确允许个体工商户", alternative_match.group(1)) + self.assertIn("不替代官方主路线", alternative_match.group(1)) + + def test_alipay_ai_web_profile_keeps_personal_product_boundary(self): + text = (ROOT / "skills/fxskill/references/payment-platform-cn-direct.md").read_text("utf-8") + profiles = {name: labels for name, labels, _ in module.parse_profiles(text)} + alipay = profiles["支付宝"] + + self.assertIn("AI 网页应用收款明确支持个人收款场景和个人开发者", alipay["支持主体"]) + self.assertIn("不能扩大为所有支付宝网站支付", alipay["支持主体"]) + self.assertIn("一站式接入", alipay["接入路径"]) + self.assertIn("提交当前账号、商品类目和网站资料", alipay["接入路径"]) + self.assertIn("AI 订阅 SaaS 联系销售", alipay["接入路径"]) + self.assertIn("AI 按量付费", alipay["接入路径"]) + self.assertIn("402", alipay["接入路径"]) + for phrase in ("中国大陆商家", "网页一次性支付", "订阅", "席位", "API/Skill/MCP 按量计费"): + self.assertIn(phrase, alipay["适用条件"]) + self.assertIn("自然人使用 AI 网页应用收款", alipay["适用条件"]) + self.assertIn("后台申请结果", alipay["适用条件"]) + self.assertIn("后台申请结果", alipay["待核验问题"]) + self.assertIn("费率", alipay["待核验问题"]) + self.assertIn("结算", alipay["待核验问题"]) + + def test_hupijiao_profile_marks_conflicting_mode_signals(self): + text = (ROOT / "skills/fxskill/references/payment-platform-cn-services.md").read_text("utf-8") + profiles = {name: labels for name, labels, _ in module.parse_profiles(text)} + hupijiao = profiles["虎皮椒"] + + for field in ("支付角色", "资金路径"): + self.assertIn("两种模式信号", hupijiao[field]) + self.assertIn("不能写成统一已确认路径", hupijiao[field]) + self.assertIn("实际账户采用哪一模式", hupijiao["待核验问题"]) + self.assertIn("合同和结算路径", hupijiao["待核验问题"]) + + def test_ai_credit_scenario_gates_configuration_and_real_order(self): + actions = self.parse_domestic_scenario_actions("中国大陆个体户 AI 生图额度包") + + self.assertEqual( + [ + "取得支付宝 AI 支付或商家平台对个体工商户主体、AI 生图额度包类目、费率和结算的书面结果。", + "仅当上一项结果支持时,配置支付宝 AI 网页应用收款链路。", + "仅当上一项结果支持时,完成一笔小额真实订单。", + ], + actions, + ) + + def test_enterprise_saas_scenario_requires_written_native_dependencies(self): + section = self.parse_domestic_scenario_sections()["中国大陆企业 SaaS 单次支付"] + actions = self.parse_domestic_scenario_actions("中国大陆企业 SaaS 单次支付") + + self.assertIn("作为第一个官方核验入口", section) + self.assertNotIn("主路线走微信支付 Native", section) + self.assertEqual( + [ + "取得微信支付对企业主体、目标 AI/数字类目、费率和结算的官方书面结果。", + "仅当上一项结果支持时,申请企业商户号的 Native 权限。", + "仅当上一项结果支持时,接入 Native 支付链路。", + ], + actions, + ) + + def test_membership_scenario_requires_written_native_dependencies(self): + actions = self.parse_domestic_scenario_actions("中国大陆个体户 30 天会员") + + self.assertEqual( + [ + "取得微信支付对个体工商户或小微商户主体、30 天会员权益类目、费率和结算的官方书面结果。", + "仅当上一项结果支持时,申请微信支付 Native 产品权限。", + "仅当上一项结果支持时,接入 Native 支付链路。", + ], + actions, + ) + + def test_payment_compliance_defers_answer_shape_to_skill(self): + text = (ROOT / "skills/fxskill/references/payment-compliance.md").read_text("utf-8") + + self.assertIn("直接支付专题复用 `SKILL.md` 的“支付答案配方”", text) + self.assertNotIn("不用“并、和、再、同时、以及、;”连接额外操作", text) + + def test_payment_compliance_points_to_index_without_cn_platform_fact_duplicates(self): + text = (ROOT / "skills/fxskill/references/payment-compliance.md").read_text("utf-8") + + self.assertIn("payment-index.md", text) + forbidden_cn_platform_fact_labels = ( + "微信支付小微商户进件产品介绍", + "微信支付普通商户主体资料", + "支付宝开放平台入口", + ) + for label in forbidden_cn_platform_fact_labels: + self.assertNotIn(label, text) + + retained_shared_rules = ( + "拒绝伪造主体", + "借用账户", + "登记后每年还要报年报", + "路线 | 适合与责任边界", + "直接支付专题复用 `SKILL.md` 的“支付答案配方”", + ) + for phrase in retained_shared_rules: + self.assertIn(phrase, text) + + for obsolete_phrase in ("成品固定为", "成本卡", "条件卡", "**现状**", "**依据**", "**风险**"): + self.assertNotIn(obsolete_phrase, text) + + def test_repository_profiles_are_valid(self): + errors = module.validate_repository(ROOT) + self.assertEqual([], errors, "\n".join(errors)) + + def test_index_routes_every_domestic_category(self): + text = (ROOT / "skills/fxskill/references/payment-index.md").read_text("utf-8") + for path in ( + "payment-platform-cn-direct.md", + "payment-platform-cn-services.md", + "payment-platform-cn-creators.md", + "payment-scenarios.md", + ): + self.assertIn(path, text) + + def test_cn_direct_profiles_have_official_organization_sources(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-direct.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + expected_hosts = { + "微信支付": ("wechatpay.cn", "qq.com"), + "支付宝": ("alipay.com",), + "银联": ("unionpay.com",), + } + + missing = [name for name in expected_hosts if name not in profiles] + self.assertEqual([], missing, f"missing direct profile heading(s): {', '.join(missing)}") + + bad_sources = [] + for name, host_suffixes in expected_hosts.items(): + urls = module.extract_candidate_urls(profiles[name].get("官方来源", "")) + hosts = [ + urlparse(url).hostname or "" + for url in urls + if module.is_valid_official_url(url) + ] + if not any( + host == suffix or host.endswith(f".{suffix}") + for host in hosts + for suffix in host_suffixes + ): + bad_sources.append(f"{name}: {profiles[name].get('官方来源', '')}") + + self.assertEqual([], bad_sources, "missing official organization source host(s)") + + def test_cn_service_profiles_cover_task_3_platforms_and_roles(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-services.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + expected_names = ("虎皮椒", "XorPay", "PAYJS", "面包多 Pay", "BufPay") + + missing = [name for name in expected_names if name not in profiles] + self.assertEqual([], missing, f"missing service profile heading(s): {', '.join(missing)}") + + bad_fields = [] + for name in expected_names: + labels = profiles[name] + for label in ("运营主体", "支付角色", "资金路径"): + if not labels.get(label, "").strip(): + bad_fields.append(f"{name}: {label}") + if not module.validate_money_path(labels.get("资金路径", "")): + bad_fields.append(f"{name}: 资金路径 must use four explicit segments") + + self.assertEqual([], bad_fields, "service profile role and money-path contract failures") + + def test_cn_creator_profiles_cover_task_4_platforms_and_boundaries(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-creators.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + expected_names = ("面包多内容交易", "爱发电", "小报童") + + missing = [name for name in expected_names if name not in profiles] + self.assertEqual([], missing, f"missing creator profile heading(s): {', '.join(missing)}") + + bad_platform_types = [] + for name in expected_names: + platform_type = profiles[name].get("平台类型", "") + if "官方直连" in platform_type: + bad_platform_types.append(f"{name}: must not be 官方直连") + if "内容平台" not in platform_type and "代售" not in platform_type: + bad_platform_types.append(f"{name}: 平台类型 must include 内容平台 or 代售") + + self.assertEqual([], bad_platform_types, "creator profiles must be hosted-content or resale platforms") + + def test_domestic_scenarios_cover_task_5_decision_paths(self): + sections = self.parse_domestic_scenario_sections() + + missing_headings = [heading for heading in DOMESTIC_SCENARIOS if heading not in sections] + self.assertEqual([], missing_headings, f"missing scenario heading(s): {', '.join(missing_headings)}") + + missing_fields = [] + for heading in DOMESTIC_SCENARIOS: + section = sections[heading] + for field in DOMESTIC_SCENARIO_FIELDS: + if not re.search(rf"^- {re.escape(field)}[::]", section, re.MULTILINE): + missing_fields.append(f"{heading}: {field}") + + self.assertEqual([], missing_fields, f"missing scenario field(s): {', '.join(missing_fields)}") + + def test_domestic_scenarios_cost_and_condition_blocks_cover_contract_labels(self): + sections = self.parse_domestic_scenario_sections() + missing_cost_labels = [] + missing_condition_labels = [] + + for heading in DOMESTIC_SCENARIOS: + section = sections.get(heading, "") + + cost_match = re.search(r"^- 当前成本[::](.+)$", section, re.MULTILINE) + cost_line = cost_match.group(1) if cost_match else "" + for label in DOMESTIC_SCENARIO_COST_LABELS: + if label not in cost_line: + missing_cost_labels.append(f"{heading}: {label}") + if not any(label in cost_line for label in DOMESTIC_SCENARIO_MINIMUM_OR_RETAINED_LABELS): + missing_cost_labels.append(f"{heading}: 最低结算额/留存额") + + condition_match = re.search(r"^- 成立条件[::](.+)$", section, re.MULTILINE) + condition_line = condition_match.group(1) if condition_match else "" + for label in DOMESTIC_SCENARIO_CONDITION_LABELS: + if label not in condition_line: + missing_condition_labels.append(f"{heading}: {label}") + if not any(label in condition_line for label in DOMESTIC_SCENARIO_PAYMENT_MODEL_LABELS): + missing_condition_labels.append(f"{heading}: 支付模式/model") + + self.assertEqual([], missing_cost_labels, f"missing cost labels: {', '.join(missing_cost_labels)}") + self.assertEqual( + [], + missing_condition_labels, + f"missing condition labels: {', '.join(missing_condition_labels)}", + ) + + def test_mianbaoduo_creator_profile_uses_public_content_trade_fee_lines(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-creators.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + + platform_fee = profiles["面包多内容交易"].get("平台服务费", "") + payment_fee = profiles["面包多内容交易"].get("支付通道费", "") + + self.assertEqual("普通模式 5% 平台费;闪电结算总服务费 5.7%;服务单 3%。", platform_fee) + self.assertEqual( + "普通模式 1% 第三方支付费;闪电结算总服务费已含通道成本;服务单未单独公开通道费。", + payment_fee, + ) + self.assertNotIn("面包多 Pay", platform_fee) + + def test_cn_service_numeric_rates_have_same_section_official_source(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-services.md" + text = path.read_text("utf-8") if path.exists() else "" + bad_sources = [] + for name, labels, _ in module.parse_profiles(text): + section_text = "\n".join(labels.values()) + if not re.search(r"\d+(?:\.\d+)?\s*%", section_text): + continue + official_source = labels.get("官方来源", "") + if not any( + module.is_valid_official_url(url) + for url in module.extract_candidate_urls(official_source) + ): + bad_sources.append(name) + + self.assertEqual([], bad_sources, "numeric service rates need official source URLs in the same profile") + + def test_hupijiao_profile_tracks_public_entry_fee_conflicts_and_backup_boundary(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-services.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + hupijiao = profiles["虎皮椒"] + + entry_path = hupijiao["接入路径"] + self.assertIn("https://admin.xunhupay.com/sign-up.html", entry_path) + self.assertIn("通道临时关闭", entry_path) + self.assertIn("https://admin.dpweixin.com/sign-up.html", entry_path) + self.assertIn("不能直接完成正式新注册", entry_path) + self.assertIn("书面复核后才使用备用平台", entry_path) + + platform_fee = hupijiao["平台服务费"] + self.assertIn("2%+", platform_fee) + self.assertIn("3%+", platform_fee) + self.assertIn("5%+", platform_fee) + self.assertIn("后台签约页、合同或报价单", platform_fee) + self.assertNotIn("以公开申请页展示为准", platform_fee) + + settlement = hupijiao["结算周期与最低结算额"] + self.assertIn("未公开统一数字(以后台显示或通道规则为准)", settlement) + + official_sources = hupijiao["官方来源"] + self.assertIn("https://www.xunhupay.com/258.html", official_sources) + self.assertIn("https://admin.dpweixin.com/sign-up.html", official_sources) + + practical_issues = hupijiao["实际问题"] + self.assertIn("app/mimu.html", practical_issues) + self.assertIn("历史/不同 App 通知机制", practical_issues) + + backlog = (ROOT / "skills/fxskill/references/payment-research-backlog.md").read_text("utf-8") + self.assertIn("### 虎皮椒备用平台主体与资金路径", backlog) + self.assertIn("书面复核后才使用备用平台", backlog) + + def test_xorpay_profile_tracks_unverified_subject_fee_and_entry_boundaries(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-services.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + xorpay = profiles["XorPay"] + + operator = xorpay["运营主体"] + self.assertIn("无法确认", operator) + self.assertIn("XorPay.com", operator) + self.assertIn("粤ICP备18047748号", operator) + self.assertIn("工信部查询、合同、签约页或书面回复", operator) + + self.assertIn("未公开统一边界", xorpay["卖家地区"]) + self.assertIn("未公开统一边界", xorpay["买家地区与币种"]) + + product_fit = xorpay["适合商品"] + self.assertIn("官网自述面向独立开发者、个体户和小微企业", product_fit) + self.assertIn("AI 生图额度、数字会员或虚拟权益", product_fit) + self.assertIn("进件结果", product_fit) + + fees = xorpay["固定费用、提现费、退款费和拒付费"] + self.assertIn("任一渠道资料进件成功视为开通成功", fees) + self.assertIn("开通成功不能退款", fees) + self.assertIn("提现费:未公开统一数字", fees) + self.assertIn("退款费:未公开统一数字", fees) + self.assertIn("拒付费:未公开统一数字", fees) + self.assertNotIn("提现费:无此项", fees) + self.assertNotIn("退款费:无此项", fees) + self.assertNotIn("拒付费:无此项", fees) + + settlement = xorpay["结算周期与最低结算额"] + self.assertIn("微信 T+1", settlement) + self.assertIn("支付宝即时到账", settlement) + self.assertIn("最低结算额未公开统一数字", settlement) + self.assertIn("30 天无交易可能被通道回收权限", settlement) + self.assertIn("重新开通需重新收费 100 元", settlement) + + entry_path = xorpay["接入路径"] + self.assertIn("https://xorpay.com/main", entry_path) + self.assertIn("/login", entry_path) + self.assertIn("登录页可勾选注册", entry_path) + self.assertIn("/register 404", entry_path) + self.assertIn("只有后台结果支持时才配置支付接口", entry_path) + + backlog = (ROOT / "skills/fxskill/references/payment-research-backlog.md").read_text("utf-8") + self.assertIn("### XorPay 主体、地区、费用与进件边界", backlog) + for phrase in ( + "合同主体、备案主体", + "卖家地区", + "买家地区与币种", + "最低结算额", + "提现费、退款费、拒付费", + "后台申请/进件页", + "公告页", + "AI 生图额度、数字会员、虚拟权益包", + "书面费率", + ): + self.assertIn(phrase, backlog) + + def test_payjs_profile_tracks_public_conflicts_and_unverified_boundaries(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-services.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + payjs = profiles["PAYJS"] + + operator = payjs["运营主体"] + self.assertIn("北京顶风科技有限公司", operator) + self.assertIn("agreement", operator) + self.assertIn("404", operator) + self.assertIn("合同主体以签约合同或后台协议为准", operator) + + self.assertIn("未公开统一边界", payjs["卖家地区"]) + self.assertIn("未公开统一边界", payjs["买家地区与币种"]) + + payment_methods = payjs["支付方式"] + self.assertIn("账号 FAQ 明确不支持 H5、APP 支付,也不支持支付宝", payment_methods) + self.assertIn("H5 接口处于测试阶段", payment_methods) + self.assertIn("域名需工单备案、一级域名需 ICP 备案", payment_methods) + self.assertIn("支付与清算 FAQ、规则 FAQ 和收银台 API 仍出现支付宝口径", payment_methods) + self.assertIn("公开文档存在冲突", payment_methods) + self.assertIn("未确认前不作为已确认能力", payment_methods) + + platform_fee = payjs["平台服务费"] + self.assertIn("H5 使用页写 PAYJS 服务费 2%", platform_fee) + self.assertIn("不能当作统一总价", platform_fee) + + channel_fee = payjs["支付通道费"] + for phrase in ( + "价格页写微信支付手续费 0.6%", + "支付与清算 FAQ 写 0.38%", + "费率表按主体和行业列 0%、0.1%、0.2%、0.3%、0.38%、1%", + "contrast 页写 0.38%-0.6%", + "少部分用户可能额外收取服务费", + "不视为微信或支付宝官方统一费率", + "交易 100 元到银行卡仍 100 元", + "2% PAYJS 服务费另行计收", + "不能据此拼总价", + "签约页、合同、后台、报价单或微信支付终审为准", + ): + self.assertIn(phrase, channel_fee) + + settlement = payjs["结算周期与最低结算额"] + self.assertIn("结算周期按费率表规则 ID 可能为 T+1、T+3、T+7", settlement) + self.assertIn("单笔限额按费率表规则可能出现 3K", settlement) + self.assertIn("最低结算额未公开统一数字(以签约页、合同或后台显示为准)", settlement) + + official_sources = payjs["官方来源"] + self.assertIn("https://payjs.cn/dashboard/auth/login", official_sources) + self.assertIn("https://payjs.cn/view/9vw7", official_sources) + + practical_issues = payjs["实际问题"] + self.assertIn("H5 页面与账号 FAQ 冲突", practical_issues) + self.assertIn("支付宝相关页面口径也冲突", practical_issues) + self.assertIn("后台、工单或合同", practical_issues) + self.assertIn("公开协议/公告入口未找到统一边界说明", practical_issues) + + self.assertIn("需要稳定 H5", payjs["不适用条件"]) + self.assertIn("后台、工单或合同尚未确认", payjs["不适用条件"]) + + backlog = (ROOT / "skills/fxskill/references/payment-research-backlog.md").read_text("utf-8") + self.assertIn("### PAYJS 地区、协议主体、最低结算额与支付宝口径冲突", backlog) + for phrase in ( + "卖家地区、买家地区与币种统一边界", + "合同主体或后台协议主体", + "最低结算额", + "支付宝能力冲突", + "H5 能力与 2% 服务费冲突", + "AI 生图额度、软件 SaaS、数字会员、虚拟权益包", + "主体、费率、结算规则", + ): + self.assertIn(phrase, backlog) + + def test_mianbaoduo_pay_profile_tracks_unverified_subject_region_and_settlement_boundaries(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-services.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + mianbaoduo_pay = profiles["面包多 Pay"] + + operator = mianbaoduo_pay["运营主体"] + self.assertIn("毛线球科技", operator) + self.assertIn("京ICP备16062428号-8", operator) + self.assertIn("京ICP备16062428号-2", operator) + self.assertIn("签约主体、合同主体和备案主体全称仍无法确认", operator) + + settlement = mianbaoduo_pay["结算周期与最低结算额"] + self.assertIn("支付宝约 5 分钟内到账", settlement) + self.assertIn("微信次日自动汇总提现", settlement) + self.assertIn("settle_time", settlement) + self.assertIn("最低结算额未公开统一数字", settlement) + self.assertIn("留存额未公开统一数字", settlement) + self.assertIn("权限回收规则未公开统一数字", settlement) + + backlog = (ROOT / "skills/fxskill/references/payment-research-backlog.md").read_text("utf-8") + self.assertIn("### 面包多 Pay 主体、开放与结算边界", backlog) + for phrase in ( + "签约主体、合同主体和备案主体全称", + "最低结算额", + "留存额", + "权限回收规则", + "新注册个人开发者稳定开放", + ): + self.assertIn(phrase, backlog) + + def test_mianbaoduo_content_trade_profile_locks_decision_fields(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-creators.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + profile = profiles["面包多内容交易"] + + self.assertEqual( + "普通模式:买家微信或支付宝账户 -> 面包多平台收款账户 -> 面包多公司账户结算链路 -> 创作者可提现余额或提现账户;闪电结算和服务单的具体清算方公开资料没有写明。", + profile["资金路径"], + ) + self.assertEqual( + "普通模式 5% 平台费;闪电结算总服务费 5.7%;服务单 3%。", + profile["平台服务费"], + ) + self.assertEqual( + "普通模式 1% 第三方支付费;闪电结算总服务费已含通道成本;服务单未单独公开通道费。", + profile["支付通道费"], + ) + + backlog = (ROOT / "skills/fxskill/references/payment-research-backlog.md").read_text("utf-8") + self.assertIn("### 面包多内容交易费率嵌入和迁移边界", backlog) + self.assertIn("highfee 模式", backlog) + self.assertIn("企业账号与个人账号差异", backlog) + self.assertIn("拒付费", backlog) + self.assertIn("迁移路径", backlog) + self.assertIn("能否说明闪电结算和服务单的具体清算方", profile["待核验问题"]) + self.assertNotIn("面包多内容交易当前各结算模式的正式适用费率", backlog) + + def test_quick_sale_scenario_uses_creator_profile_fee_modes_without_adding_them(self): + scenarios = self.parse_domestic_scenario_sections() + scenario = scenarios["数字资料或课程快速销售"] + text = (ROOT / "skills/fxskill/references/payment-platform-cn-creators.md").read_text("utf-8") + profiles = {name: labels for name, labels, _ in module.parse_profiles(text)} + profile = profiles["面包多内容交易"] + + for phrase in ( + "普通模式 5% 平台费 + 1% 第三方支付手续费", + "闪电结算总服务费 5.7%", + "服务单 3%", + "三种模式不能相加", + ): + self.assertIn(phrase, scenario) + self.assertIn("普通模式 5% 平台费", profile["平台服务费"]) + self.assertIn("普通模式 1% 第三方支付费", profile["支付通道费"]) + + def test_afdian_profile_locks_operator_funds_and_refund_role(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-creators.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + profile = profiles["爱发电"] + + self.assertIn("电羊科技(北京)有限公司", profile["运营主体"]) + self.assertEqual( + "买家微信或支付宝账户 -> 爱发电统一收款账户 -> 协议约定的结算处理(公开资料没有写明具体清算方) -> 创作者余额或提现账户", + profile["资金路径"], + ) + self.assertIn("平台协调售后和争议", profile["退款和售后"]) + self.assertIn("可冻结款项", profile["退款和售后"]) + self.assertIn("全额或部分退款", profile["退款和售后"]) + self.assertIn("决定继续结算", profile["退款和售后"]) + + backlog = (ROOT / "skills/fxskill/references/payment-research-backlog.md").read_text("utf-8") + self.assertIn("### 爱发电提现退款导出和独立站边界", backlog) + self.assertIn("具体清算方", backlog) + self.assertIn("能否说明具体清算方", profile["待核验问题"]) + self.assertNotIn("退款责任规则", backlog) + + def test_xiaobot_profile_locks_settlement_nodes_and_backlog_focus(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-creators.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + profile = profiles["小报童"] + + self.assertEqual( + "读者支付账户 -> 小报童平台收款账户 -> 协议约定的结算处理(公开资料没有写明具体清算方) -> 创作者个人云账户或企业对公账户", + profile["资金路径"], + ) + + backlog = (ROOT / "skills/fxskill/references/payment-research-backlog.md").read_text("utf-8") + self.assertIn("### 小报童支付接口导出和买断退款细则", backlog) + self.assertIn("具体支付商户主体", backlog) + self.assertIn("具体清算方", backlog) + self.assertIn("具体支付商户主体和具体清算方分别是谁", profile["待核验问题"]) + + def test_payment_behavior_scenarios_keep_conclusions_descriptive_and_costs_bounded(self): + text = (ROOT / "tests/fxskill/scenarios.md").read_text("utf-8") + + self.assertIn("R7 的固定费用未知时不得称为低固定成本候选", text) + self.assertIn("R7 必须注明费用与资格的核验日期", text) + self.assertIn("R8 和 R9 的结论可描述路线或平台定位", text) + self.assertIn("这种描述不计为命令动作", text) + self.assertIn("R10 必须给出结算边界", text) + self.assertIn("0.38% 是 XorPay 页面口径", text) + + def test_bufpay_profile_tracks_split_costs_and_operational_unknowns(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-services.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + bufpay = profiles["BufPay"] + + platform_fee = bufpay["平台服务费"] + for phrase in ("免费版 0", "基础版 0.4%", "标准版 0.3%", "高级版 0.2%"): + self.assertIn(phrase, platform_fee) + for forbidden in ("25 元/月", "50 元/月", "99 元/月"): + self.assertNotIn(forbidden, platform_fee) + + fees = bufpay["固定费用、提现费、退款费和拒付费"] + self.assertIn("固定费用:套餐月费 0 元、25 元、50 元或 99 元", fees) + self.assertIn("手续费余额需预充值", fees) + self.assertIn("未用完余额不支持提现或退款", fees) + + practical_issues = bufpay["实际问题"] + self.assertIn("实践证据不足", practical_issues) + self.assertIn("通知漏单率", practical_issues) + self.assertIn("回调失败或过期后付款", practical_issues) + self.assertIn("客服响应", practical_issues) + self.assertIn("退款和人工确认", practical_issues) + + backlog = (ROOT / "skills/fxskill/references/payment-research-backlog.md").read_text("utf-8") + self.assertIn("### BufPay 2026 接入稳定性与异常处理体验", backlog) + for phrase in ( + "真实接入稳定性", + "通知漏单率", + "回调失败或过期后付款", + "客服响应", + "退款处理", + "人工确认", + ): + self.assertIn(phrase, backlog) + + def test_alipay_refund_fee_discloses_nonrefundable_transaction_fee(self): + path = ROOT / "skills/fxskill/references/payment-platform-cn-direct.md" + text = path.read_text("utf-8") if path.exists() else "" + profiles = { + name: labels + for name, labels, _ in module.parse_profiles(text) + } + alipay = profiles["\u652f\u4ed8\u5b9d"] + fee_label = "\u56fa\u5b9a\u8d39\u7528\u3001\u63d0\u73b0\u8d39\u3001\u9000\u6b3e\u8d39\u548c\u62d2\u4ed8\u8d39" + refund_label = "\u9000\u6b3e\u8d39" + source_label = "\u5b98\u65b9\u6765\u6e90" + items, duplicates, extras = module.parse_fee_breakdown(alipay[fee_label]) + + self.assertEqual([], duplicates) + self.assertEqual([], extras) + self.assertIn(refund_label, items) + self.assertNotEqual("\u65e0\u6b64\u9879", items[refund_label]) + self.assertIn("\u624b\u7eed\u8d39\u4e0d\u9000\u56de", items[refund_label]) + self.assertIn("AI \u7f51\u9875\u5e94\u7528\u6536\u6b3e", items[refund_label]) + self.assertIn( + "https://aipay.alipay.com/docs/ai-web-app-payment-qianyi/ai-web-app-payment-integration-guide.html", + alipay[source_label], + ) + + def test_backlog_has_actionable_unknowns(self): + text = (ROOT / "skills/fxskill/references/payment-research-backlog.md").read_text("utf-8") + for field in ("缺失事实", "已查来源", "需要询问", "可接受证据"): + self.assertIn(field, text) + + def test_validate_file_rejects_unknown_recommendation_level(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), self.render_profile(推荐等级="随便推荐")) + errors = module.validate_file(path) + self.assertTrue(any("推荐等级" in error for error in errors), errors) + + def test_validate_file_requires_real_iso_verification_date(self): + for value in ("2026/07/15", "2026-02-31"): + with self.subTest(value=value): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), self.render_profile(最后核验日期=value)) + errors = module.validate_file(path) + self.assertTrue(any("最后核验日期" in error for error in errors), errors) + + def test_validate_file_requires_valid_official_link_for_active_platforms(self): + for value in ( + "无", + "https://。", + "https://localhost/admin", + "https://localhost./admin", + "https://127.0.0.1/admin", + "https://10.0.0.1/admin", + ): + with self.subTest(value=value): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), self.render_profile(官方来源=value)) + errors = module.validate_file(path) + self.assertTrue(any("官方来源" in error for error in errors), errors) + + def test_validate_file_accepts_official_link_with_trailing_punctuation(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(官方来源="https://example.com。"), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_extract_candidate_urls_splits_chinese_semicolon_lists(self): + self.assertEqual( + ["https://example.com/one", "https://example.com/two"], + module.extract_candidate_urls("https://example.com/one;https://example.com/two。"), + ) + + def test_extract_candidate_urls_keeps_single_url_with_fullwidth_semicolon(self): + self.assertEqual( + ["https://example.com/path;detail"], + module.extract_candidate_urls("https://example.com/path;detail"), + ) + + def test_validate_file_requires_extended_contract_fields(self): + profile = self.render_profile() + for label in ( + "卖家地区", + "买家地区与币种", + "支付方式", + "固定费用、提现费、退款费和拒付费", + "结算周期与最低结算额", + ): + with self.subTest(label=label): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), self.remove_label(profile, label)) + errors = module.validate_file(path) + self.assertTrue(any(label in error for error in errors), errors) + + def test_validate_file_requires_four_segment_money_path(self): + for value in ( + "未知", + "买家 -> 收款方 -> 卖家账户", + "买家 -> 收款方 -> -> 卖家账户", + "买家 -> 待确认收款方 -> 清算方 -> 卖家账户", + "买家 -> 收款方 -> 未公开清算方 -> 卖家账户", + "买家 -> 收款方 -> 清算方 -> 不明账户", + ): + with self.subTest(value=value): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), self.render_profile(资金路径=value)) + errors = module.validate_file(path) + self.assertTrue(any("资金路径" in error for error in errors), errors) + + def test_validate_file_accepts_four_segment_money_path(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(资金路径="买家 -> 收款方 -> 清算方 -> 卖家企业银行账户"), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_treats_precise_money_path_gap_as_unknown(self): + value = ( + "买家 -> 平台收款账户 -> 协议约定的结算处理" + "(公开资料没有写明具体清算方) -> 卖家提现账户" + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), self.render_profile(资金路径=value)) + errors = module.validate_file(path) + + self.assertTrue( + any("unknown key fields" in error or "pending verification" in error for error in errors), + errors, + ) + + def test_validate_file_accepts_precise_money_path_gap_as_lead_with_backlog(self): + value = ( + "买家 -> 平台收款账户 -> 协议约定的结算处理" + "(公开资料没有写明具体清算方) -> 卖家提现账户" + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile( + 资金路径=value, + 推荐等级="仅作线索", + 待核验问题=VALID_BACKLOG, + ), + ) + errors = module.validate_file(path) + + self.assertEqual([], errors, errors) + + def test_validate_file_rejects_precise_money_path_gap_with_stronger_recommendation(self): + values = ( + "买家 -> 平台收款账户 -> 协议约定的结算处理(公开资料没有写明具体清算方) -> 卖家提现账户", + "买家 -> 平台收款账户 -> 平台结算处理(具体清算机构未披露) -> 卖家提现账户", + "买家 -> 平台收款账户 -> 合同约定的清算节点(官方材料未说明具体机构) -> 卖家提现账户", + "买家 -> 平台收款账户 -> 平台结算处理(具体清算机构未公布) -> 卖家提现账户", + "买家 -> 平台收款账户 -> 协议约定的清算节点(具体机构未给出) -> 卖家提现账户", + "买家 -> 平台收款账户 -> 平台结算处理(具体清算机构未能确认) -> 卖家提现账户", + "买家 -> 平台收款账户 -> 协议约定的清算节点(具体机构未予披露) -> 卖家提现账户", + ) + for value in values: + for recommendation in ("条件推荐", "不推荐"): + with self.subTest(value=value, recommendation=recommendation): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile( + 资金路径=value, + 推荐等级=recommendation, + 待核验问题=VALID_BACKLOG, + ), + ) + errors = module.validate_file(path) + + self.assertTrue( + any("unknown clearing node" in error for error in errors), + errors, + ) + + def test_validate_file_rejects_unknown_current_status(self): + for status in ("运营中", "正常营业", "待观察"): + with self.subTest(status=status): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile( + 当前状态=status, + ), + ) + errors = module.validate_file(path) + + self.assertTrue( + any("当前状态" in error and "must be one of" in error for error in errors), + errors, + ) + + def test_source_policy_requires_precise_money_path_gaps_to_stay_lead_only(self): + text = (ROOT / "skills/fxskill/references/payment-source-policy.md").read_text("utf-8") + + self.assertIn("精确指出缺失的清算节点", text) + self.assertIn("只能配 `仅作线索` 或 `已停止/归档`", text) + self.assertIn("结构化 `待核验问题`", text) + + def test_validate_file_rejects_ambiguous_payment_role(self): + for value in ("待确认", "未知", "未公开", "不确定"): + with self.subTest(value=value): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="仅作线索", 支付角色=value, 待核验问题="无"), + ) + errors = module.validate_file(path) + self.assertTrue(any("支付角色" in error or "待核验问题" in error for error in errors), errors) + + def test_has_unknown_key_fields_treats_precise_unpublished_as_known(self): + labels = dict(BASE_PROFILE) + labels["平台服务费"] = PRECISE_UNPUBLISHED_PAGE + labels["支付通道费"] = PRECISE_UNPUBLISHED_CONTRACT + labels["固定费用、提现费、退款费和拒付费"] = "\n".join( + [ + f"固定费用:{PRECISE_UNPUBLISHED_BACKEND}", + "提现费:0", + "退款费:无此项", + f"拒付费:{PRECISE_UNPUBLISHED_QUOTE}", + ] + ) + self.assertFalse(module.has_unknown_key_fields(labels)) + + def test_has_unknown_key_fields_treats_plain_unpublished_as_unknown(self): + for value in ("未公开", "未核实", "暂无结论", "待定", "不详", "不明", "不确定"): + with self.subTest(value=value): + labels = dict(BASE_PROFILE) + labels["平台服务费"] = value + self.assertTrue(module.has_unknown_key_fields(labels)) + + def test_validate_file_requires_backlog_for_unknown_key_fields_at_any_recommendation(self): + for value in ("未公开", "未核实", "暂无结论"): + with self.subTest(value=value): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 平台服务费=value, 待核验问题="无"), + ) + errors = module.validate_file(path) + self.assertTrue(any("待核验问题" in error for error in errors), errors) + + def test_validate_file_rejects_stronger_recommendation_when_practice_evidence_is_insufficient(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 实践来源=INSUFFICIENT_PRACTICE_EVIDENCE, 待核验问题=VALID_BACKLOG), + ) + errors = module.validate_file(path) + self.assertTrue(any("实践证据不足" in error and "仅作线索" in error for error in errors), errors) + + def test_validate_file_requires_actionable_backlog_when_practice_evidence_is_insufficient(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="仅作线索", 实践来源=INSUFFICIENT_PRACTICE_EVIDENCE, 待核验问题="无"), + ) + errors = module.validate_file(path) + self.assertTrue(any("实践证据不足" in error and "待核验问题" in error for error in errors), errors) + + def test_validate_file_accepts_unknown_key_fields_when_backlog_exists(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 平台服务费="未公开", 待核验问题=VALID_BACKLOG), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_rejects_direct_recommendation_with_backlog(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), self.render_profile(待核验问题=VALID_BACKLOG)) + errors = module.validate_file(path) + self.assertTrue(any("直接推荐" in error for error in errors), errors) + + def test_validate_file_requires_split_fee_breakdown(self): + for value in ( + "固定费用:0\n提现费:无此项\n退款费:无此项", + "其他费用:以签约页为准", + "固定费用:0\n提现费:无此项\n退款费:无此项\n拒付费:无此项\n其他费:以合同为准", + ): + with self.subTest(value=value): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile( + 推荐等级="条件推荐", + **{"固定费用、提现费、退款费和拒付费": value}, + ), + ) + errors = module.validate_file(path) + self.assertTrue(any("固定费用、提现费、退款费和拒付费" in error for error in errors), errors) + + def test_validate_file_rejects_duplicate_fee_subfields(self): + value = "\n".join( + [ + "固定费用:0", + "固定费用:无此项", + "提现费:无此项", + "退款费:无此项", + "拒付费:无此项", + ] + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", **{"固定费用、提现费、退款费和拒付费": value}), + ) + errors = module.validate_file(path) + self.assertTrue(any("duplicate fee subfield `固定费用`" in error for error in errors), errors) + + def test_validate_file_rejects_empty_duplicate_fee_subfield(self): + value = "\n".join( + [ + "固定费用:0", + "固定费用:", + "提现费:无此项", + "退款费:无此项", + "拒付费:无此项", + ] + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", **{"固定费用、提现费、退款费和拒付费": value}), + ) + errors = module.validate_file(path) + self.assertTrue(any("duplicate fee subfield `固定费用`" in error for error in errors), errors) + + def test_validate_file_rejects_empty_extra_fee_key(self): + value = "\n".join( + [ + "固定费用:0", + "提现费:无此项", + "退款费:无此项", + "拒付费:无此项", + "其他费用:", + ] + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", **{"固定费用、提现费、退款费和拒付费": value}), + ) + errors = module.validate_file(path) + self.assertTrue(any("unsupported fee key" in error and "其他费用" in error for error in errors), errors) + + def test_validate_file_accepts_explicit_fee_breakdown_values(self): + value = "\n".join( + [ + f"固定费用:{PRECISE_UNPUBLISHED_BACKEND}", + "提现费:无此项", + "退款费:0", + f"拒付费:{PRECISE_UNPUBLISHED_CONTRACT}", + ] + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile( + 平台服务费=PRECISE_UNPUBLISHED_PAGE, + 支付通道费="0", + **{"固定费用、提现费、退款费和拒付费": value}, + ), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_rejects_unknown_top_level_label(self): + profile = self.render_profile().replace( + "- 官方来源:https://example.com/official", + "- 官方来源:https://example.com/official\n- 其他费用:未公开", + 1, + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), profile) + errors = module.validate_file(path) + self.assertTrue(any("unknown label `其他费用`" in error for error in errors), errors) + + def test_validate_file_accepts_optional_export_label(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(**{"数据导出与迁移": "支持 CSV 导出"}), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_accepts_all_allowed_optional_labels(self): + overrides = {label: f"{label}示例" for label in OPTIONAL_LABELS} + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), self.render_profile(**overrides)) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_requires_non_empty_optional_label_value(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), self.render_profile(**{"运营主体": ""})) + errors = module.validate_file(path) + self.assertTrue(any("运营主体" in error for error in errors), errors) + + def test_validate_file_requires_backlog_for_unknown_optional_label(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(**{"限制商品": "未知"}), + ) + errors = module.validate_file(path) + self.assertTrue(any("待核验问题" in error for error in errors), errors) + + def test_validate_file_accepts_explicit_optional_label_value(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(**{"限制商品": "无额外限制,以官方禁售清单为准"}), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_rejects_placeholder_unknown_values(self): + backlog = "\n".join( + [ + "", + "- 缺失事实:待确认", + "- 已查来源:TODO,等官方回复。", + "- 需要询问:请联系客服。", + "- 可接受证据:官方回复。", + ] + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 待核验问题=backlog), + ) + errors = module.validate_file(path) + self.assertTrue(any("待核验问题" in error for error in errors), errors) + + def test_validate_file_accepts_review_false_positive_backlog_examples(self): + cases = ( + BACKLOG_WITH_UNCONFIRMED_FACT, + "\n".join( + [ + "", + "- 缺失事实:无法确认该平台是否向中国大陆个体工商户开放申请。", + "- 已查来源:2026-07-15 已检查官网申请页 https://example.com/help-center。", + "- 需要询问:商务团队可否确认中国大陆个体工商户是否能申请该产品?", + "- 可接受证据:官方书面回复明确写出适用主体、类目和结算路径。", + ] + ), + "\n".join( + [ + "", + "- 缺失事实:尚未确认该平台向中国大陆个体工商户开放的具体类目。", + "- 已查来源:2026-07-15 已检查官网帮助中心 https://example.com/docs。", + "- 需要询问:商务团队哪些类目支持中国大陆个体工商户申请该产品?", + "- 可接受证据:官方页面、文档、合同、报价单、后台截图或书面回复中明确写出可申请类目。", + ] + ), + ) + for backlog in cases: + with self.subTest(backlog=backlog.splitlines()[1]): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 平台服务费="未公开", 待核验问题=backlog), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_accepts_checked_sources_with_unified_unpublished_rate(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 平台服务费="未公开", 待核验问题=BACKLOG_WITH_UNIFIED_UNPUBLISHED_RATE), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_requires_specific_question_in_need_to_ask_field(self): + for question in ("请确认是否支持?", "商务团队?"): + backlog = "\n".join( + [ + "", + "- 缺失事实:尚未确认个体工商户是否可销售 AI 图像额度包。", + "- 已查来源:2026-07-15 已检查官网申请页 https://example.com/help-center。", + f"- 需要询问:{question}", + "- 可接受证据:官方页面或书面回复。", + ] + ) + with self.subTest(question=question): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 待核验问题=backlog), + ) + errors = module.validate_file(path) + self.assertTrue(any("需要询问" in error for error in errors), errors) + + def test_validate_file_requires_evidence_carrier_in_acceptance_field(self): + backlog = "\n".join( + [ + "", + "- 缺失事实:尚未确认个体工商户是否可销售 AI 图像额度包。", + "- 已查来源:2026-07-15 已检查官网申请页 https://example.com/help-center。", + "- 需要询问:商务团队是否支持个体工商户销售 AI 图像额度包?", + "- 可接受证据:官方回复。", + ] + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 待核验问题=backlog), + ) + errors = module.validate_file(path) + self.assertTrue(any("可接受证据" in error for error in errors), errors) + + def test_validate_file_rejects_duplicate_backlog_subfields(self): + backlog = "\n".join( + [ + "", + "- 缺失事实:尚未确认个体工商户是否可销售 AI 图像额度包。", + "- 已查来源:2026-07-15 已检查官网申请页 https://example.com/help-center。", + "- 已查来源:2026-07-16 已检查帮助中心 https://example.com/docs。", + "- 需要询问:商务团队是否支持个体工商户销售 AI 图像额度包?", + "- 可接受证据:官方页面或书面回复。", + ] + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 待核验问题=backlog), + ) + errors = module.validate_file(path) + self.assertTrue(any("duplicate backlog subfield `已查来源`" in error for error in errors), errors) + + def test_validate_file_accepts_substantive_unknown_values(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(推荐等级="条件推荐", 平台服务费="未公开", 待核验问题=VALID_BACKLOG), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_rejects_duplicate_labels_in_profile(self): + profile = self.render_profile().replace( + "- 官方来源:https://example.com/official", + "- 官方来源:https://example.com/official\n- 官方来源:https://example.com/duplicate", + 1, + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), profile) + errors = module.validate_file(path) + self.assertTrue(any("duplicate label `官方来源`" in error for error in errors), errors) + + def test_validate_file_parses_and_validates_multiple_profiles_in_one_file(self): + content = "\n".join( + [ + self.render_profile(name="平台甲").rstrip(), + self.render_profile(name="平台乙", 官方来源="无").rstrip(), + "", + ] + ) + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), content) + errors = module.validate_file(path) + self.assertEqual(1, len(errors), errors) + self.assertIn("平台乙", errors[0]) + self.assertIn("官方来源", errors[0]) + + def test_validate_repository_rejects_cross_file_duplicate_platform_names(self): + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + (root / ".git").write_text("", "utf-8") + self.write_profile_file(root, self.render_profile(name="同名平台"), "payment-platform-one.md") + self.write_profile_file(root, self.render_profile(name="同名平台"), "payment-platform-two.md") + errors = module.validate_repository(root) + self.assertTrue(any("duplicate platform `同名平台`" in error for error in errors), errors) + + def test_validate_file_reports_non_empty_file_without_profiles(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), "# 平台草稿\n\n暂未整理字段。") + errors = module.validate_file(path) + self.assertTrue(any("contains content but no `##` profiles" in error for error in errors), errors) + + def test_validate_file_allows_whitespace_only_file(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file(Path(tmp), " \n\t\n") + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + def test_validate_file_requires_archived_recommendation_for_stopped_status(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(当前状态="已停止", 推荐等级="仅作线索"), + ) + errors = module.validate_file(path) + self.assertTrue(any("已停止/归档" in error for error in errors), errors) + + def test_validate_file_rejects_recommendation_for_unconfirmed_status(self): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(当前状态="无法确认", 推荐等级="条件推荐"), + ) + errors = module.validate_file(path) + self.assertTrue(any("无法确认" in error for error in errors), errors) + + def test_validate_file_accepts_lead_only_for_unconfirmed_status(self): + for recommendation in ("仅作线索", "已停止/归档"): + with self.subTest(recommendation=recommendation): + with tempfile.TemporaryDirectory() as tmp: + path = self.write_profile_file( + Path(tmp), + self.render_profile(当前状态="无法确认", 推荐等级=recommendation, 待核验问题=VALID_BACKLOG), + ) + errors = module.validate_file(path) + self.assertEqual([], errors, errors) + + +if __name__ == "__main__": + unittest.main() From 41149e199969df4f0fc5e09dacab705ee6f8f42f Mon Sep 17 00:00:00 2001 From: ab18108289 <953995271@qq.com> Date: Thu, 16 Jul 2026 09:16:00 +0800 Subject: [PATCH 2/3] refine payment guidance for beginners --- scripts/validate_payment_kb.py | 7 +++ skills/fxskill/SKILL.md | 6 +- .../references/payment-platform-cn-direct.md | 20 +++++++ .../payment-platform-cn-services.md | 20 +++++++ tests/fxskill/test_payment_kb.py | 56 ++++++++++++++++++- 5 files changed, 105 insertions(+), 4 deletions(-) diff --git a/scripts/validate_payment_kb.py b/scripts/validate_payment_kb.py index 6434eff..94160b2 100644 --- a/scripts/validate_payment_kb.py +++ b/scripts/validate_payment_kb.py @@ -33,6 +33,13 @@ ) ALLOWED_OPTIONAL_LABELS = ( + "能不能申请", + "需要准备", + "怎么收费", + "多久能到账", + "会员和自动续费", + "接入难度", + "最容易踩的坑", "运营主体", "限制商品", "单次支付", diff --git a/skills/fxskill/SKILL.md b/skills/fxskill/SKILL.md index fc1f8d0..0156c1f 100644 --- a/skills/fxskill/SKILL.md +++ b/skills/fxskill/SKILL.md @@ -42,13 +42,13 @@ description: Use when 建站新手需要规划、设计、建站、上线、支 ### 支付答案配方 -**原则**:资料库深、回答浅。档案保留完整字段,成品只讲清用户这次怎么选。 -支付答案配方优先于全局语义输出契约。支付首句可以直接描述主路线或不选某个平台;这种描述性结论不计入行动。真正命令用户执行的操作只放在最后步骤区,最多三条。 +**原则**:资料库深、回答浅。支付答案配方优先于全局语义输出契约;档案保留完整字段,成品只讲清用户这次怎么选。支付首句可以直接描述主路线或不选某个平台,描述性结论不计入行动;真正命令用户执行的操作只放在最后步骤区,最多三条。 +用户判断顺序固定为:`能不能申请 -> 需要准备 -> 怎么收费 -> 多久能到账 -> 会员和自动续费 -> 接入难度 -> 最容易踩的坑`。只选这次会改变决定的 2-4 项回答。运营主体、合同主体和资金路径只作为内部核验字段;仅当异常已经影响申请、收款、结算或售后追责时,才用一句白话提醒用户。 1. **选资料**:先按卖家主体 + 支付模式匹配场景标题;主体与支付模式场景优先于产品形式场景。自然人首单问题固定使用 `中国大陆自然人验证首批订单`,行动顺序为“提交资料 → 支持且费用、结算可接受时签约 → 后台明确不支持且允许个体工商户时登记个体工商户”;支付回调、验签等技术接入留到下一轮。内容托管场景至多进入一个有条件备选槽。 2. **先下结论**:先给一句明确结论,说明当前最可行路线、能不能用或为什么暂不能判断;不能只说需要核验,也不强制固定标题。 3. **补关键信息**: - 再给 2-4 条真正影响选择的信息;托管内容平台能否替代网站支付 API 时,只保留 API 能力、主要费用、主体与内容边界、结算或退款限制。 - - 优先费用、主体或类目条件、结算或最大未知;不默认输出完整成本卡或条件卡。 + - 优先能否申请、所需材料、费用、到账、续费能力、接入难度或最大坑;不默认输出完整成本卡或条件卡。 - 未公开的费用合并为一句说明,不能为了完整把所有未知标签念一遍。 - 保留来源边界,区分官方事实、平台自述、实践证据和待核验项;平台页面声称的通道费不得写成支付机构官方统一费率;当前费率、资格或状态必须简短标明核验日期。平台比较必须用“截至 YYYY-MM-DD”标明核验日期。 4. **给步骤**: diff --git a/skills/fxskill/references/payment-platform-cn-direct.md b/skills/fxskill/references/payment-platform-cn-direct.md index 640cbf2..78724e0 100644 --- a/skills/fxskill/references/payment-platform-cn-direct.md +++ b/skills/fxskill/references/payment-platform-cn-direct.md @@ -6,6 +6,16 @@ ## 微信支付 +### 用户先看 + +- 能不能申请:中国大陆个体工商户可以申请 Native、JSAPI 等部分产品,但 H5 支付公开准入不含个体工商户和小微商户;AI 生图额度、会员或虚拟权益最终能否通过,取决于类目审核。 +- 需要准备:营业执照、经营者资料、结算银行卡、已认证 APPID 和可访问的网站;申请 H5 还要支付域名、ICP备案截图、经营页面截图和可能的行业资质。 +- 怎么收费:微信支付官方直连没有额外平台服务费;交易费率没有统一公开数字,以商户后台核准结果为准。 +- 多久能到账:公开口径是交易资金 T+1 到商户平台基本账户;自动提现预计发起后约 2 小时到银行卡,手动提现通常次日起 1-3 个工作日。 +- 会员和自动续费:单次购买会员可以按普通订单申请;每月自动扣款不是基础支付默认能力,需要另行申请免密或自动续费权限并取得用户授权。 +- 接入难度:偏高。需要商户号、APPID、APIv3 证书、签名验签、回调、查单和对账,更适合有开发能力的正式网站。 +- 最容易踩的坑:把“个体户能申请微信支付”理解成所有网页场景都能用;H5 的主体限制和 AI/虚拟商品类目审核可能直接改变方案。 + - 当前状态:正常运营 - 平台类型:官方直连 - 运营主体:财付通支付科技有限公司(微信支付/财付通体系)。 @@ -48,6 +58,16 @@ ## 支付宝 +### 用户先看 + +- 能不能申请:AI 网页应用收款官方明确有个人开发者场景,但是否能卖具体 AI 生图额度或会员仍看后台申请结果;AI 订阅 SaaS 当前接入文档指向企业账号,不能从个人网页收款直接外推。 +- 需要准备:支付宝账号、真实商品类目和可访问的网站资料;传统电脑网站路径通常还要营业执照、主体一致的支付宝账户、ICP备案和完整商品页面,订阅产品需要按页面联系业务人员。 +- 怎么收费:官方公开页没有给 AI 网页收款、订阅和按量付费的统一费率或固定费用;以签约页、后台或报价单为准。AI 网页应用退款时,已经扣除的交易手续费不退。 +- 多久能到账:AI 支付公开页没有给统一结算周期、最低结算额和提现规则,必须以申请后台或签约结果为准。 +- 会员和自动续费:AI 订阅产品支持周期扣款、席位和续费失败处理,但当前文档准入指向企业账号;个体工商户能否签约尚未确认。 +- 接入难度:中等偏高。普通网页支付有官方 SDK 和标准接口;订阅、按量计费还要处理价格表、订阅状态或支付凭证履约。 +- 最容易踩的坑:看到“支持个人开发者”就默认个人也能开通自动续费;目前可以确认的是 AI 网页应用收款场景,不是全部支付宝支付产品。 + - 当前状态:正常运营 - 平台类型:官方直连 - 运营主体:支付宝(杭州)数字服务技术有限公司(支付宝开放平台官网页脚主体);AI 支付开放平台、AI 网页应用收款、AI 订阅 SaaS、AI 按量付费的正式收单或签约主体尚未在公开产品页、文档或申请页中直接写明,仍以签约页或合同载明主体为准。 diff --git a/skills/fxskill/references/payment-platform-cn-services.md b/skills/fxskill/references/payment-platform-cn-services.md index 2e2a861..f1bc542 100644 --- a/skills/fxskill/references/payment-platform-cn-services.md +++ b/skills/fxskill/references/payment-platform-cn-services.md @@ -14,6 +14,16 @@ ## 虎皮椒 +### 用户先看 + +- 能不能申请:截至 2026-07-15,公开注册入口显示通道临时关闭、备用平台或已满员,新用户不能把它当作可直接开通的主方案;AI 生图额度和会员的当前准入也未确认。 +- 需要准备:历史公开流程要求正规网站、身份证、手机号、个人银行卡和实名支付宝;备用平台现在实际要求什么材料,公开资料无法确认。 +- 怎么收费:公开口径包含 1%-2% 平台费、页面自述的 0.38%-0.6% 通道费,以及微信 118 元、支付宝 88 元等开户费;页面之间存在差异,不能把这些数字直接相加成确定总价。 +- 多久能到账:平台页面称微信 D+1/T+1 到银行卡、支付宝通常即时到账;但公开资料同时出现官方清算和 App 通知监听两种模式,实际账户到账路径尚未确认。 +- 会员和自动续费:可以按周期创建新的单次支付订单;没有证据证明它提供官方免密自动续费。 +- 接入难度:接口和插件本身属于中等难度,但当前最大阻碍不是代码,而是新注册入口、支付模式和报价都没有确认。 +- 最容易踩的坑:看到旧教程就以为还能照常注册;当前入口状态、备用平台身份、预充值平台费和资金模式都可能与旧教程不同。 + - 当前状态:限定开放;2026-07-15 公开入口不能直接完成正式新注册:`https://admin.xunhupay.com/sign-up.html` 显示通道临时关闭并引导备用平台,`https://admin.dpweixin.com/sign-up.html` 显示迅虎支付关闭注册且该站点为备用平台,`https://v3.xunhupay.com/` 导航显示已满员;V3 官网仍在运营,但 2025-11-06 公告显示微信唤醒跳转支付和小程序支付临时关闭,开通时间另行通知,PC 二维码和截图扫码不受该公告影响。 - 平台类型:服务商 - 运营主体:重庆直数电子科技有限公司;接入协议把虎皮椒定义为其旗下支付平台,为商户提供微信支付、支付宝支付签约和支付接口的系统服务商。 @@ -56,6 +66,16 @@ ## XorPay +### 用户先看 + +- 能不能申请:官网 FAQ 声称支持个人、个体户和企业,当前入口也有注册选项;AI 生图额度、数字会员或虚拟权益能否进件,仍要看具体微信、支付宝或持牌通道的审核结果。 +- 需要准备:真实实名资料、网站和商品信息,以及对应通道要求的经营材料;登录后的完整进件字段目前没有公开复核记录。 +- 怎么收费:100 元开通费;月费分为 0、10、30、60 元;平台费分为 1.2%、1%、0.8%、0.6%;页面另称通道费 0.38%。提现、退款和拒付费用没有统一公开数字。 +- 多久能到账:FAQ 称微信 T+1 到同名银行卡、支付宝即时到签约支付宝账户;最低结算额没有公开统一数字。 +- 会员和自动续费:支持商户按月重新创建单次订单,但公开资料没有列出官方免密自动扣款产品。 +- 接入难度:中等。文档覆盖下单、查询、回调和退款,开发链路比通知监听方案完整,但仍要自行维护订单和会员状态。 +- 最容易踩的坑:只看到 0.6%-1.2% 平台费,漏掉 100 元开通费、月费、页面自述的通道费和平台费预充值;30 天无交易还可能被回收通道权限并重新收取开通费。 + - 当前状态:正常运营 - 平台类型:服务商 - 运营主体:无法确认;2026-07-15 已查首页、文档、FAQ 和协议仅见 XorPay.com、粤ICP备18047748号和联系方式,公开页未披露公司全称;备案主体和合同主体应以工信部查询、合同、签约页或书面回复为准。 diff --git a/tests/fxskill/test_payment_kb.py b/tests/fxskill/test_payment_kb.py index 9d1d1e5..1140663 100644 --- a/tests/fxskill/test_payment_kb.py +++ b/tests/fxskill/test_payment_kb.py @@ -83,6 +83,13 @@ } OPTIONAL_LABELS = ( + "能不能申请", + "需要准备", + "怎么收费", + "多久能到账", + "会员和自动续费", + "接入难度", + "最容易踩的坑", "运营主体", "限制商品", "单次支付", @@ -142,6 +149,21 @@ "R9 小报童不是网站支付 API", "R10 当前平台费用组成", ) +USER_DECISION_FIELDS = ( + "能不能申请", + "需要准备", + "怎么收费", + "多久能到账", + "会员和自动续费", + "接入难度", + "最容易踩的坑", +) +USER_DECISION_PROFILES = ( + ("payment-platform-cn-direct.md", "微信支付"), + ("payment-platform-cn-direct.md", "支付宝"), + ("payment-platform-cn-services.md", "虎皮椒"), + ("payment-platform-cn-services.md", "XorPay"), +) class PaymentKnowledgeBaseTests(unittest.TestCase): @@ -195,6 +217,38 @@ def parse_domestic_scenario_actions(self, heading): self.assertLessEqual(len(actions), 3, f"{heading} must keep at most three listed actions") return actions + def test_core_payment_profiles_put_user_decisions_before_audit_fields(self): + references = ROOT / "skills/fxskill/references" + + for filename, platform in USER_DECISION_PROFILES: + text = (references / filename).read_text("utf-8") + match = re.search( + rf"^## {re.escape(platform)}\s*$\n(?P
.*?)(?=^## |\Z)", + text, + re.MULTILINE | re.DOTALL, + ) + self.assertIsNotNone(match, f"missing profile for {platform}") + section = match.group("section") + audit_start = section.find("- 当前状态:") + self.assertGreaterEqual(audit_start, 0, f"{platform} missing audit profile") + decision_card = section[:audit_start] + self.assertIn("### 用户先看", decision_card, f"{platform} missing user decision card") + + positions = [] + for field in USER_DECISION_FIELDS: + marker = f"- {field}:" + self.assertIn(marker, decision_card, f"{platform} missing `{field}`") + positions.append(decision_card.index(marker)) + self.assertEqual(sorted(positions), positions, f"{platform} decision fields are out of order") + + def test_payment_recipe_keeps_audit_identity_out_of_default_answers(self): + text = (ROOT / "skills/fxskill/SKILL.md").read_text("utf-8") + + expected = "能不能申请 -> 需要准备 -> 怎么收费 -> 多久能到账 -> 会员和自动续费 -> 接入难度 -> 最容易踩的坑" + self.assertIn(expected, text) + self.assertIn("运营主体、合同主体和资金路径只作为内部核验字段", text) + self.assertIn("影响申请、收款、结算或售后追责", text) + def test_domestic_scenario_action_parser_rejects_fourth_action(self): original_parser = self.parse_domestic_scenario_sections try: @@ -303,7 +357,7 @@ def test_skill_payment_answer_contract_is_clear_by_default(self): "资料库深、回答浅", "先给一句明确结论", "再给 2-4 条真正影响选择的信息", - "优先费用、主体或类目条件、结算或最大未知", + "优先能否申请、所需材料、费用、到账、续费能力、接入难度或最大坑", "最后给最多三个按顺序的原子步骤", "不强制固定标题", "不默认输出完整成本卡或条件卡", From 7ed1c2ef294efc7dbb0419aa651f0034659577c4 Mon Sep 17 00:00:00 2001 From: ab18108289 <953995271@qq.com> Date: Thu, 16 Jul 2026 16:25:22 +0800 Subject: [PATCH 3/3] add beginner payment acceptance suite --- .../references/payment-research-backlog.md | 20 +- tests/fxskill/payment-user-acceptance.md | 362 ++++++++++++++++++ tests/fxskill/test_payment_kb.py | 55 +++ 3 files changed, 434 insertions(+), 3 deletions(-) create mode 100644 tests/fxskill/payment-user-acceptance.md diff --git a/skills/fxskill/references/payment-research-backlog.md b/skills/fxskill/references/payment-research-backlog.md index 4aa68e5..ceb880e 100644 --- a/skills/fxskill/references/payment-research-backlog.md +++ b/skills/fxskill/references/payment-research-backlog.md @@ -2,6 +2,14 @@ 这个文件只保存还没有被正式平台档案确认、但值得继续调查的问题。它不是平台列表,也不填充伪 TODO。 +## 当前用户验收优先级 + +20 个小白支付问题的首轮验收暴露了三个会直接卡住用户决策的缺口,下一轮只优先调查这些问题: + +1. 个体工商户做 AI 会员时,支付宝或微信哪条自动续费路线真实可申请。 +2. XorPay 是否接受 AI 生图额度、数字会员和虚拟权益类目。 +3. 支付宝 AI 网页应用收款对无 ICP 或不同服务器地区网站的实际材料要求。 + ## 固定模板 每个待核验条目都使用下面的固定格式: @@ -32,10 +40,16 @@ - 可接受证据:微信支付商户平台后台截图、产品权限申请结果、类目审核结果、签约页、合同、商户平台核准记录、官方页面、官方文档、邮件或书面回复中明确写出产品、主体、类目、费率和结算路径。 ### 支付宝 AI 网页订阅按量产品资格与费用 -- 缺失事实:尚未确认 AI 网页应用收款、AI 订阅 SaaS、AI 按量付费在 2026-07-15 对自然人、个体工商户和企业账号的正式签约资格、正式收单或签约主体、统一或报价费率、结算周期、最低结算额和 AI 图像/视频额度类目要求。 +- 缺失事实:尚未确认 AI 网页应用收款、AI 订阅 SaaS、AI 按量付费在 2026-07-15 对自然人、个体工商户和企业账号的正式签约资格、正式收单或签约主体、统一或报价费率、结算周期、最低结算额和 AI 图像/视频额度类目要求,也未确认 AI 网页应用收款对无 ICP 或不同服务器地区网站的实际材料要求。 - 已查来源:2026-07-15 已检查支付宝官网 AI 支付概览、AI 网页应用收款页、AI 网页接入指南、AI 订阅 SaaS 页、AI 订阅产品介绍、AI 按量付费页、AI 按量接入指南、开放平台网页/移动应用页脚主体、商家平台传统网页收款入口和 2017 电脑网站支付旧文档。 -- 需要询问:支付宝 AI 支付或商家平台业务人员能否分别确认自然人、个体工商户和企业账号接入 AI 网页应用收款、AI 订阅 SaaS、AI 按量付费时的正式签约资格、签约主体、费率、结算周期、最低结算额和 AI 图像/视频额度类目要求? -- 可接受证据:支付宝官方页面、产品文档、签约页、商家平台后台截图、申请结果、报价单、合同、邮件或书面回复中明确写出产品、账号类型、主体、类目、费率、结算周期、最低结算额和结算账户。 +- 需要询问:支付宝 AI 支付或商家平台业务人员能否分别确认自然人、个体工商户和企业账号接入 AI 网页应用收款、AI 订阅 SaaS、AI 按量付费时的正式签约资格、签约主体、费率、结算周期、最低结算额、AI 图像/视频额度类目要求,以及 AI 网页应用收款对 ICP 和服务器地区的材料要求? +- 可接受证据:支付宝官方页面、产品文档、签约页、商家平台后台截图、申请结果、报价单、合同、邮件或书面回复中明确写出产品、账号类型、主体、类目、费率、结算周期、最低结算额、结算账户和网站材料要求。 + +### 个体工商户 AI 会员自动续费准入 +- 缺失事实:尚未确认中国大陆个体工商户销售 AI 生图会员时,能否正式申请支付宝 AI 订阅 SaaS、微信支付免密服务或其他官方自动续费产品,以及对应类目、材料、费率、扣款周期和结算规则。 +- 已查来源:2026-07-15 已检查支付宝 AI 订阅 SaaS 产品介绍和接入文档、微信支付免密服务规则;支付宝文档当前指向企业账号,微信公开规则未给出本场景的个体工商户准入结论。 +- 需要询问:支付宝 AI 支付和微信支付产品审核团队能否分别书面确认中国大陆个体工商户销售 AI 生图会员时可申请哪些自动续费或免密产品,以及对应主体、类目、材料、费率、扣款周期和结算规则? +- 可接受证据:支付宝或微信支付官方页面、产品文档、商户后台权限截图、产品申请结果、类目审核结果、签约页、报价单、合同、邮件或书面回复中明确写出主体、产品、类目、材料、费率、扣款和结算规则。 ### 银联小商户和 AI 数字内容现实入网路径 - 缺失事实:尚未确认中国大陆小商户、个体工商户或 AI/数字内容网站通过哪类收单机构可以实际入网银联在线网关支付、企业网银支付或云闪付远程支付,以及对应 MCC、费率、结算账户、结算周期和最低结算额。 diff --git a/tests/fxskill/payment-user-acceptance.md b/tests/fxskill/payment-user-acceptance.md new file mode 100644 index 0000000..957be95 --- /dev/null +++ b/tests/fxskill/payment-user-acceptance.md @@ -0,0 +1,362 @@ +# 支付模块小白实战验收 + +这 20 题用于检查回答是否具体、简短、能帮助用户马上做决定。`PASS` 表示现有资料足以给出可用回答;`GAP` 表示回答路径成立,但关键平台事实仍需补证据。 + +## 验收摘要 + +- 17 题 `PASS`,3 题 `GAP`。 +- 三个缺口分别是:个体工商户自动续费准入、XorPay 的 AI 积分类目、无 ICP 时支付宝 AI 网页应用收款的实际材料要求。 +- 所有参考短答均不超过 450 字;当前最长 173 字。 + +## P01 自然人第一次卖 AI 生图额度 + +**问题** + +我是中国大陆自然人,没有营业执照,想在 AI 生图网站卖 19 元额度包,第一步怎么收款? + +**参考短答** + +```text +结论:当前第一条核验路线是支付宝 AI 网页应用收款,而不是先办理执照或接第三方聚合平台。这个产品公开支持个人开发者场景,但你的生图额度类目、费率和到账规则仍由申请后台决定。 + +1. 提交当前支付宝账号、网站和额度包资料。 +2. 仅当后台显示可开通且费用能接受时完成签约。 +3. 后台明确不支持自然人但允许个体工商户时,再办理个体工商户。 +``` + +- 状态:PASS +- 资料缺口:自然人销售 AI 生图额度的实际通过率、核准费率和到账周期尚无当前实践记录。 + +## P02 个体工商户接 AI 网站支付 + +**问题** + +我已经有个体工商户,AI 生图网站主要面向国内,应该先接哪个支付? + +**参考短答** + +```text +结论:先走支付宝 AI 网页应用收款的官方申请入口,它与 AI 网站场景最贴近;是否能卖生图额度仍看类目审核。需要准备营业执照、经营者支付宝账号、可访问的网站和真实商品说明,公开页面没有统一费率与到账周期。 + +1. 提交支付宝 AI 网页应用收款申请。 +2. 仅当审核通过时接入单次支付。 +3. 用户确实需要微信扫码时,再申请微信 Native。 +``` + +- 状态:PASS +- 资料缺口:个体工商户销售 AI 图像额度的支付宝类目和核准费率尚未取得后台样本。 + +## P03 企业卖单次 AI 月度会员 + +**问题** + +我是企业,卖 99 元 AI 月度会员,但每个月由用户手动购买,先用什么? + +**参考短答** + +```text +结论:先按单次商品接支付宝 AI 网页应用收款,不需要为了“月度会员”先做自动续费。用户付款后给 30 天权限即可;自动扣款是另一套产品和审核。 + +材料重点是企业支付宝账号、营业执照、网站、会员权益和退款说明。费率与到账周期没有统一公开数字,以申请后台为准。 + +1. 把会员定义为一次性购买 30 天访问权。 +2. 提交 AI 网页应用收款申请。 +``` + +- 状态:PASS +- 资料缺口:企业 AI 会员类目的实际核准费率和结算周期尚缺申请结果。 + +## P04 个体户能不能用微信 H5 + +**问题** + +我有个体工商户,用户都在手机浏览器付款,能直接接微信 H5 吗? + +**参考短答** + +```text +结论:当前公开准入不支持个体工商户和小微商户申请微信 H5,所以不要把它当主路线。手机浏览器可先核验支付宝网页收款;微信付款可按实际访问场景考虑桌面二维码或微信内 JSAPI,但都要分别申请权限。 + +微信 H5 还要求支付域名、ICP备案和经营页面材料。这里的卡点是主体资格,不是代码。 +``` + +- 状态:PASS +- 资料缺口:无;当前结论仅限已核验的微信 H5 公开准入范围。 + +## P05 微信内网页怎么收款 + +**问题** + +用户从公众号菜单打开我的 AI 网站,微信里怎么付款? + +**参考短答** + +```text +结论:微信内网页对应 JSAPI,不是 H5。你需要可申请该产品的商户主体、已认证并绑定的 APPID、商户号,以及通过审核的网站和商品类目。 + +接入时至少要完成下单、微信内调起、支付回调和查单。AI 生图额度属于哪个行业类目还没有统一公开答案,先看商户后台的类目审核结果。 +``` + +- 状态:PASS +- 资料缺口:AI 生图额度在微信 JSAPI 下的准确行业类目、费率和特殊资质尚未确认。 + +## P06 个人能不能直接接支付宝 + +**问题** + +我只是个人,没有公司,支付宝现在真的能接 AI 网站吗? + +**参考短答** + +```text +结论:可以先申请,但不能理解成所有支付宝网站支付都支持个人。当前明确支持个人开发者的是“AI 网页应用收款”这一具体产品,最终能否开通取决于账号、网站和商品类目审核。 + +先提交真实网站和商品资料;后台通过后再签约。公开页面没有给个人场景统一费率、最低结算额和到账周期。 +``` + +- 状态:PASS +- 资料缺口:个人 AI 网页应用收款的当前后台费率、结算和真实通过率仍缺样本。 + +## P07 个体户做每月自动续费 + +**问题** + +我是个体工商户,AI 生图网站想做每月自动续费会员,该接什么? + +**参考短答** + +```text +结论:目前不能给个体工商户一个已确认可开的自动续费平台。支付宝 AI 订阅文档当前指向企业账号;微信自动续费也不是普通支付自带能力,需要单独申请免密权限。 + +现阶段先把会员做成用户每 30 天主动购买一次,避免业务卡在续费权限上。自动扣款必须等具体账号取得产品权限后再上线。 +``` + +- 状态:GAP +- 资料缺口:支付宝和微信对个体工商户 AI 会员自动续费的实际准入、费率和审核材料尚未确认。 + +## P08 不自动扣款的月度会员 + +**问题** + +如果用户每个月自己点付款,不自动续费,是不是容易很多? + +**参考短答** + +```text +结论:是,手动续费就是普通单次支付,申请和开发都比免密自动扣款简单。把商品写成“购买后获得 30 天会员”,到期后由用户重新付款即可。 + +你仍要处理订单回调、会员到期时间和退款,但不需要申请自动续费权限。平台选择继续按主体、网页场景和商品类目判断。 +``` + +- 状态:PASS +- 资料缺口:无;具体平台费率和类目仍以所选产品申请结果为准。 + +## P09 XorPay 到底收多少钱 + +**问题** + +XorPay 费用到底怎么算?别只告诉我一个百分比。 + +**参考短答** + +```text +结论:XorPay 不是只收一层手续费。当前公开费用包括 100 元开通费、每月 0/10/30/60 元套餐费、1.2%/1%/0.8%/0.6% 平台费;页面还声称通道费为 0.38%,这不是微信或支付宝官方统一费率。 + +平台费需要预充值。提现费、退款费、拒付费和最低结算额没有统一公开数字,所以现在不能算出完整到手成本。 +``` + +- 状态:PASS +- 资料缺口:XorPay 提现、退款、拒付和最低结算额缺少公开统一口径。 + +## P10 XorPay 多久到账 + +**问题** + +XorPay 收的钱多久到我银行卡? + +**参考短答** + +```text +结论:按 XorPay FAQ 的当前口径,微信款 T+1 到同名银行卡,支付宝款即时到签约支付宝账户;平台声称不先收走你的交易款。 + +最低结算额没有公开统一数字,实际账户采用哪个通道也会影响到账方式。正式使用前,以申请后台显示的结算账户和周期为准。 +``` + +- 状态:PASS +- 资料缺口:最低结算额以及不同进件通道的实际到账样本尚未取得。 + +## P11 XorPay 能不能卖 AI 积分 + +**问题** + +XorPay 支持个体户,那我卖 AI 生图积分肯定能过吗? + +**参考短答** + +```text +结论:不能这样判断。XorPay 官网声称支持个体户,只代表主体可以提交申请,不代表 AI 生图积分这个商品类目一定通过微信、支付宝或其他通道审核。 + +当前可以把 XorPay 当候选,但不能直接作为已确认主支付。申请时要提交真实网站、积分用途、交付方式和退款说明,最终看具体通道的进件结果。 +``` + +- 状态:GAP +- 资料缺口:XorPay 对 AI 生图额度、数字会员和虚拟权益的实际进件结果与书面费率尚未取得。 + +## P12 虎皮椒现在还能不能注册 + +**问题** + +网上很多教程推荐虎皮椒,我现在还能直接注册吗? + +**参考短答** + +```text +结论:截至 2026-07-15,不能把虎皮椒当作可直接注册的新用户方案。主注册页显示通道临时关闭并引导备用平台,备用页显示关闭注册,V3 页面还显示已满员。 + +旧教程的注册流程和费用已经不能直接照搬。在备用平台的开放状态、收费和到账模式重新确认前,先走支付宝或微信的官方申请入口。 +``` + +- 状态:PASS +- 资料缺口:虎皮椒备用平台当前是否真正开放、采用什么支付模式和收费规则尚未确认。 + +## P13 虎皮椒现在要多少钱 + +**问题** + +虎皮椒是不是只收 1% 手续费? + +**参考短答** + +```text +结论:不是。公开页面同时出现 1%-2% 平台费、页面自述的 0.38%-0.6% 通道费,以及微信 118 元、支付宝 88 元等开户费;部分行业还有更高费率或保证金口径。 + +这些页面存在冲突,不能简单相加成确定总价。更关键的是当前新注册入口不可直接使用,所以价格比较暂时没有实际意义。 +``` + +- 状态:PASS +- 资料缺口:备用平台的当前报价、余额处理和完整费用尚未确认。 + +## P14 虎皮椒和 XorPay 二选一 + +**问题** + +个体户 AI 生图网站,虎皮椒和 XorPay 选哪个做主支付? + +**参考短答** + +```text +结论:目前两者都不适合直接定为主支付。虎皮椒的新注册入口不可直接使用,支付模式也有冲突;XorPay 虽可注册且费用较透明,但 AI 生图额度能否进件尚未确认。 + +当前先走支付宝 AI 网页应用收款或微信 Native 的官方申请入口。XorPay 只保留为审核通过后的备选,虎皮椒暂不进入实施路线。 +``` + +- 状态:PASS +- 资料缺口:XorPay AI 类目进件结果与虎皮椒备用平台状态仍待补证据。 + +## P15 官方直连还是第三方聚合 + +**问题** + +我不懂技术,为什么不直接用第三方,非要看支付宝微信官方? + +**参考短答** + +```text +结论:不是必须官方直连,而是先看官方能否满足你,再决定要不要为省开发付第三方服务费。官方通常少一层平台费用,但接入更复杂;第三方接口更统一,却可能增加开户费、月费、平台费和类目不确定性。 + +小额验证可以比较第三方,长期主支付优先选择资金直接结算、费用说清楚、类目已通过的路线。 +``` + +- 状态:PASS +- 资料缺口:缺少同类 AI 网站在 2026 年使用各服务商的稳定性和售后体验记录。 + +## P16 Vibe Coding 网站接支付难不难 + +**问题** + +我的网站是 Vibe Coding 做的,不会写后端,接支付到底难不难? + +**参考短答** + +```text +结论:真正难的不是做一个付款按钮,而是后端确认订单后只给一次额度。官方微信支付接入偏难,需要证书、签名、回调和查单;XorPay 等服务商接口更简单,但仍然需要可长期运行的后端和订单数据库。 + +如果现在只有纯前端页面,当前卡点是缺少可长期运行的服务端支付接口和订单表;支付密钥也只能放在服务端。 +``` + +- 状态:PASS +- 资料缺口:缺少针对常见 Vibe Coding 技术栈的现成支付模板与维护成本对比。 + +## P17 付款后自动增加积分 + +**问题** + +用户付款后,怎么让 AI 网站自动增加 100 点积分? + +**参考短答** + +```text +结论:最小链路是“创建订单、用户付款、服务端收到支付结果、订单确认后增加积分”,不能让前端页面自己判断付款成功。 + +1. 在服务端保存订单号、用户和应加积分。 +2. 收到平台回调后核对订单状态。 +3. 仅在订单第一次确认成功时增加积分。 + +支付平台至少要提供下单、回调和查单接口;XorPay 与官方微信、支付宝都具备这类基础能力。 +``` + +- 状态:PASS +- 资料缺口:无;具体代码实现取决于用户的后端技术栈。 + +## P18 用户退款后积分怎么办 + +**问题** + +用户买了积分又退款,我的网站应该怎么处理? + +**参考短答** + +```text +结论:退款和积分必须放在同一条售后流程里,否则会出现钱退了、积分还在。最实用的规则是:未使用积分可退款并回收;已使用部分按你公开的退款规则处理,不能等发生投诉才临时决定。 + +1. 记录每笔购买对应的积分和消耗量。 +2. 后台发起退款时同步冻结或扣回对应积分。 +3. 保存退款结果与订单状态。 +``` + +- 状态:PASS +- 资料缺口:各平台是否额外收退款费仍需按具体签约产品确认。 + +## P19 没有 ICP 备案能不能收款 + +**问题** + +我的域名还没有 ICP 备案,能先接国内支付测试吗? + +**参考短答** + +```text +结论:不能一概说可以。微信 H5 明确需要支付域名和 ICP 材料;传统支付宝电脑网站支付也通常要求备案。支付宝 AI 网页应用收款应以当前申请页实际要求为准,不能预先保证免备案。 + +如果网站放在中国大陆服务器,网站上线本身也涉及备案。当前最省时间的做法是先完成可访问的商品和退款页面,再按目标支付产品核对材料。 +``` + +- 状态:GAP +- 资料缺口:支付宝 AI 网页应用收款对不同部署地区网站的当前 ICP 材料要求尚未取得后台样本。 + +## P20 支付申请被拒怎么办 + +**问题** + +支付宝或微信审核没通过,我是不是换个平台就行? + +**参考短答** + +```text +结论:随机换平台通常解决不了审核拒绝;同一个主体、类目或网站问题,换到服务商仍可能被底层通道拒绝。 + +对应处理只有三类:主体不支持时评估个体工商户;自动续费不支持时改为主动购买 30 天会员;网站材料不完整时补真实商品、交付和退款页面。虎皮椒当前也不是可直接使用的替代入口。 +``` + +- 状态:PASS +- 资料缺口:缺少微信、支付宝针对 AI 生图网站常见拒绝原因的当前真实申请样本。 diff --git a/tests/fxskill/test_payment_kb.py b/tests/fxskill/test_payment_kb.py index 1140663..0a3a774 100644 --- a/tests/fxskill/test_payment_kb.py +++ b/tests/fxskill/test_payment_kb.py @@ -164,6 +164,22 @@ ("payment-platform-cn-services.md", "虎皮椒"), ("payment-platform-cn-services.md", "XorPay"), ) +PAYMENT_USER_ACCEPTANCE_CASE_IDS = tuple(f"P{index:02d}" for index in range(1, 21)) +PAYMENT_USER_ACCEPTANCE_TOPICS = ( + "自然人", + "个体工商户", + "自动续费", + "H5", + "JSAPI", + "XorPay", + "虎皮椒", + "费用", + "到账", + "ICP", + "回调", + "退款", + "Vibe Coding", +) class PaymentKnowledgeBaseTests(unittest.TestCase): @@ -249,6 +265,45 @@ def test_payment_recipe_keeps_audit_identity_out_of_default_answers(self): self.assertIn("运营主体、合同主体和资金路径只作为内部核验字段", text) self.assertIn("影响申请、收款、结算或售后追责", text) + def test_twenty_beginner_payment_answers_are_concrete_and_short(self): + path = ROOT / "tests/fxskill/payment-user-acceptance.md" + self.assertTrue(path.exists(), "missing payment user acceptance results") + text = path.read_text("utf-8") + matches = list( + re.finditer( + r"^## (?PP\d{2}) .+?\n(?P
.*?)(?=^## P\d{2} |\Z)", + text, + re.MULTILINE | re.DOTALL, + ) + ) + self.assertEqual(PAYMENT_USER_ACCEPTANCE_CASE_IDS, tuple(match.group("id") for match in matches)) + + for topic in PAYMENT_USER_ACCEPTANCE_TOPICS: + self.assertIn(topic, text) + + for match in matches: + case_id = match.group("id") + section = match.group("section") + answer_match = re.search(r"\*\*参考短答\*\*\s*\n\n```text\n(?P.*?)\n```", section, re.DOTALL) + self.assertIsNotNone(answer_match, f"{case_id} missing reference answer") + answer = answer_match.group("answer").strip() + self.assertTrue(answer.startswith("结论:"), f"{case_id} must lead with a conclusion") + self.assertLessEqual(len(answer), 450, f"{case_id} answer is too long") + self.assertLessEqual( + len(re.findall(r"^\d+\. ", answer, re.MULTILINE)), + 3, + f"{case_id} has more than three actions", + ) + self.assertNotIn("请联系客服", answer, f"{case_id} falls back to customer-service language") + self.assertNotIn("合同主体", answer, f"{case_id} exposes an internal audit field") + + status_match = re.search(r"^- 状态:(PASS|GAP)$", section, re.MULTILINE) + self.assertIsNotNone(status_match, f"{case_id} missing PASS/GAP status") + gap_match = re.search(r"^- 资料缺口:(.+)$", section, re.MULTILINE) + self.assertIsNotNone(gap_match, f"{case_id} missing gap assessment") + if status_match.group(1) == "GAP": + self.assertNotEqual("无", gap_match.group(1).strip(), f"{case_id} GAP needs a concrete gap") + def test_domestic_scenario_action_parser_rejects_fourth_action(self): original_parser = self.parse_domestic_scenario_sections try: