交易状态
后台里的每一交易行都处于这些状态之一。状态反映该交易最近的一个事件;退款和争议会更新已有的那一行,而不是插入一个同级行。
| 状态 | 含义 |
|---|---|
succeeded | 付款已完成。钱已在你的账户里(已扣除渠道费用)。 |
pending | 付款在途中。常见于异步付款方式(ACH、某些加密货币渠道),其确认需要数分钟到数小时。 |
failed | 付款未完成:银行卡被拒、授权过期、硬性拒绝。没有钱发生流动。 |
partial | 买家付的比开票的少(加密货币买家发了一个被网络手续费扣减后的金额时常见)。该行的 amount 反映实际收到的;查 metadata.invoicedAmount 看请求的是多少。 |
refunded | 钱已退还给买家,全额或部分。该行的 amount 是退款金额;退款可能在原付款之后数天或数周发生。 |
disputed | 买家(或其银行)发起了争议或拒付。查渠道的界面了解回应窗口。该行的 metadata.reason 原样携带渠道的分类。 |
pending_manual | 一笔邮寄付款交易正在等待你的实体确认。见下一节。 |
manual_canceled | 在买家的付款到达之前,你在一行待处理的邮寄付款上点击了“取消”。 |
manual_expired | 一行待处理的邮寄付款放了 30 天未确认,自动过期了。 |
manual_revoked | 你确认收到了一笔邮寄付款,但之后撤销了确认(例如这笔付款后来被证实无效)。该行从 succeeded 退回到这个终态。 |
退款、争议、部分付款
Coin Moebius 监听这些渠道事件,并更新后台里的原始交易行。具体而言:
- 退款:Stripe 的
charge.refunded事件(全额或部分退款,包含amount_refunded,以便部分退款显示退回的那一部分)。NOWPayments 的refundedIPN。该行的状态翻转为refunded,amount反映退款金额,而metadata.originalChargeId/metadata.originalAmount携带原付款的上下文。 - 争议(拒付):Stripe 的
charge.dispute.created事件。该行的状态翻转为disputed。渠道所述的原因会原样透传到metadata.reason,你可以随你的意愿在自己的界面里渲染它。 - 部分付款:NOWPayments 的
partially_paidIPN。该行的状态翻转为partial。amount反映实际收到的(actually_paid);metadata.invoicedAmount是请求的金额。
在 v1 里,这些事件会在后台以及通过 /status 端点呈现。未来的一个版本会加上邮件通知和一个出站 webhook 转发器,让你自己的后端能自动响应。眼下,设置一个小型轮询任务(见下一节)或查看后台。