SuperAPI AI 工具集

stripe-list-pagination-previous-attributes

编程与开发

查看项目

更新于 10-15 23:41

技能介绍

用途:处理 Stripe 列表 API 分页与 webhook 事件中 previous_attributes 的语义,避免分页漏扫和增量计算错误。

主要能力:event.data.previous_attributes 只含发生变化的字段,需与当前对象做 diff;event.data.previous_attributes.amount_refunded 是此前累计退款额,可与 charge.amount_refunded 相减得到本次增量,而 charge.amount_refunded 本身是累计值,并非单次事件值。分页方面,invoice.lines.has_more 为 true 表示内嵌 data 只是第一页,需用 starting_after 续取;invoice.lines.data.at(-1).id 作为下一页游标。

使用方式:调用 stripe.invoices.listLineItems(invoice.id, { starting_after: cursor }) 从游标之后继续,不会重扫第一页。资料给出的 scanAllLineItems 会先复制内嵌数据,再用 while (hasMore && cursor) 逐页拉取并更新游标。若未传 starting_after,listLineItems 会重复取回第一页,导致循环扫描重复内容并得出“无匹配”的错误结论。边界情况:当 invoice.lines.data 为空但 has_more 为 true 时,游标为 undefined 导致循环不执行,应改用不带 starting_after 的 listLineItems(invoice.id, { limit: 100 }) 重新开始扫描。增量辅助函数 getRefundDelta 在 previous_attributes.amount_refunded 为数字时返回差值,否则返回 null,由调用方决定回退方式。resolvePlanFromInvoice 先用分页扫描全部行项目,再按 PRICE_TO_PLAN 映射解析套餐与额度,失败时记录日志并回退到 free 与 0 额度的 safetyFallback;邮件渲染用 resolvedVia 控制是否显示套餐名,避免在回退路径渲染错误套餐。

适用场景:读取 Stripe 对象内嵌 .data[] 并可能分页时;基于 webhook 事件计算“什么变了”时;从发票行项目或订阅项目解析套餐、SKU、权益时。

限制:资料未提供该技能的安装方式、运行环境、价格与更多边界说明;实际实现需依赖 Stripe SDK,并自行处理错误与日志。