AI PLAY玩法更新持续收录
← 回到更新流

2026-10-07 · 原文发布日

Stripe拒付自动收集证据并起草申诉

该n8n流程监听Stripe拒付事件,自动拉取WooCommerce订单、客户历史订单、物流信息和近期Gmail往来邮件,汇总成只含事实的案件材料交给OpenAI,按拒付原因起草反驳信并列出缺失证据,默认以草稿形式存回Stripe(开启autoSubmit且胜率高才自动提交),同时在Slack发摘要、向Google Sheets追踪表写记录,逾期前还会发提醒。拒付关闭时同步更新表格和Slack。

原文要点

来源是 Anna Cole 的免费 n8n 流程,监听 Stripe charge.dispute.created 与 charge.dispute.closed。新拒付时取 dispute 与 expanded charge,提取 3D Secure、CVC/AVS、客户、订单 metadata 与回应截止;跳过无需回应、已逾期或低于最低金额的案件。有 order_id 时拉 WooCommerce 订单、客户历史订单、物流 metadata 与近期 Gmail 邮件,汇总成只含事实的案件包给 OpenAI,按原因生成反驳信与缺失证据;默认存回 Stripe 草稿,只有 autoSubmit 且高胜率才自动提交。另发 Slack 摘要、写 Google Sheets Disputes,用 Wait 在截止前提醒,关闭事件更新结果。

这次做成什么

搭建拒付应急演练:Stripe 测试模式触发拒付,自动凑齐订单、物流、邮件事实,生成可人工审核的反驳草稿;默认不直接提交银行。本站独立练习用合成订单和测试卡,不触碰真实客户,不在 autoSubmit 开启前验证真实提交。

准备什么

  • Stripe 测试模式 API key 与 webhook 端点权限
  • WooCommerce 店铺 REST API key,且 charge metadata 带 order_id
  • Gmail、OpenAI、Slack、Google Sheets 测试凭据
  • 保留等待执行的 n8n Cloud 或带数据库自托管实例

具体怎么做

  1. 配置 Stripe 触发与测试卡

    在 Stripe 测试模式建 webhook,订阅 charge.dispute.created 与 charge.dispute.closed,指向 n8n webhook。用测试卡 4000000000000259 产生必拒付;在 Set Store Configuration 填 storeName、storeUrl、policyUrls、slackChannel、sheetUrl、minimumDisputeAmount、emailLookbackDays、reminderHoursBeforeDeadline,autoSubmit 先 false。

  2. 保证能匹配订单

    WooCommerce Stripe Gateway 需把 order_id 写进 charge metadata;没有该字段时流程应标 orderMatch=false 并只生成通用草稿。拉取订单、客户历史订单、shipment tracking metadata;Gmail 只按客户邮箱和 lookback 窗口搜主题/摘要,不把整封敏感正文塞进提示词。

  3. 生成事实型案件包

    汇总字段:disputeId、amount、currency、reason、respondBy、paymentSignals{threeDSecure,cvcCheck,avsLine1,avsPostal}、order{id,total,status,items,tracking}、customerHistory{orderCount,refundCount}、emailSummary。明确要求 OpenAI 只输出 JSON:rebuttalLetter、missingEvidence、winLikelihood、recommendedAction,不得发明签收证明。

  4. 默认只存 Stripe 草稿

    把 AI 输出映射到 Stripe dispute evidence 字段,先 POST/更新为 draft;只有 autoSubmit=true 且 winLikelihood=high、missingEvidence 为空时才 submit。Slack 摘要含 disputeId、金额、原因、respondBy、推荐动作、Stripe 链接和「尚未提交银行」状态;Google Sheets Disputes 追加同字段行。

  5. 截止提醒与关闭回写

    证据未提交时,用 Wait 到 respondBy 前 reminderHoursBeforeDeadline 小时发 Slack 提醒;实例必须能保存等待执行。收到 charge.dispute.closed 后按 dispute id 更新 Sheets 的 Outcome、Closed on,并 Slack 宣布 won/lost/warning_closed;不得重复生成反驳信。

可直接复制的材料

案件事实包与输出契约提示词

本站独立编写提示词;字段名与 Stripe evidence 映射需按当前 Stripe API 和原模板核对,输出为模型草稿而非法律意见。

你是电商拒付证据整理助手。只使用下列 FACTS 中的事实,禁止编造物流签收、通话录音、客户承诺或法律结论。若事实不足,把缺口写进 missingEvidence。
输出必须是 JSON,且只能是这些键:{"rebuttalLetter":string,"missingEvidence":string[],"winLikelihood":"low|medium|high","recommendedAction":"draft|submit|do_not_respond"}
规则:reason=fraudulent 时强调 3DS/CVC/AVS/历史订单;reason=product_not_received 时强调物流轨迹与送达状态;reason=duplicate 或 credit_not_processed 时先检查退款记录。respondBy 距今不足 24 小时且 missingEvidence 非空时,recommendedAction=draft。
FACTS:
{"disputeId":"dp_test_001","amount":129.00,"currency":"usd","reason":"product_not_received","respondBy":"2026-10-14T23:59:59Z","paymentSignals":{"threeDSecure":"authenticated","cvcCheck":"pass","avsLine1":"pass","avsPostal":"pass"},"order":{"id":88210,"status":"completed","tracking":"1Z999TESTDELIVERED","deliveredAt":"2026-10-05T13:20:00Z"},"customerHistory":{"orderCount":4,"refundCount":0},"emailSummary":"客户 10-03 询问物流,10-05 回复已签收。"}

Google Sheets Disputes 表头 CSV

本站合成表头与一行示例;邮箱为测试域,Outcome/Closed on 关闭事件后回写。

Dispute ID,Order,Customer email,Amount,Reason,Respond by,Recommendation,Win likelihood,Action,Missing evidence,Outcome,Closed on,Stripe link
dp_test_001,88210,buyer@example.test,129.00,product_not_received,2026-10-14T23:59:59Z,submit,high,draft_saved,"[]",,,https://dashboard.stripe.com/test/disputes/dp_test_001

输入与输出示例

本站虚构演示,未连接 Stripe/WooCommerce/Gmail,金额为测试模式合理示例。

输入

Stripe test webhook charge.dispute.created: {"id":"dp_test_001","charge":"ch_test_001","amount":12900,"currency":"usd","reason":"product_not_received","evidence_details":{"due_by":1792022399},"metadata":{"order_id":"88210"}}

对应输出

{"slack":"dp_test_001 $129.00 product_not_received due 2026-10-14; recommendation=submit; draft saved to Stripe, not sent to bank","sheetRow":["dp_test_001","88210","buyer@example.test","129.00","product_not_received","2026-10-14T23:59:59Z","submit","high","draft_saved","[]","","","https://dashboard.stripe.com/test/disputes/dp_test_001"],"stripeEvidenceStatus":"draft"}

做完检查这些

  • autoSubmit=false 时任何案件都不得出现 submit API 调用,只能保存草稿
  • charge metadata 缺 order_id 时不得硬拉 WooCommerce,应记录 orderMatch=false 并降级
  • 反驳信中不得出现 FACTS 没有的签收照片、录音或客户承诺
  • 低于 minimumDisputeAmount 或已过 respondBy 的案件必须跳过响应并写清楚原因
  • dispute.closed 必须更新既有 Sheets 行而不是新增重复行

容易卡住的地方

  • Wait 节点在不能持久化等待执行的自托管 n8n 上会丢失截止提醒
  • Gmail 全文进提示词既贵又可能泄露隐私,应先做摘要和白名单字段
  • winLikelihood 是模型估计,不能当作银行胜率承诺或自动提交唯一依据
  • Stripe 测试与 live 的链接、key、webhook secret 不通用,切换环境要整体替换

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Build Stripe dispute evidence from WooCommerce orders, Gmail, and OpenAI
原作者
Anna Cole
原始发布日期
2026-10-06T16:38:10.383Z
来源
https://n8n.io/workflows/20549