2017-02-23 2 views
1

나는 술을 사용하는 레일 앱에 액티비티 머천트 게이트웨이를 통합하고 있지만 항상 을 통해 상태를 전환 할 수 없습니다. 다음에서 지불 : 이유 (지불하지 않음) 지불 방법.Spree 지불 없음

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

주문은 상태 머신 (state machine)을 통과 같은 오류 해결 방법에 대해 어떤 생각과 :

나는 야단법석을 3.1 - 안정적인 여기 내 코드 것 사용하고 있습니다 완전한 상태로 끝납니다. 중간 상태는 Checkout Flow API를 사용하여 구성 할 수 있습니다. 다음과 같이

기본 상태

은 다음과 같습니다 payment_required 경우

카트 주소 전달 지불 확인 완전한 지불 상태는 트리거 될 것인가? true를 반환합니다.

확인 상태는 confirmation_required 인 경우에만 트리거됩니까? 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!