Sha256: a487ed1350a85be03a7546019d97a996276f12bfdbfa57353ae93e43200eb060

Contents?: true

Size: 1.7 KB

Versions: 8

Compression:

Stored size: 1.7 KB

Contents

module Spree
  CheckoutController.class_eval do
    before_filter :confirm_skrill, :only => [:update]

    def skrill_return

      unless @order.payments.where(:source_type => 'Spree::SkrillTransaction').present?
        payment_method = PaymentMethod.find(params[:payment_method_id])
        skrill_transaction = SkrillTransaction.new

        payment = @order.payments.create({:amount => @order.total,
                                         :source => skrill_transaction,
                                         :payment_method => payment_method},
                                         :without_protection => true)
        payment.started_processing!
        payment.pend!
      end

      @order.update_attributes({:state => "complete", :completed_at => Time.now}, :without_protection => true)

      until @order.state == "complete"
        if @order.next!
          @order.update!
          state_callback(:after)
        end
      end

      @order.finalize!

      flash.notice = Spree.t(:order_processed_successfully)
      redirect_to completion_route
    end

    def skrill_cancel
      flash[:error] = Spree.t(:payment_has_been_cancelled)
      redirect_to edit_order_path(@order)
    end

    private
    def confirm_skrill
      return unless (params[:state] == "payment") && params[:order] && params[:order][:payments_attributes]

      payment_method = PaymentMethod.find(params[:order][:payments_attributes].first[:payment_method_id])
      if payment_method.kind_of?(BillingIntegration::Skrill::QuickCheckout)
        #TODO confirming payment method
        redirect_to edit_order_checkout_url(@order, :state => 'payment'),
                    :notice => Spree.t(:complete_skrill_checkout)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 3 rubygems

Version Path
solidus_gateway-1.1.1 lib/controllers/frontend/spree/checkout_controller_decorator.rb
solidus_gateway-1.1.0 lib/controllers/frontend/spree/checkout_controller_decorator.rb
spree_gateway-3.1.0 lib/controllers/frontend/spree/checkout_controller_decorator.rb
spree_gateway-3.0.0 lib/controllers/frontend/spree/checkout_controller_decorator.rb
solidus_gateway-1.0.1 lib/controllers/frontend/spree/checkout_controller_decorator.rb
solidus_gateway-0.9.0 lib/controllers/frontend/spree/checkout_controller_decorator.rb
solidus_gateway-1.0.0 lib/controllers/frontend/spree/checkout_controller_decorator.rb
spree_first_data_gge4-3.0.0 lib/controllers/frontend/spree/checkout_controller_decorator.rb