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_paidis_pendingis_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

state()

-type state() :: success | pending | closed | refunded | revoked | error | unknown.

Functions

is_final/1

-spec is_final(state()) -> boolean().

状态是否已收敛(终态)。

success/closed/refunded/revoked/error 为终态;pending/unknown 非终态,订单状态机/查单轮询应据此决定是否继续回查 PSP。

is_paid/1

-spec is_paid(state()) -> boolean().

支付成功(omnipay isSuccessful)——仅 success 为真。

is_pending/1

-spec is_pending(state()) -> boolean().

待支付/处理中(omnipay isPending)——仅 pending 为真,须继续轮询。

is_state(Term)

-spec is_state(term()) -> boolean().

判断 Term 是否为合法 canonical 状态。

states()

-spec states() -> [state()].

canonical 状态全集(单一真相源)。