Sha256: fc02928857803b1d5503dfb13caa883f91c3e3fed4063fe1a247d797cea2c4dd

Contents?: true

Size: 1.14 KB

Versions: 4

Compression:

Stored size: 1.14 KB

Contents

module PuntoPagosRails
  class TransactionsController < ApplicationController
    def create
      srv = TransactionService.new(resource_id)

      if srv.create
        redirect_to srv.process_url
      else
        @resource = resource_by_id
        render_payment_error_view srv.error
      end
    end

    def notification
      response = TransactionService.notificate(params, request.headers)
      render json: response
    end

    def success
      @resource = resource_by_token
    end

    def error
      @resource = resource_by_token
      translated_error = I18n.t("punto_pagos_rails.errors.invalid_puntopagos_payment")
      render_payment_error_view translated_error
    end

    private

    def render_payment_error_view(error_message)
      render 'error', locals: { error_message: error_message }
    end

    def resource_id
      @resource_id ||= begin
        params.require(:resource_id)
        params[:resource_id]
      end
    end

    def resource_by_token
      Transaction.find_by(token: params[:token]).try(:resource)
    end

    def resource_by_id
      PuntoPagosRails.resource_class.find_by(id: params[:resource_id])
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
punto_pagos_rails-0.1.1 app/controllers/punto_pagos_rails/transactions_controller.rb
punto_pagos_rails-0.1.0 app/controllers/punto_pagos_rails/transactions_controller.rb
punto_pagos_rails-0.0.2 app/controllers/punto_pagos_rails/transactions_controller.rb
punto_pagos_rails-0.0.1 app/controllers/punto_pagos_rails/transactions_controller.rb