Sha256: 4324bb4ca881bc32b36d5a9d2f312bdbab04f39266bbcee3f89cf830162f3d5f

Contents?: true

Size: 995 Bytes

Versions: 3

Compression:

Stored size: 995 Bytes

Contents

# -*- encoding : utf-8 -*-
Spree::CheckoutController.class_eval do
  before_filter :redirect_to_mercado_pago_if_needed, :only => [:update]

  def redirect_to_mercado_pago_if_needed
    return unless params[:state] == "payment"

    selected_method_id = params[:order][:payments_attributes].first[:payment_method_id]
    @payment_method = Spree::PaymentMethod.find(selected_method_id)

    if @payment_method && @payment_method.kind_of?(PaymentMethod::MercadoPago)
      @order.update_attributes(object_params)

      back_urls = {
        success: spree.mercado_pago_success_url(order_number: @order.number),
        pending: spree.mercado_pago_pending_url(order_number: @order.number),
        failure: spree.mercado_pago_failure_url(order_number: @order.number)
      }

      m = SpreeMercadoPagoClient.new(@order, back_urls)
      
      if m.authenticate && m.send_data
        redirect_to m.redirect_url
      else
        render :action => :mercado_pago_error
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spree_mercado_pago_payment_method-0.0.2 app/controllers/spree/checkout_controller_decorator.rb
spree_mercado_pago_payment_method-0.1.1 app/controllers/spree/checkout_controller_decorator.rb
spree_mercado_pago_payment_method-0.1.0 app/controllers/spree/checkout_controller_decorator.rb