XD-OP-10 · DOC

更新日志与变更公告

主版本内只增不改:不删除、不改名、不改语义。本篇记录每次资料与接口口径变更,当前状态以最新条目为准。

小豆支付开放平台是面向已有自有系统的商家的支付接入服务:通过服务器对服务器的接口,把支付宝与微信收款接进商家自己的系统,并以签名事件通知回传支付状态;资金由持牌支付公司收付结算。个人也能申请:主体类型选「个人」,身份证 + 本人银行卡即可完成商户进件。央行持牌机构清算,安全可靠的个人和企业支付接口。

1. 版本策略(先读这一段)

规则说明
路径内带版本接口路径里的 v1 是主版本;主版本内只增不改
字段只增主版本内不删除、不改名、不改语义;新字段一律可选
不兼容变更必须升 v2 并与 v1 平行运行至少一个公告周期(先公告、后下线)
公告先行任何影响商家代码的变更,先发公告,再改行为
同源发布每次发版在本文档「更新日志」+「公开发布页」两处同源发布,公告正文只有一份(见 releases/);门户公告位当前未启用(平台侧「不投」口径已结项,启用时另行通知)

你要做的:对 code 与字段做宽松解析(多字段不报错),对新增枚举值做兼容分支;这样主版本内的变更不会打断你。

2. 当前版本

项值
skillVersion见 undefined(本资料与 API 合同同版本;随公开仓提供,不在门户下载包内)
API 主版本v1
签名规范XD-Signature-v1 / XD-Response-v1 / XD-Webhook-v1
本版本公告正文undefined(随公开仓提供,不在门户下载包内)

3. 更新日志

v1.0.0

资料(2026-10-17):官网文档中心入口

公开面(README / llms.txt)新增官网文档中心入口:全部 14 篇文档逐篇成页,并提供文档包与 Skill 包的在线下载。接口、字段、签名与文档正文口径不变;官网与公开仓同源(同一 contentHash,以 MANIFEST.json 为准)。公开仓已于 2026-10-17 重推(单树快照 176cf22d…,GitHub 与 Gitee 两侧同值);下载页通道状态随之恢复 DELIVERED。

迁移动作:无需迁移。

变更(2026-10-17):微信 JSAPI 与比例分账口径开放(无接口行为变更)

本轮为对外口径修正(接口、字段与路径不变),把已经具备的能力按现役实现写清楚:

  • 微信 JSAPI 已开放:买家在微信内打开收银页即可调起微信支付;仅限微信内浏览器——微信外手机浏览器与商家 App 内没有「直接拉起」形态;桌面微信内置浏览器同样按微信内链路处理,若无法完成支付请改用手机微信打开同一链接。其他通道或交易形态的放行仍以对接人确认为准(平台侧无自助查询面)。
  • 比例分账已支持:收款方式为三种——SINGLE(单账号全额)、ROUND_ROBIN(按顺序轮流)、RATIO(比例分账)。比例分账为 2–4 个参与账号,配置面每项 0 < shareBps < 10000、合计恒为 10000bps;RENORMALIZE 后单笔生效腿可只剩 1 条、达到 10000bps。查询接口只读返回配置面的 ratios 快照,写面仍在商家后台。
  • 历史条目保留原日期与事件;涉及旧状态句的条目已按本条更新,当前状态以本篇最新条目为准。

迁移动作:无需迁移(只改资料表述,不改接口行为)。

新增

  • 支付宝官方收款码面向商家下发:下单响应新增 qrCode 字段(仅支付宝渠道、服务端校验官方前缀后下发),商家可在自有 PC 页面直接渲染官方收款码,与平台收银页同形。
  • 下发语义:只有下发响应有效;查询接口恒为 null;需要新码走重拉起端点(新尝试=新码)。
  • 覆盖三个端点:创建订单(下发)、重拉起(换新码)、查询(恒空)。
  • 收银页终端分端能力:同一收银 URL 按终端分派——PC 渲染二维码;手机浏览器(微信外)支付宝单给手势主按钮「打开支付宝」(渲染顺序=二维码 → 主按钮 → 按钮下的兜底说明,三样都在买家手势之前已渲染;无手势的自动跳转已被真机证伪,不再采用);手机微信内支付宝单不自动跳转(只给复制链接引导)。
  • 微信支付「免手点」:手机微信内进入收银页即自动完成授权并调起支付面板,买家无需先点一次按钮。
  • 手机微信外推荐路径:微信支付单在手机微信外给出可执行的一键引导(复制链接并打开微信 + 三步说明 + 如实兜底),逐字文案见 收银页对接 · 第 4 节。

明确不支持(不要按这些形态设计)

  • 微信没有「正扫」形态:微信的 PC 扫码本质是中转链(二维码 → 手机微信内 → 页面调起)。
  • 手机浏览器(微信外)没有「直接拉起微信支付」形态。
  • 商家的自有 App 不得用 WebView 内嵌打开收银页(必须跳系统浏览器)。

迁移动作:无需迁移。本次为只增不改:新字段 qrCode 为可选,旧解析逻辑不受影响;收银页行为变化只作用于买家侧体验,商家的服务端对接无需改动。

变更(2026-10-14):收款金额限额按主体类型判定(无接口、字段或路径变更)

平台默认限额档从「全类型一档」改为按本单实际到账账号的主体类型判定:

  • 对公主体(个体工商户 / 企业):不设平台业务金额上限,实际以支付服务方额度为准;
  • 个人主体:维持平台默认档;平台为你单独约定过的档位(如有)仍优先于默认档。

你要不要改代码:不需要。请求/响应字段、错误码与判定顺序都不变——你原本就该同时处理 400 OPEN_API_BODY_INVALID(单笔金额超出本单生效上限,details.field=amountFen)与 422 OPEN_API_LIMIT_EXCEEDED(触发面在 details)。不要用试探下单去摸限额边界。资料侧同步:API 参考 §2.8 的 amountFen 不再写死单一数字,改为按主体类型表述;费率与限额 补主体分档表与各触发面的适用主体;待支付订单数 / 未关闭支付尝试数 两类敞口防线与主体无关,照常生效。

迁移动作:无需迁移。

变更(2026-10-14):新增「到账账号与收款分配」只读查询端点(第 14 篇)

商家签名 API 新增一个只读端点:GET /api/open/v1/settlement/accounts——返回你的到账账号列表(主体名称、商户号、银行名、银行卡尾号 4 位)与当前收款分配(收款方式、参与账号与顺序)。

  • 只读:收款方式(哪些账号参与收款、顺序、单账号目标、不可用时的策略)的唯一设置入口是商家后台的「店铺设置 → 到账账号」页;本端点不接受任何写参数,也没有请求体。
  • 一单一结、随单冻结:分配规则改动只影响之后新建的订单;退款按原订单冻结的分配快照发起回退(实际到账路径以支付服务方原交易与分账合同为准)。
  • 比例分账已支持(2026-10-17 起按现役实现表述):SINGLE / ROUND_ROBIN / RATIO 三种方式;RATIO 为 2–4 个参与账号、配置面每项 0 < shareBps < 10000、合计 10000bps;RENORMALIZE 后生效腿可只剩 1 条。ratios 为配置面快照,不是每单实时重算。
  • 字段口径与分配边界见 到账账号与收款分配 与 API 参考 §2.7。

你要不要改代码:不需要。新增端点不触碰既有端点、字段与错误码(主版本内只增不改);想在自有后台展示「钱进了哪个账户、按什么规则分」的商家可以直接接入。

迁移动作:无需迁移。

变更(2026-10-13):新增「易支付协议兼容接入」面(第 13 篇)

给系统里已装「易支付 / 彩虹支付」类插件的商家新增一条协议兼容接入面:在商家后台「易支付接口配置」页开通后,把页面给的网关地址 / 商家 ID / 商户密钥填进插件即可,不用改你系统的代码;资金仍走持牌支付公司、进你自己在该支付公司开的结算账户(与「免签 / 第四方代收」不是一回事)。

  • 支持支付宝(买家扫收银页上的码付款);微信 JSAPI 已开放(仅微信内打开收银页可调起;微信外手机浏览器与商家 App 内没有直接拉起形态;2026-10-17 起按本条口径);QQ 钱包不支持。
  • 兼容该协议的多种接口:submit.php(表单提交收单)与 mapi.php(程序化收单)两个建单入口、api.php 查询(act=order / act=query)——插件原来用哪个入口,就还按哪个入口发。
  • 异步通知、同步回跳与主动查询按该协议惯例走;退款不在这个面上——走商家后台「成交订单」或退款与对账那条链。
  • 参数、签名规则与支持范围见 易支付协议兼容接入。

你要不要改代码:不需要。这是新增的可选接入面,不影响 /api/open/v1 的任何既有行为。

迁移动作:无需迁移。

变更(2026-10-12):接入资料可用性勘正(第二批,无合同变更)

在第一轮勘正后又做了一轮可用性复查(文档 / Skill / 示例 / 演示 / 公开索引全量核对),修正以下引用与口径,不涉及接口、字段或平台行为变化:

  • 门户页面名与按钮名对齐:资料获取指引统一指向「开发者文档」页的「下载文档包」/「下载接入包(含示例与 Skill)」;费用与结算口径指向「费率说明」页与「资金 / 结算」页;
  • docs/08 对账与 UNKNOWN 收敛骨架里的查询端点补全 /api/open/v1 前缀;
  • docs/03 查单要点与重拉起端点口径对齐:需要新收款材料只走重拉起;业务幂等重放只返回当前快照;
  • Skill 包内 demo/ 相关自测命令补注「demo 不在『下载接入包』内」;examples/README.md 注明其 ../docs/… 链接在接入包形态下取不到。

迁移动作:无需迁移。

变更(2026-10-12):接入资料勘正批(无合同变更)

对文档与 Skill 包做了六处表述与示例修正,不涉及接口、字段或平台行为变化:

  • Skill 的端点表与最小建单体统一为完整路径(<BASE_URL>/api/open/v1/...)——接入地址是纯 host(不含路径),此前 Skill 片段里的裸路径会拼出错误地址;
  • Skill 明确域名归属验证为可选(不影响开通与收款),与文档口径对齐;
  • Skill 区分两层幂等重放:同 X-XD-Request-Id 重发返回的是首次响应原件(不是当前状态);业务级重放(响应含 replayed=true)返回当前快照。拿当前状态一律走查单;
  • 事件验签参考实现(examples/node/verify_webhook.js)改为「去重与业务同一事务提交」的骨架,修正异步存储下会丢事件、并发投递会重复处理的写法;
  • 示例自检/运行命令改为在包含 examples/ 的目录执行(公开仓根与解包后的 Skill 包根都直接可用);
  • 文档中标明 examples/、demo/、MANIFEST.json 与公告正文不在「下载文档包」内(用「下载接入包」或公开仓取)。

迁移动作:无需迁移。若你已按旧版 Skill 生成过代码,建议核对两处:端点路径前缀(/api/open/v1)与 webhook 落账的去重写法(去重行与业务同一事务)。

变更(2026-10-12):webhook 首次投递提速与表述勘正(无合同变更)

平台 webhook 投递调度已提速至 10 秒级(此前为每分钟粒度);webhook 验签与投递 与 Skill 中「首次即时」的表述同步勘正为「首次不等待退避间隔、由平台调度即时发出〔秒级窗口,当前线上通常 10 秒内〕」——它只表示第 1 次投递不排队等待退避间隔,不是「落库即刻推送」。共投递 8 次的总数、1m/5m/15m/1h/6h/24h/48h 退避档位、超时 10 秒与响应体 64KB 上限均不变;商家侧仍是「同一事件至多 8 次投递、以 eventId 判重」。

迁移动作:无需迁移。若你的对接文档里写过「首次即时=即时送达」,建议按上面的准确口径改写。

变更(2026-10-04):应用配置变更改为提交即生效(不再人工审核)

产品负责人拍板:配置变更全部自动审核,平台侧只做记录。原来是「提交 → 平台人工审核 → 通过后生效」,现在改为:

  • 提交时仍需短信二次验证(敏感操作保护不变),随后平台自动校验(经营范围至少一项、至少一条域名、回调地址为申报域名下的绝对 HTTPS 精确 path);
  • 校验通过即时生效(写回你的应用配置)——没有等待期,提交成功后立即按新配置产生事件通知;
  • 门户「应用配置变更」页可随时发起下一次变更(提交即生效,各自留档);
  • 历史上处于「审核中」的旧记录已不再产生:下次提交会自动取代它(该记录转为「已被取代」状态,不影响新提交)。

迁移动作:无需迁移;API 合同零改动(无字段、错误码、请求头变化)。若你的上线检查表里写着「提交后等平台审核」,可以删掉这句——提交成功即已生效。

变更(2026-10-04):密钥标识(kid)格式与获取方式说明补全(文档勘误,无 API 改动)

真实 kid 格式一直是 mkid_ + 16 位小写十六进制(共 21 字符),由平台在你上传公钥时按公钥指纹派生并回显——kid 从不预先发放。此前资料中的示例值(如 kid_20260926)容易让人误以为 kid 以 kid_ 开头、且是一个需要"找"的既有值,已全部勘误。同时新增 kid 本地派生公式(kid = "mkid_" + SHA-256(规范化 SPKI PEM 文本)[前 16 位十六进制]),集成方可以自行计算、无需向平台索取——详见 凭证与密钥管理 · 1.1。另提醒:门户「应用凭证」页同时展示你的商户公钥 kid 与平台的平台公钥 kid,签名请求头只填前者。

迁移动作:无需迁移,API 合同零改动(无新增/删除任何字段、错误码或请求头)。

变更(2026-09-28):来源 IP 校验可自助开启/关闭

原来只能由平台侧调整的「来源 IP 校验」开关,现在由你自己在门户掌握(产品负责人决定):

  • 门户「IP 白名单」页新增自助开关:关闭/开启都需短信二次验证,平台全程留痕;
  • 关闭不动清单:白名单条目原样保留(不会因为关掉校验而丢),重新开启是一键的事;
  • 开启前必须有条目:空清单上开启等于把所有调用打成 403,平台会拒绝这个动作并提示你先加条目——这是「先配置再武装」,不是限制;
  • 关闭之后,来源校验那一层的 403 OPEN_API_SOURCE_IP_REJECTED(应用白名单腿)不会再出现;平台边缘腿(对端地址判定)不受本开关影响,恒定生效。

迁移动作:无需迁移,API 合同零改动(没有新增/删除任何商家 API 字段与错误码)。若你的接入文档或运维手册里写着「白名单关闭须联系平台审核」,可以删掉这句;如果我们此前给过你「出口 IP 必须固定」的运维约定,现在多了一个自助选项,但仍然建议保持开启:密钥一旦外泄,它是签名之外唯一还挡在前面的东西。

变更(2026-09-28):开通申请判据简化(信用与域名核验不再是判据)

产品负责人拍板「简化开通申请,已经有商户号的卖家基本都能通过」,一键申请的自动审核判据由 5 条降为 3 条(判据版本 openapi-auto-review-v3):

判据状态
商家状态(在营中)保留
协议与同意书签署保留
经营范围申报保留
~~信用与争议记录~~已退役——新卖家本就没有信用记录,原判据对每一位新卖家都恒为「数据缺失」转人工;商家被停用/冻结等处置态仍由「商家状态」拦下
~~申报域名归属验证~~已退役——域名由你自己填写,平台不做核验;核验保留为门户里的可选自助,建议完成(归属更明确),但不核验也能开通
  • 三项判据齐备即自动开通,不再因为「没有信用记录」「域名没验证」转人工;
  • 域名归属从来不是运行时访问控制:平台不会因为域名未验证而拒绝你的支付或回调;
  • 已有的历史申请记录不受影响(历史判据结果原样保留);历史申请的判据名仍可能显示为已退役的英文标识(如 SVIP_VALID),那是历史事实的照实呈现。

迁移动作:无需迁移。若你的接入文档/代码里写着「必须先完成域名归属验证才能开通」「没有信用记录会被转人工」,请一并删除该前置描述。

变更(2026-09-27):不再要求 SVIP 资格

开放平台整条线不再以会员等级(SVIP)为判据(产品负责人决定):

  • 应用一键申请的自动审核不再因非 SVIP 转人工(判据版本 openapi-auto-review-v2);
  • 商家 API 的新增下单与重拉起不再要求 SVIP——原来的「SVIP 资格」403 拒绝码已从错误码总表移除(若你的代码里有它的分支,可以删掉;保留也不会再被触发);
  • 已有的历史申请记录不受影响(历史判据结果原样保留);商家准入仍要求商家状态 ACTIVE 且未被风控冻结。

迁移动作:无需迁移。若你的接入文档/代码里写着"需要 SVIP",请一并删除该前置描述。

文档修订(2026-09-27)

本轮为对齐线上实际行为的资料修订(无接口行为变更,接口侧唯一一处见下),要点:

  • 关单 / 重拉起:明确这两个端点无请求体字段,但仍必须带 Content-Type: application/json(接口侧同步修正为「空请求体按无请求体处理」——修复前不带请求体会被 400 拒,属缺陷修复,对已按文档接入的商家只会变宽松)。
  • 请求头:补齐六头的长度与字符集约束(nonce 16–64 位、requestId 8–128 位等);越界与缺失共用同一句 400。
  • 响应验签:补齐 CONTENT_TYPE 归一化规则(小写、去 ; 参数),并写明哪些响应不带 X-XD-Response-*(鉴权链之前的拒绝)——按旧文做强制验签会每个响应都失败。
  • X-XD-Request-Id 例外由两类更正为三类(增加请求体门卫拒绝)。
  • notifyUrl:补齐四项真实前置(绝对 HTTPS、host 必须属于已验证域名、短信二次验证、审核通过才生效),并写明未配置/未通过 = 不产生事件、事后不可补发。(本条为 2026-09-27 当时的表述:两项已被取代——域名核验已退役为可选、非生效判据(见 接入指南 §2),配置变更已改提交即生效、无人工审核(见本文档 2026-10-04 变更);现行四项约束见 webhook 验签 · 开头。)
  • 乱序判据:stateVersion 当前恒为 0,改为按状态机判新旧。
  • 回跳语义:returnUrl 不是自动跳转,需买家点「返回商家」,且仅同一页面会话提供。
  • 通道口径:通道放行由平台整体控制、无自助查询面(原「去门户确认你的应用放行情况」有误)。
  • 限额口径:限额不在门户展示,调整走反馈渠道(原指引入口不存在)。
  • 域名验证:绝大多数失败是终态,需重新签发(原「核对后重新验证」会撞 409);补单次申报上限 10 个。
  • 指纹自检:明确 PEM 的规范化规则(统一换行、去首尾空白后再取 SHA-256)。
  • 示例与 demo:示例补 replayed/thresholdFen、重试条目补「nonce 必须换新」、修正 PHP 覆盖声明与自检命令的工作目录;demo 修正 PC 微信单文案、去掉真实收银页没有的复制入口,并如实标注「通道闸门与四道前置门未模拟」。
  • 接入地址(Base URL)下发面:此前资料只说「开通时提供」、又不许印 host,卖家无处可取;现在登录门户「应用凭证」页即可看到并复制「接入地址」,文档同步改写(见 接入指南 §1)。

文档修订(2026-09-27 · 全量对齐复核批)

本轮为 12 篇文档 + Skill + 示例 + demo 与服务端实现的逐条对齐复核后的资料修订(无接口行为变更),修掉的是上一轮修订的漏网残留与表述例外:

  • 通道口径残留清理:简介/FAQ 里「微信要看你这个应用放行了没有」「先在后台确认你的应用放了哪几条通道」为旧口径残留——通道放行由平台整体控制、不区分应用,后台没有查询面;微信 JSAPI 已于 2026-10-17 起开放(仅微信内),其他通道或交易形态以对接人确认为准(与 收银页对接 §1 的修订同源)。
  • 限额口径残留清理:错误码表与 Skill 里「生效限额以门户展示为准」为旧口径残留——限额不在任何页面展示,被拒后先关在途订单、需调整走反馈渠道(与 费率与限额 的修订同源)。
  • 反馈渠道落点更正:全部「门户反馈渠道」更正为「官网反馈渠道」(门户内暂无反馈提交入口,平台反馈统一走官网反馈链;门户结算页既有指引同此口径)。
  • 失败信封例外:写明来源 IP 拒绝(403)的信封另带一个 details 字段,内容只有 reason 或你的 appId,不回显平台观测到的地址。
  • 六头重复例外:同名头重复的 400 会在 message 里点名该头(缺失/形态越界仍不点名;每个头只提交一次即可避开)。
  • 回源文件验证判据:写明实际判据是「页面内容包含验证码」;「原样只返回验证码」是最稳妥做法而非硬性要求。
  • 事件丢失路径补全:平台侧内部异常同样可能导致事件未产生——查单补偿路径必须接(与 上线检查清单 D6 互为呼应)。
  • demo 能力如实化:demo README 补「通道闸门与前置门未模拟」标注(与本日志上一批的表述对齐);快速开始的能力清单以 demo 冒烟实际覆盖为准(不含轮询步骤)。
  • 查询退款的 replayed:写明查询返回中该字段恒为 true(既有记录投影),勿当作幂等重放信号。
  • Skill 修订:APP_REVOKED 行补「实际拿到的是 401」防枚举口径;SKILL.md 铁律 7 的限额口径同步。

文档修订(2026-09-28 · 深度对齐复核批)

本轮对 12 篇文档 + Skill + 示例 + demo 与服务端实现做了逐条深度复核(无接口行为变更,只改表述与示例),修的是上一批的漏网与自相矛盾:

  • 回跳口径统一:接入指南与 webhook 篇里「支付完成后自动 303 跳回 returnUrl」的说法改正为「买家点「返回商家」才回跳,且仅同一页面会话、首次观察到支付成功时提供」——与收银页篇、与实现一致(按旧文设计落地页的商家会发现多数流程并不回跳)。
  • CLOSED / FAILED 不是终点:补上「支付机构随后确认到账时订单会被提升为 SUCCEEDED 并推送 PAYMENT_SUCCEEDED」这条真实存在的迁移——把这两个状态建成吸收态会丢掉已到账的事件。接入指南的状态图与 webhook 篇同批补齐。
  • stateVersion 乱序指引清理(第二次):webhook 篇的落账骨架与 Skill 的上线清单里仍在教「用 stateVersion 判新旧」,同批删除,一律改为按订单/退款状态机判;demo 的 mock 平台同步改为恒 0(此前反而自增,会让按文档实现错语义的代码在自测里全绿)。
  • GET 不带 Content-Type 时签名串该行为空行(新增说明):GET 可以不带这个头,但不带时参与签名的是空行而不是 application/json——写错只拿到中性 401,此前资料里推不出这一支。签名规范篇与 API 参考同批补。
  • 请求字段约束成表(API 参考新增 §2.7):outTradeNo/outRefundNo 6–64 位且不能含点号、amountFen 1–2000000(该单笔上限自 2026-10-14 起改为按主体类型判定——见本日志最新一条;个人主体仍为该区间所描述的平台默认档)、currency 固定 CNY、subject/description/attach/returnUrl/reason 的长度上限与 https 要求——此前这些硬约束只存在于合同文件,卖家只能靠 400 反推。
  • 业务摘要成员公开:明确同号重试「同内容」的判定成员(含 returnUrl)——改 returnUrl 再重试是 409 冲突而不是被忽略;payerClientIp 不参与,可自由变化。
  • 400 与 422 的分界:单笔金额超出平台合同硬上限返回的是 400 OPEN_API_BODY_INVALID;422 OPEN_API_LIMIT_EXCEEDED 只用于平台限额。费率篇补出日累计口径(当日支付成功金额之和、退款不释放额度、北京时间自然日)与待支付订单数 / 未关闭尝试数两类此前完全没写的触发面,并说明实际生效的限额层级只有两级(结构性存在的「应用档位」当前没有写入面)。
  • 事件体两处语义:status 是事件主体自身的状态(退款事件里是退款状态,不是订单状态);事件 nonce 是事件级的(重投复用同一 nonce,判重一律用 eventId)。「上限 8 次」改写为「共投递 8 次(首次即时 + 7 次退避)」,并如实写明终止态之后平台不会自动感知(需商家自查单/对账后申请人工补推)。
  • 403 的两条腿:区分平台边缘腿(带 details.reason 七种取值,加白名单无效)与应用白名单腿(三字段信封);删去原先「details 含 appId」的承诺(该值不会出现在响应里)。安全红线 §8 的简写码名补注「信封里一律是全名」。
  • 兜底与边界:补「收到总表之外的 code 按 503 语义处置并反馈」、413/500 的存在说明、以及「路径/方法写错时拿到的不是本文档描述的信封」;GET 两个查询端点的失败码补 409(重放防护);创建订单失败码删去不可达的 404;X-XD-Sign 补 64–1024 位可见 ASCII;拒绝次序按实际装配更正(请求体门卫 → 来源 IP → 六头形态)。
  • 响应验签如实登记:XD-Response-v1 目前没有参考实现(examples/ 覆盖请求签名与事件验签),上线清单 A6 补注需自行按规范串实现;demo 的 mock 平台也不回四头。
  • demo 与生产对齐:关闭/失败事件的 eventAmountFen 改为 0、reason 带上真实关闭原因、退款事件补 outRefundNo、stateVersion 恒 0;README 明示本 demo 的请求体不是生产请求体形状(生产以快速开始 §2 六个必填字段为准),并注明 demo/ 不在门户两个下载包内。
  • 结算视图口径:明确逐笔清单只展示最近若干笔,更早订单以自有记录 + 每单 feeProjection 对账。

资料修订(2026-10-02):对外费率与手续费改为公开写明

产品负责人指令「用户需要知道费率」:公开面——仓库 README.md 与 llms.txt——现写明全平台统一的对外费率与固定手续费;docs/ 正文不重复列数字,入账口径不变(仍以每单 feeProjection 为准),限额与时效口径不变(不写死)。姊妹公开仓(xiaodou-market)此前已按同口径执行,两仓同源同价。

迁移动作:无需迁移。API 合同零改动;若你的对接文档里写过「平台不公开费率」,改为「以公开面与商户后台「费率说明」页为准」即可。

4. 已取消/不支持的形态(历史公告残留,防误用)

平台不提供下列形态,任何历史资料、截图或口口相传里的这些说法都不成立:

  • 微信「原生扫码」直出付款码(见上:不存在)。
  • 手机浏览器直接拉起微信支付面板。
  • 平台侧托管收款页(收款页形态只有本资料描述的两类:自渲染官方收款码 / 平台收银页)。
  • 在本资料里出现过的任何「时效承诺」或旧版「固定费率」——均已作废;费率一律以公开面(README.md)与商户后台「费率说明」页为准,对账以每单投影为准。

5. 发布通道状态(机器校验)

<!-- xd-release-channels -->

{
  "skillVersion": "1.0.0",
  "threeWayPublished": false,
  "channels": {
    "portalAnnouncement": {
      "status": "PENDING",
      "path": null,
      "note": "产品负责人 2026-09-28 决定:本批资料修订不做门户公告(无需公告);本项保持 PENDING,threeWayPublished 因此恒为 false——不得据此宣称「三处同源发布」。追加:2026-10-04 产品负责人明确决定「不做」——公告腿按「不投」口径结项、不再挂待办;门户公告位能力保留不拆,未来如启用另发公告。"
    },
    "changelog": {
      "status": "DELIVERED",
      "path": "docs/10-changelog.md",
      "note": null
    },
    "publicRelease": {
      "status": "DELIVERED",
      "path": "releases/v1.0.0.md",
      "note": "公开仓 github.com/xiaodou-official/xiaodou-open-platform 与 Gitee 镜像 gitee.com/lu-wulei/xiaodou-open-platform(单树快照推送=git commit-tree HEAD:open-platform,同一快照 SHA 两侧逐字一致;tag v1.0.0 指向首发内容树、版本内资料修订随 main 滚动)。2026-09-28 两批:资料修订重推批(响应验签参考实现、开通申请判据简化、域名口径定稿)+ README 增补指向姊妹公开仓 `xiaodou-market` 的链接。2026-09-29 两批:① README 增补指向 `xiaodou-app` 的链接(三仓两两互链);② `llms.txt` 增补「同一运营主体的其他产品线」段与**新用户福利口径**(四处公开面逐字同源,产品负责人 2026-09-29 拍板)。2026-10-02:费率公开修订(产品负责人指令「用户需要知道费率」)——`README.md` 与 `llms.txt` 增补**全平台统一**的对外费率与固定手续费口径,公开仓重推;同步纪律见 `PUBLISHING.md` 第 5 节。2026-10-04 两批:① kid 勘误批(密钥标识 `kid` 的格式、来源与本地派生公式修正,快照 `2743da9610d9a9c44500d4eeb0bc613488cc1396`);② README/llms 公开面批(个人可申请与免费接入检索词,含同日「配置变更提交即生效」资料修订,快照 `d9279f4c8da140ba542f3f628a33e5578d3e101c`,两侧同值)。2026-10-04 勘误批:收银「回商家」回跳口径勘误(`docs/02/05/06/09` + Skill 五处同口径「扫码支付不受此限」)与发布记录回补,公开仓重推;快照 `ce248552de75eb4bd2d423035b4de41708131213`(两侧同值)。2026-10-05 两批:① 宣传句收口 + 小豆支付平台三面 UI 美化(快照 `7a8aeb17e05c9501bcda7cb16d1caba6eee2bc6f`,两侧同值);② 三公开仓 `llms.txt` 增补「运营主体与资质」节(ICP/EDI 许可证与持牌支付机构合作;本仓快照 `f70a5ce5ba134579837bee52a81eccbe35cc373d`,两侧同值)。2026-10-06:README 顶部增补开放平台**全流程演示页**链接(在线可点击演示;产品负责人指令,公开仓域名口径对该演示 URL 完整字面量单点放宽),公开仓重推(快照 `d6ffe0c9509a300316512e90af87eeb387337a17`,两侧同值)。2026-10-10:对外入口域名迁移(产品负责人 2026-10-09 拍板;旧域转 301 保活、同路径与 query 透传),`README.md` 对外入口单点随批更新,公开仓重推(快照 `5bc37c62cc01c70019e66f732d513ec1e63e97f9`,两侧同值;本批回补登记)。2026-10-10(round-04 官网重规划批):公开面**撤除已退役 App 的福利口径**(新用户注册赠 12 个月 VIP 一句随 App 下架停更整体撤除;活动配置同批关闭),并把「同一运营主体的其他产品线」段的 App 条改述为**卖家移动面=微信小程序经营台**(看商品 / 订单 / 结算;上货、进件与售后仍在网页端办理;不是买家入口),`README.md` 同批同步。公开仓重推(快照 `05ca0a02700d0b5127b59643eafc580686940cb5`,GitHub 与 Gitee 两侧同值、匿名读回同值);本条发布记录随本次重推一并对外。2026-10-10(资料收口批,仓库侧):docs/skill 修订入库——响应验签参考实现口径勘误、`kid` 格式与派生补全、限额 `details` 枚举补全(`PENDING_AMOUNT` / `REFUND_CUMULATIVE`)、应用白名单腿 `details` 收紧(代码侧同批)、桌面微信/回跳凭证/事件体字段等六处补签、Skill 包自足性补强,另含 docs 10 篇与 Skill 门禁补钉。**本批尚未重推**——按 `PUBLISHING.md` §3.6 通道状态退回 `PENDING`;重推后回填快照并恢复 `DELIVERED`。2026-10-10(资料收口批·重推):docs/skill 收口(响应验签参考实现勘误、`kid` 补全、限额 `details` 枚举、应用白名单腿 `details` 收紧〔RP 代码 `a94ed9a8c1`〕、桌面微信/回跳凭证/事件体字段补签、Skill 包自足性)+ 一致性门禁补钉随批公开;重推快照 `9a3d4fbb6df0d816dd241cae432a2881b2a45cac`(GitHub 与 Gitee 两侧同值;GitHub 腿经本机代理补推、gh api 读回同值;四件抽样匿名 raw 三方逐字节一致)。本条发布记录随本次回填二次推送。2026-10-12(资料勘正批,仓库侧):webhook 首次投递表述勘正(`docs/05-webhook-verification.md` 与 Skill `references/webhook-verification.md` 同口径『首次不等待退避间隔、由平台调度即时发出〔秒级窗口,当前线上通常 10 秒内〕』;背景=投递调度提速至 10 秒级,2026-10-12 生产发布 `openapi_webhook_cron10s_r1`)。**本批尚未重推**——按 `PUBLISHING.md` §3.6 通道状态退回 `PENDING`;重推后回填快照并恢复 `DELIVERED`。2026-10-12(资料勘正批·重推):webhook 首次投递表述勘正(`docs/05-webhook-verification.md` 与 Skill `references/webhook-verification.md` 同口径『首次不等待退避间隔、由平台调度即时发出〔秒级窗口,当前线上通常 10 秒内〕』;背景=投递调度提速至 10 秒级,2026-10-12 生产发布 `openapi_webhook_cron10s_r1`)。重推快照 `31d59510e98105cd5e20bdb7595d640e051c44f2`(GitHub 与 Gitee 两侧同值、匿名 ls-remote 同值;`docs/05` 三源 raw 逐字节一致)。本条发布记录随本次回填二次推送。2026-10-12(对外资料评审勘正批,仓库侧):对外资料评审 6 项修正入库——Skill 端点表/伪代码/最小建单体统一为完整路径(接入地址是纯 host,路径自带 `/api/open/v1` 前缀)、Skill 域名归属验证改「可选、非开通判据」口径、Skill 与 docs/03 区分幂等两层重放(请求级=首次响应原件/业务级=当前快照)、`examples/node/verify_webhook.js` 去重改「去重行与业务同一事务」骨架(修 await 缺失与并发重复处理)、`examples/README.md` 自检与运行命令改包根相对路径、docs 十一处包外引用补「不在文档下载包内」注记 + docs/10 新条目。**本批尚未重推**——按 `PUBLISHING.md` §3.6 通道状态退回 `PENDING`;重推后回填快照并恢复 `DELIVERED`。2026-10-12(对外资料评审勘正批·重推):资料勘正批 6 项公开仓重推;一推快照 `8fc3308e4c81bb9e1b657d3f52cdac3f6b084832`(GitHub 与 Gitee 两侧同值、匿名 ls-remote 同值;GitHub 直连成功)。本条发布记录随本次回填二次推送。2026-10-12(全面复查批,仓库侧):产品负责人指令「全面修复、确保上架最新可用版」——链接/锚点全量审计+门户页面名/按钮名逐一对源+端点路径散文面扫描后,9 类可用性勘正入库(门户页面名与按钮名对齐:开发者文档页·下载文档包/下载接入包·费率说明·资金 / 结算;docs/08 查询端点补全 `/api/open/v1` 前缀;docs/03 查单要点与「新材料只走重拉起」口径对齐;Skill 内 demo 自测命令补包外注记;examples/README 补交付形态说明;docs/06 措辞统一;内部流程文档引用勘正;changelog 新条目)。**本批尚未重推**——按 `PUBLISHING.md` §3 第 6 步通道状态退回 `PENDING`;重推后回填快照并恢复 `DELIVERED`。2026-10-12(全面复查批·重推):全面复查批 9 类可用性勘正公开仓重推;一推快照 `f840e3ea5b546590dd6f7320ceef8f61abb9dec9`(GitHub 与 Gitee 两侧同值、匿名读回同值;GitHub git 通道不可达时段经 `gh api` 读回同值)。本条发布记录随本次回填二次推送。2026-10-13(易支付兼容面公开批,仓库侧):公开面第 13 篇《易支付协议兼容接入》+ README 接入触点;未重推。2026-10-14(资料批,仓库侧):排障页 appId 逐字符提示+限额 W12 公开面主体分档收口+多到账账号 I21 批新篇《到账账号与收款分配》+ API 参考 §2.7;未重推。2026-10-15(资料口径收口批,仓库侧):公开面接口清单同步为七个端点(README 接口一览+`llms.txt`+Skill 端点表+`examples/README.md` 自检说明+第 13 篇互引)、Skill 资产表文档篇数 12→14、更新日志补第 13/14 篇条目;**易支付协议兼容关键词补强**(README 顶部与接口一览+README 术语表+`llms.txt` 新增条目+英文检索词+第 13 篇「兼容该协议的多种接口」具名 `submit.php`/`mapi.php`/`api.php`+更新日志同口径;产品负责人 2026-10-15 指令「本次推送务必加入易支付兼容关键词」)。**以上各批(含本批)已于同日重推公开仓**(快照与两侧读回见下条),通道状态随之恢复 `DELIVERED`。2026-10-15(资料口径收口批·重推):七端点清单同步+易支付协议兼容关键词补强(README 顶部、接口一览、术语表、英文检索词;`llms.txt` 新增条目;第 13 篇「兼容该协议的多种接口」具名;更新日志同口径)+Skill 资产表篇数 12→14 公开仓重推;一推快照 `e4833840e65365f812571692b433220be7440cea`(GitHub 与 Gitee 两侧同值;匿名 `git ls-remote` 同值;README / `llms.txt` / 第 13 篇三件匿名 raw 逐字节读回同值;关键词读回在位)。本条发布记录随本次回填二次推送。2026-10-15(易支付 / 彩虹支付关键词批,仓库侧):产品负责人指令「对外宣称支持兼容易支付接口、彩虹支付接口」——① open-platform 全面关键词(README 顶部/接口一览/术语表/英文检索词/FAQ、llms、第 13 篇、更新日志);② 第二梯队同步(官网首页与 llms、xdfair 站与 llms、GEO 事实卡、未发稿)+接口范围 六→七 收口(xdfair 接线图/接口表/筛选段、官网 wall 卡);③ README 视觉刷新(assets/readme/hero.svg+导航行)+GitHub About 优化(描述/站址/主题词);④ 旧「第三方产品名一律不出现」纪律改判(易支付配置清单 §10、公开仓发布清单 §3/§5、Gitee 自检表同批)。**本批已于同日重推公开仓**(快照与两侧读回见下条),通道状态随之恢复 `DELIVERED`。2026-10-15(易支付 / 彩虹支付关键词批·重推):关键词全链+第二梯队+README hero(`assets/readme/hero.svg`)+GitHub About 优化公开仓重推;一推快照 `0d54a0509c3b2a5338e874110e2b1619dd48b41f`(GitHub 与 Gitee 两侧同值;匿名 `git ls-remote` 同值;README / `llms.txt` / `assets/readme/hero.svg` 三件匿名 raw 逐字节读回同值;「彩虹支付」读回在位)。本条发布记录随本次回填二次推送。 2026-10-17(口径开放批,仓库侧):微信 JSAPI 已开放、比例分账已支持、退款按快照发起回退与 docs/03 锚点勘正等资料修订入库。**本批尚未重推公开仓**——按 PUBLISHING.md §3 第 6 步,publicRelease 状态退回 PENDING;重推后回填快照并恢复 DELIVERED。 2026-10-17(官网文档中心入口批·重推):README 增补官网文档中心 / Skill / 文档下载三个入口、llms.txt 新增「官网文档中心」节;首次快照 `176cf22da8ba52838a180d841c0c1eb8973a0197`(GitHub 与 Gitee 两侧同值;匿名 raw 读回在位)。本条发布记录随本次回填二次推送。"
    }
  }
}

<!-- /xd-release-channels -->

上表由门禁与 MANIFEST.json 交叉校验:未全部投递前不得宣称「变更公告已全通道发布」。

内容源:open-platform/docs/10-changelog.md · 最后更新 2026-10-17 下载本文 .md 在 GitHub 查看