Class: SpreeAdyen::PaymentSessionsController

Inherits:
Object
  • Object
show all
Includes:
Spree::CheckoutAnalyticsHelper
Defined in:
app/controllers/spree_adyen/payment_sessions_controller.rb

Instance Method Summary collapse

Instance Method Details

#redirectObject

GET /adyen/payment_sessions/redirect



9
10
11
12
# File 'app/controllers/spree_adyen/payment_sessions_controller.rb', line 9

def redirect
  @payment_session = SpreeAdyen::PaymentSession.find_by(adyen_id: params[:sessionId])
  render layout: 'spree_adyen/default'
end

#showObject

GET /adyen/payment_sessions



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/controllers/spree_adyen/payment_sessions_controller.rb', line 15

def show
  @payment_session = SpreeAdyen::PaymentSession.find_by!(adyen_id: params[:sessionId])
  @order = @payment_session.order
  # handle duplicated requests or already processed through webhook
  if @payment_session.canceled? || @order.canceled?
    redirect_to spree.cart_path, status: :see_other
    return
  elsif @order.completed?
    redirect_to spree.checkout_complete_path(@order.token), status: :see_other
    return
  end

  SpreeAdyen::PaymentSessions::ProcessWithResult.new(payment_session: @payment_session, session_result: params[:sessionResult]).call

  if @payment_session.completed?
    handle_success
  elsif @payment_session.pending?
    handle_pending_payment
  elsif @payment_session.canceled?
    redirect_to spree.checkout_path(@order.token), status: :see_other
  elsif @payment_session.refused?
    handle_failure
  end
rescue Spree::Core::GatewayError => e
  handle_failure(e.message)
end