Module: Spree::Api::V2::Storefront::CheckoutControllerDecorator

Defined in:
app/controllers/spree/api/v2/storefront/checkout_controller_decorator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(base) ⇒ Object



6
7
8
# File 'app/controllers/spree/api/v2/storefront/checkout_controller_decorator.rb', line 6

def self.prepended(base)
  base.skip_before_action :ensure_order, only: [:request_update_payment]
end

Instance Method Details

#create_payment_serviceObject

override



11
12
13
# File 'app/controllers/spree/api/v2/storefront/checkout_controller_decorator.rb', line 11

def create_payment_service
  Vpago::Payments::FindOrCreate
end

#payment_redirectObject

This API are deprecated

Raises:

  • (ActiveRecord::RecordNotFound)


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'app/controllers/spree/api/v2/storefront/checkout_controller_decorator.rb', line 37

def payment_redirect
  payments = spree_current_order.payments
  raise ActiveRecord::RecordNotFound if payments.blank?

  last_payment = payments.last
  payment_redirect = ::Vpago::PaymentRedirectHandler.new(
    payment: last_payment,
    override_return_deeplink_url: params[:override_return_deeplink_url]
  ).process

  if payment_redirect.error_message.blank?
    render_serialized_payload do
      payment_redirect_serializer.new(payment_redirect, params: serializer_params).serializable_hash
    end
  else
    render_error_payload(payment_redirect.error_message)
  end
end

#payment_redirect_serializerObject



56
57
58
# File 'app/controllers/spree/api/v2/storefront/checkout_controller_decorator.rb', line 56

def payment_redirect_serializer
  Spree::V2::Storefront::PaymentRedirectSerializer
end

#request_update_paymentObject

This API are deprecated :order_token, :payment_number



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/controllers/spree/api/v2/storefront/checkout_controller_decorator.rb', line 17

def request_update_payment
  # this action is mostly called after order is completed.
  # spree_current_order will be nil in this case, so we need to manual find.
  order = find_order_by_token(params[:order_token])

  if order.paid?
    render_serialized_payload { serialize_resource(order) }
  else
    payment = find_payment(order, params[:payment_number])
    context = payment.request_update

    if context.success? && context.error_message.blank?
      render_serialized_payload { serialize_resource(order) }
    else
      render_error_payload(context.error_message)
    end
  end
end