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 或带数据库自托管实例
具体怎么做
配置 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。
保证能匹配订单
WooCommerce Stripe Gateway 需把 order_id 写进 charge metadata;没有该字段时流程应标 orderMatch=false 并只生成通用草稿。拉取订单、客户历史订单、shipment tracking metadata;Gmail 只按客户邮箱和 lookback 窗口搜主题/摘要,不把整封敏感正文塞进提示词。
生成事实型案件包
汇总字段: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,不得发明签收证明。
默认只存 Stripe 草稿
把 AI 输出映射到 Stripe dispute evidence 字段,先 POST/更新为 draft;只有 autoSubmit=true 且 winLikelihood=high、missingEvidence 为空时才 submit。Slack 摘要含 disputeId、金额、原因、respondBy、推荐动作、Stripe 链接和「尚未提交银行」状态;Google Sheets Disputes 追加同字段行。
截止提醒与关闭回写
证据未提交时,用 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