跳到正文
cccskills
免费在 GitHub 公开中文介绍

trace-a-payment

沿着 Stripe 相关记录排查支付失败原因、账单金额、打款和订阅状态;说明结果时列出记录 ID、币种和账户模式,并在计算留存金额时计入手续费、退款和争议款项。

原文查看原文说明

Answer a question about money that already moved in Stripe — why a charge failed, what a customer was billed, where an invoice or payout stands — by reading the object chain instead of guessing from a dashboard total. Use when the user pastes a Stripe id, asks why a payment failed, asks what a customer is paying, or wants revenue, invoice, or subscription state.

ParadevAI/Paradev星标 15,724(GitHub 15,724 + cccskills 0)
集成工具Stripe

实测评分 未实测

查看安装方法

适用场景

  • 排查 Stripe 支付失败原因
  • 说明账单金额的组成
  • 核算扣除手续费和退款后的金额
  • 查看打款或订阅状态

中文介绍

功能

沿着 Stripe 中相关记录逐步查询,排查支付失败原因、客户账单金额,以及打款或订阅的状态。支付失败时,会查看错误信息、支付结果详情和 Stripe 对重试的建议。解释账单金额时,会追溯订阅、价格、商品、折扣和税费。计算实际留存金额时,会把手续费以及退款和争议产生的交易一并考虑。答复会列出所查记录的 ID、账户模式和统计时间范围。

适用场景

当您想根据支付 ID 查明失败原因、回应客户对账单金额的疑问、核实可计入收入的金额、追踪打款,或确认订阅是否计划取消时,可以使用此技能。

使用示例

  • “查一下这个支付 ID 失败的原因。”
  • “说明这张账单金额是怎么构成的。”
  • “核实扣除手续费和退款后还剩多少。”

注意事项

此技能需要连接 Stripe 工具。查询前会先确认账户和环境是正式模式还是测试模式,因为两种模式的数据互不相通。金额会依据币种的最小单位换算;日元金额不会除以 100。列表查询有条数限制,因此退款会翻页查完;统计数量或比例时优先使用分析工具。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

文档检查

AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。

安全性发送数据、删除文件、执行命令等是否有说明
A良好说明以读取记录为主,并要求确认模式和查完所有页面。
安装难易度所需工具和 API 密钥是否少且有说明
B部分不足需要连接 Stripe 工具,但未说明连接或认证的配置步骤。

不计入评分。 由 AI(OpenAI Codex)于 2026年10月29日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(1)

  • SKILL.md5.7 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Read the chain, not one object

A Stripe answer is only as good as the objects it was read from. Every question about money that already moved has an exact object chain behind it, and the chain is short. Walk it.

1. Say which account and which mode you are in

Start with get_stripe_account_info. Live mode and a sandbox are separate worlds that share nothing: an id created in one returns "No such charge" in the other, which reads like a deleted record rather than a wrong environment. Name the account and the mode in your answer so the user can tell whether you looked where they meant.

2. Let the id prefix tell you what you are holding

Stripe ids are typed. ch_ is a charge, pi_ a PaymentIntent, cus_ a customer, in_ an invoice, sub_ a subscription, cs_ a Checkout Session, re_ a refund, dp_ a dispute, po_ a payout, txn_ a balance transaction. Use stripe_api_search to find the right method, stripe_api_details to get its real parameters, then stripe_api_read. Never invent a field name: the details tool exists so you do not have to.

3. For a failure, read the decline, not the status

status: "requires_payment_method" says nothing a user can act on. The cause lives in two places:

  • The PaymentIntent's last_payment_error: the decline code and message.
  • The charge's outcome: network_status, reason, risk_level, seller_message, which is the sentence written for you to pass on, and advice_code.

Read the retry decision off advice_code, not off the decline code. It has three values and each is Stripe's advice rather than a verdict: try_again_later means a retry may work, do_not_try_again means Stripe advises against reusing the card for this transaction, and confirm_card_data means some of the submitted card details are wrong and the customer should check them against the card. Stale details on a stored payment method trigger that one as readily as a typo does. The decline code answers a different question, and most of them are vague on purpose: do_not_honor and generic_decline both mean "the issuer declined and did not say why", so calling either permanent is a guess the advice code already settles.

To tell an issuer decline from a payment Stripe Radar blocked before the issuer ever saw it, read outcome.type: blocked with a reason such as highest_risk_level is Radar. A network_status of not_sent_to_network says only that the network never saw it, and a risk_level is attached to payments Radar allowed as well, so neither one attributes the failure on its own.

4. Follow the chain the question actually asks about

  • "Why this amount?" is invoice to subscription to price to product, plus discount and tax on the invoice. The number on the invoice is the end of a chain, not a fact in itself.
  • "What did we keep?" is charge to balance_transaction, which carries fee and net. The charge amount is not revenue, and that net is not the end of it either: a refund and a dispute each create their own balance transaction, so a refunded charge still reports the original net. Net off its refunds and disputes before reporting a figure, and page the refund list to the end: the charge embeds only the first ten, so a charge refunded in many parts overstates what you kept until has_more is false.
  • "Where is the money?" is get_balance_summary or payout to balance transactions, not the sum of recent charges.
  • "Is this customer current?" is subscription status plus current_period_end plus cancel_at_period_end. An active subscription with cancel_at_period_end: true is a churn you would otherwise report as healthy.

5. Convert amounts deliberately

Stripe amounts are integers in the smallest currency unit. amount: 2000 in USD is $20.00, but JPY has no minor unit, so amount: 2000 is 2000 yen, and dividing by 100 would under-report it by a hundredfold. Read the currency field, then convert. State the currency in every figure you report.

6. Answer with ids, mode, and the window

Quote the id of every object you read, the mode you read it in, and the time window for anything aggregated. For a count or a rate, prefer stripe_analytics over paging a list yourself: a list request defaults to 10 items and newest first, so "I found 10 charges" is a page size, not a finding.

Anti-patterns

  • Mixing modes. A sandbox id in a live-mode question returns a clean, confident 404. Check the mode before you believe the absence.
  • Reporting the charge amount as revenue. The fee lands on the charge's balance transaction; a refund or a dispute lands on its own, and neither rewrites the first one.
  • Trusting a list default. Lists are paginated; an unbounded "how many" answered from one page is wrong without saying so.
  • Explaining a decline from status. The actionable text is in outcome.seller_message and last_payment_error.
  • Reading one object and inferring the rest. A subscription's price is not the invoice total once a coupon, proration, or tax exists.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

10x

免费有简介

检查 Superset 的使用情况,找出适合当前工作方式但尚未使用的功能,给出建议并介绍选项;用户选定后,可协助设置定时运行、并行工作区或共享任务等功能。

  • 查找尚未使用的 Superset 功能
  • 设置定时运行的智能体
  • 在多个工作区并行处理任务
ParadevAI/Paradev1.6万2026年10月29日 更新

automate

免费有简介

把重复任务配置为 Superset 自动化,整理智能体指令、定时或事件触发条件及运行工作区。经明确确认后创建设置,检查已保存的条件,并查看首次运行结果以调整指令。

  • 按日或按周运行任务
  • GitHub 新建拉取请求时启动任务
  • 收到 Slack 指定表情反应时触发
ParadevAI/Paradev1.6万2026年10月29日 更新

browser

免费有简介

通过 Superset 工作区的浏览器查看网页、点击、输入并检查截图或控制台信息,可用于预览运行中的网页应用、检查界面操作和表单流程。

  • 预览本地网页应用
  • 截取页面图像
  • 查看控制台错误
ParadevAI/Paradev1.6万2026年10月29日 更新

依据 Stripe 官方文档和 API 参数定义实现支付、订阅、发票及 Webhook 集成,涵盖产品选择、沙盒测试和事件处理,并通过 Webhook 判断支付与订阅状态。

  • 选择定期扣费产品
  • 实现 Checkout 或发票处理
  • 排查行为异常的 Stripe 集成
ParadevAI/Paradev1.6万2026年10月29日 更新

cdp-verification

免费有简介

通过 Chrome DevTools Protocol 操作正在运行的 Electron 桌面应用,复现界面问题并验证修改。按实际操作流程检查页面跳转,记录截图,并对照路由、滚动位置、焦点元素和保存状态等信息。

  • 在运行中的应用里复现界面问题
  • 检查修复后的页面行为
  • 验证包含页面跳转的操作流程
ParadevAI/Paradev1.6万2026年10月29日 更新

ci-triage

免费有简介

分析 GitHub Actions 失败日志,定位最早的有效错误,区分代码缺陷、环境问题、间歇性失败和原有故障,并对照基准分支说明失败与 PR 的关系及后续处理建议。

  • 调查 PR 检查失败原因
  • 区分不稳定测试与代码缺陷
  • 确认基准分支是否已有故障
ParadevAI/Paradev1.6万2026年10月29日 更新

查看 ParadevAI 的全部技能

报告此技能的问题