我正在将 actvie 商家网关集成到使用 spree 的 Rails 应用程序中,但总是出现 无法通过 :next 从 : payment 转换状态(原因:未找到付款),尽管有是一种付款方式。
我正在使用 Spree 3.1-stable 这是我的代码:
payment = @order.payments.create({
amount: @order.total,
payment_method: payment_method,
source: credit_card,
})
# @order.next! through Cannot transition state via :next from :payment (Reason(s): No payment found)
@order.next!
关于如何修复此类错误的任何想法
最佳答案
订单流经状态机,从购物车状态开始,到完成状态结束。可以使用 Checkout Flow API 配置中间状态。
默认状态如下:
购物车 地址 送货 支付 确认 完全的 仅当 payment_required? 时才会触发付款状态返回 true。
只有在确认需要确认时才会触发确认状态?返回 true。
只能通过以下两种方式之一达到完整状态:
订单无需付款。 订单需付款,且至少已收到订单总额作为付款。 假设订单满足下一个状态的条件,您将能够通过调用该对象的 next 将其转换到下一个状态。如果返回 false,则订单不符合条件。要找出无法转换的原因,请检查错误方法调用的结果。
将状态从付款更改为完成需要至少完成一笔付款。!
所以
payment = @order.payments.create({
amount: @order.total,
payment_method: payment_method,
source: credit_card, })
payment.complete!
# @order.next! through Cannot transition state via :next from :payment (Reason(s): No payment found)
@order.next!
关于 spree 未找到付款,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42410261/