본문으로 건너뛰기
cccskills
무료GitHub에 공개

xiaodou-open-platform-integration

小豆支付开放平台商家接入 Skill。

用于帮助商家开发者(及其 AI 编码助手)把开放平台支付接起来:RSA2 请求签名(XD-Signature-v1)、下单/重拉起/查单/关单/退款、收银页终端能力矩阵(PC 扫码 / 手机支付宝手势主按钮 / 手机微信外推荐路径 / 微信内零点击)、平台事件通知验签(XD-Webhook-v1)与 eventId 去重、**平台响应验签(XD-Response-v1)**、错误码排障、上线检查清单与凭证轮换(含密钥标识 kid 格式与本地派生)。

触发词:开放平台接入、商家 API、XD-Signature-v1、XD-Response-v1、XD-Webhook-v1、qrCode 渲染、payUrl 中转链、收银页分端、多到账账号、比例分账、上线检查清单、密钥轮换、kid 密钥标识、公钥指纹、notifyUrl 回调地址、returnUrl 返回商家、商家小票、配置提交即生效、feeProjection 费率投影。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(9)

  • SKILL.md7.2 KB
  • examples/README.md2.0 KB
  • references/api-workflow.md9.7 KB
  • references/error-codes.md4.8 KB
  • references/go-live-checklist.md4.7 KB
  • references/key-management.md4.4 KB
  • references/signature-spec.md4.0 KB
  • references/terminal-matrix.md6.1 KB
  • references/webhook-verification.md5.5 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

小豆支付开放平台 · 商家接入 Skill

本 Skill 与同仓 docs/ 是同一份内容源的两个形态:docs/ 给人读,本目录给 AI 编码助手直接消费。两者同属一个 skillVersion——但两个下载包各有各的 contentHash(文档包 ≠ Skill 包),且 Skill 包内不含 MANIFEST.json。核对版本请以门户下载页/发布记录登记的那一对(包 ↔ hash)为准,不要拿一个包的 hash 去对另一个包。 术语:本 Skill 是给商家开发者用的接入资料;「支付机构官方 Skill」是另一件东西,不要混用。

何时用

商家要「把开放平台支付接进自己的服务端/页面」时用。典型任务:

  • 写一个能通过验签的下单请求(六头 + 规范串)。
  • 决定收款页怎么呈现(自渲染官方收款码 / 渲染收银页二维码 / 302 跳转)。
  • 接平台事件通知并做去重与幂等落账。
  • 排一个 401/403/409/422/429/503。
  • 上线前逐条自检;或轮换签名密钥。

铁律(先记这七条,能避免绝大多数事故)

  1. 签名只认规范串:请求 11 行、响应 8 行、事件 7 行,三套不同,不要复用同一段拼串代码。请求与响应两侧的 Content-Type 都取「小写去 ; 参数」后的值——没带这个头时该行是空行(GET 且无请求体就是这样);所有 POST 必须带 Content-Type: application/json(含无请求体的重拉起/关单)。
  2. 重试复用同一个 requestId 与同一份请求体(body 逐字节相同,含「不传 body」本身),但 nonce 必须换新;409 的正确动作是查单,不是换单号重下单。业务摘要成员见 references/api-workflow.md §2——returnUrl 在摘要内,改了再重试就是 409。
  3. 收银页打开 / 回跳 / 用户点完成都不是支付终态;终态只认查单与经验签的事件。
  4. UNKNOWN 不判死:不重新下单、不重发退款、不提示买家失败,等事件或查单收敛。
  5. 收款材料只从响应取:payUrl/qrCode 用原值,不拼接、不转发第三方、不进日志;查询接口两者恒为空,需要新码走重拉起。
  6. 事件必须用原始字节验签 + 按 eventId 去重,成功才回 2xx 且 body 字节正好是 success。
  7. 私钥永不进浏览器、不进仓库、不进日志;费率不要写死进代码:入账以每单 feeProjection 为准(对外统一档与手续费见仓库 README.md),单独约定过的费率与限额以门户「费率说明」页/平台答复为准。

能力事实(2026-10-17 口径):微信 JSAPI 已开放——仅限买家在微信内打开收银页时调起;微信外手机浏览器与商家 App 内没有「直接拉起」形态。比例分账已支持:SINGLE / ROUND_ROBIN / RATIO 三种方式,RATIO 为 2–4 个参与账号、配置面每项 0 < shareBps < 10000、合计 10000bps,RENORMALIZE 后单笔生效腿可只剩 1 条;查询接口只读返回 routing.ratios 配置快照,写面在商家后台。

工作流

① 读 references/signature-spec.md   → 用 examples/ 里对应语言实现签名,先跑通 golden 向量
② 读 references/api-workflow.md     → 下单 → (需要新材料时)重拉起 → 查单;幂等三层怎么用
③ 读 references/terminal-matrix.md  → 决定收款页形态(PC 扫码 / 手机分端 / 微信推荐路径 / 宿主内跳浏览器)
④ 读 references/webhook-verification.md → 接事件、验签、去重、幂等落账、返回 success
⑤ 读 references/error-codes.md      → 按 code 分派错误,不要按 message 判错
⑥ 读 references/go-live-checklist.md → 上线前逐条自检(平台不提供沙箱)
⑦ 读 references/key-management.md   → 生成/轮换/停用/应急吊销;注意轮换是原子的

资产

资产路径在 Skill 包里可取到?说明
四语言签名示例examples/{node,java,php,python}/(索引见 examples/README.md)✅ 在包内与 docs/ 同源的参考实现:请求签名四语言 + 事件验签 / 响应验签(Node),含 golden 向量
人读文档(14 篇)docs/❌ 不在包内含 API 参考与终端能力矩阵;用门户「开发者文档」页的「下载文档包」或公开仓的 docs/
本地收银 demodemo/h5-cashier/❌ 不在包内零依赖,loopback + mock,全链可跑(含负向用例);用公开仓全量目录

路径基准(别踩这个坑):本 Skill 有两种落地形态,可用路径不一样——

  • Skill 下载包(门户「开发者文档」页的「下载接入包(含示例与 Skill)」按钮打出的 .tar.gz):按登记文件集只含 skill/** 与 examples/**,docs/、demo/ 与仓库根 README.md 不在包内。所以本文档、references/ 与 examples/README.md 里所有指向 docs/…、demo/…、README.md 的引用在这个形态下都取不到——请如实告诉用户「人读文档要另外下载」,不要凭路径猜文件位置、更不要因此编造内容。
  • 公开仓(完整目录):skill/ 与 examples/、docs/、demo/ 同级存在,三者都能取到。
  • 只把 skill/ 目录单独拷进编码助手的技能目录时,连 examples/ 也会取不到(skill/examples/ 里的相对引用按包根解析);这时把 examples/ 一并带上。

不要把示例代码复制进 skill/ 内形成第二份源——那一定会漂移。

边界(不要做的事)

  • 不要照抄 demo 的样式去仿造平台收银页;真实收银页由平台承载且品牌中立。
  • 不要为「微信在手机浏览器直接拉起支付」「微信 PC 原生扫码直出付款码」写代码——平台没有这些形态(微信支付只能在微信内调起;PC 扫码是中转链)。
  • 不要在自有 App 的 WebView 内嵌收银页;必须跳系统浏览器。
  • 不要把 mock 全绿当成「生产可用」:mock 只证明签名与解析没错,生产首单必须真实验证。
  • 平台暂不提供沙箱/测试应用/回调模拟器;替代路径=本地 demo + 上线检查清单 + 首单人工陪跑(不承诺 SLA)。

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

이 스킬의 문제 신고