2017-02-23 13 views
1

私は酒宴を使用するレールアプリにactvie商人のゲートウェイを統合していますが、常にを取得します。状態は次の経由では移行できません:理由(支払い)(理由:支払われません)お支払い方法。Spreeお支払いがありません

私はここシュプレー3.1-安定 を使用していますが、私のコードです:

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! 

私は、このようなエラーを修正することができ

答えて

1

受注は、ステートマシンを流れる方法についてのアイデアは、カートの状態から始まり、完全な状態に終わる。中間状態は、Checkout Flow APIを使用して設定できます。次のように

デフォルトの状態は以下のとおりです。

カート アドレス 配達 支払い 確認 完全 payment_required場合は支払い状態にのみトリガされますか? trueを返します。

確認状態は、確認が必要な場合にのみトリガされますか? trueを返します。

完全な状態では唯一の2つの方法のいずれかで到達することができます。

んが、支払いは、注文に必要とされません。 注文には支払いが必要で、少なくとも注文総額は支払いとして受け取られています。 注文が次の状態の基準を満たしていると仮定すると、そのオブジェクトでnextを呼び出すことで次の状態に遷移させることができます。 falseが返された場合、その注文は基準を満たしません。遷移できない理由を調べるには、エラーメソッド呼び出しの結果を確認します。

状態を支払いから完了に変更するには、完了した支払が少なくとも1回必要です。

ので

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!