Class: Spree::Api::V2::Storefront::Adyen::PaymentSessionsController

Inherits:
BaseController
  • Object
show all
Includes:
OrderConcern
Defined in:
lib/spree_api_v2/spree/api/v2/storefront/adyen/payment_sessions_controller.rb

Instance Method Summary collapse

Methods inherited from BaseController

#adyen_gateway, #require_adyen_gateway

Instance Method Details

#completeObject

POST /api/v2/storefront/adyen/payment_sessions/:id/complete



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/spree_api_v2/spree/api/v2/storefront/adyen/payment_sessions_controller.rb', line 33

def complete
  spree_authorize! :update, spree_current_order, order_token

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

  if @payment_session.completed?
    render_serialized_payload { serialize_resource(@payment_session) }
  else
    render_error_payload("Can't complete the order for the payment session in the #{@payment_session.status} state")
  end
rescue Spree::Core::GatewayError => e
  render_error_payload(e.message, :unprocessable_entity)
end

#createObject

POST /api/v2/storefront/adyen/payment_sessions



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/spree_api_v2/spree/api/v2/storefront/adyen/payment_sessions_controller.rb', line 12

def create
  spree_authorize! :update, spree_current_order, order_token

  payment_session_result = SpreeAdyen::PaymentSessions::FindOrCreate.new(
    order: spree_current_order,
    amount: permitted_attributes[:amount],
    user: spree_current_user,
    payment_method: adyen_gateway,
    channel: permitted_attributes[:channel],
    return_url: permitted_attributes[:return_url]
  ).call

  if payment_session_result.success?
    render_serialized_payload { serialize_resource(payment_session_result.value) }
  else
    error = payment_session_result.value&.errors || payment_session_result.error.value
    render_error_payload(error)
  end
end

#showObject

GET /api/v2/storefront/adyen/payment_sessions/:id



48
49
50
51
52
# File 'lib/spree_api_v2/spree/api/v2/storefront/adyen/payment_sessions_controller.rb', line 48

def show
  spree_authorize! :show, spree_current_order, order_token

  render_serialized_payload { serialize_resource(@payment_session) }
end