epay_state (erlang_pay v0.3.2)
View Source统一交易状态词汇表与三态分类(单一真相源)。
对标 omnipay NotificationInterface 的三态读取(isSuccessful/isPending):
各网关把渠道私有状态(微信 SUCCESS、支付宝 TRADE_SUCCESS、Stripe
payment_intent.succeeded…)经各自 map_*_state/1 归一到本模块定义的
canonical 状态集,调用方据此统一判断,无须再认识各网关词汇。
canonical 状态:
| 状态 | 含义 | is_paid | is_pending | is_final |
|---|---|---|---|---|
success | 支付成功 | ✓ | ✓ | |
pending | 待支付/处理中(须继续轮询) | ✓ | ||
closed | 关单/取消(未支付即终结) | ✓ | ||
refunded | 已退款 | ✓ | ||
revoked | 已撤销 | ✓ | ||
error | 支付失败 | ✓ | ||
unknown | 未知(须回查 PSP) |
is_final/1 标识状态已收敛——供订单状态机/查单轮询判断「是否还需再查」:
pending/unknown 非终态须再查,其余为终态。
本模块为纯函数,零依赖。
Summary
Functions
状态是否已收敛(终态)。
支付成功(omnipay isSuccessful)——仅 success 为真。
待支付/处理中(omnipay isPending)——仅 pending 为真,须继续轮询。
判断 Term 是否为合法 canonical 状态。
canonical 状态全集(单一真相源)。
Types
Functions
状态是否已收敛(终态)。
success/closed/refunded/revoked/error 为终态;pending/unknown
非终态,订单状态机/查单轮询应据此决定是否继续回查 PSP。
支付成功(omnipay isSuccessful)——仅 success 为真。
待支付/处理中(omnipay isPending)——仅 pending 为真,须继续轮询。
判断 Term 是否为合法 canonical 状态。
-spec states() -> [state()].
canonical 状态全集(单一真相源)。