用途:在响应 Stripe 退款与争议事件、需要撤销额度或修改付费状态列时使用,属于 Webhook 事件处理类技能。
主要事件与规则:charge.refunded 按退款增量比例撤销积分,依赖 previous_attributes.amount_refunded(规则 G2);charge.dispute.created 将用户置为 past_due 并存储检查点(G1+G9);charge.dispute.closed 中 won、warning_closed、prevented 恢复状态,lost 不做处理(由 charge.refunded 负责),其余状态亦不处理(G5+G7)。
退款来源优先级:优先 event.data.previous_attributes.amount_refunded;缺失时回退到 charge.refunds.data(按 created 降序);再回退到 stripe.refunds.list({charge, limit:1});绝不单独使用 charge.amount_refunded(它是累计值,非单事件)。
撤销数量计算:先查 Checkout Session 判断模式。非订阅模式下按比例撤销——退款占原订单百分比决定撤销比例(如退款 50% 撤销 50% 积分),避免打包定价导致过度撤销;订阅模式按 1 积分 = 1 分现金等价换算。
状态恢复:使用穷尽的 shouldRestoreStatus 映射,枚举 Stripe.Dispute.Status 全部取值;当 SDK 新增状态时该对象产生编译错误,强制做一次显式判断。
限制与前置:依赖 getRefundDelta() 辅助函数(缺失来源时返回 null,处理器必须跳过撤销而非猜测);每个争议处理器需套用 G1 检查点与幂等模式;积分审计不变量、分页与 previous_attributes 等由相关技能负责。具体定价、平台与安装步骤资料暂未提供。