wirecardBrasil / moip-sdk-ruby

Cliente em Ruby para integração server-side com APIs Moip v2
MIT License
29 stars 27 forks source link

Erró de chaves não validas só para a criação de conta bancaria #83

Closed oscarlaf03 closed 6 years ago

oscarlaf03 commented 6 years ago

Mensagem de erro

Olá pessoal, estou recebendo uma mensagem de erro 401 "Unauthorized' Só na hora de criar uma nova conta bancária, quando quero criar contas moip transparentes, ordens, pagamentos e clientes tenho resposta positiva. é só quando quero criar uma conta bancaria que da esse erro e como meu processo autenticação é o mesmo queria saber o que esta acontecendo.

Em baixo as informações. O que vocês acham?

Mensagem de erro no terminal

=> #<HTTParty::Response:0x55a3c7cd57d8 parsed_response=nil, @response=#<Net::HTTPUnauthorized 401 Unauthorized readbody=true>, @headers={"date"=>["Wed, 27 Jun 2018 00:20:15 GMT"], "server"=>["Apache"], "x-newrelic-app-data"=>["PxQFUlBXAQoTV1VaDgMOVUYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOFAVtGAcHUllGDBIQPh8ZWQFbV0FcRyxdHG1OUQMKXVYCBQxNXUQXQUpnfmQyTRMaA0xWT1QeUg9VfRUAHgFWCE0TAFUDBgADUlNXClBTUABaVBMbAAVdRVY/"], "content-type"=>["text/plain; charset=UTF-8"], "content-length"=>["0"], "x-content-type-options"=>["nosniff"], "vary"=>["Accept-Encoding,Origin"], "connection"=>["close"]}>
[31] pry(main)> 

Minha Autenticação

Configurando a Gem

config/initializers/moip.rb

  class Moip

  attr_reader :token, :key

  def initialize(token = nil, key = nil)
    @token = token || get_token
    @key = key || get_key
  end

  def call
    authentication
  end

  def puts_hello
    'hello world'
  end

  private

  def get_token
    ENV['MOIP_SANDBOX_TOKEN']
  end

  def get_key
    ENV['MOIP_SANDBOX_KEY']
  end

  def credentials
    Rails.application.credentials[Rails.env.to_sym][:moip]
  end

  def authentication
    Moip2::Api.new(moip_client)
  end

  def moip_client
    Moip2::Client.new(:sandbox, moip_auth)
  end

  def moip_auth
    auth = Moip2::Auth::OAuth.new(ENV['MOIP_SANDBOX_ACCESS_TOKEN'])
  end
end

Meu Service object

app/services/moip_api.rb

class MoipApi
  attr_reader :api
  def initialize()
    @api = Moip.new.call
  end
  #[...]
   def create_bank_info(bank_info)
      bank_account = api.bank_accounts.create(bank_info.tour_store.moip_id, bank_post_data(bank_info))
      bank_info.update(moip_id: bank_account[:id], status: bank_account[:status]) unless bank_account[:errors].present?
    bank_account
  end

  #[...]
  private
  #[...]
  def bank_post_data(banking_information)
    {
      bankNumber: banking_information.bank_code,
      agencyNumber: banking_information.bank_ag.to_i,
      agencyCheckNumber: banking_information.ag_digit,
      accountNumber: banking_information.bank_cc.to_i,
      accountCheckNumber: banking_information.cc_digit.to_i,
      type: banking_information.account_type,
      holder: {
        taxDocument: {
          type: banking_information.holder_id_type,
          number: banking_information.holder_id.to_i,
        },
        fullname: banking_information.holder_name,
      }
    }
  end

end

Instanciado o api

app/controllers/application_controller.rb

  #[...]
  def set_moip_api
    @moip = MoipApi.new
  end

Meu BankingInformationController

app/controllers/banking_informations_controller.rb

 #[...]
  def create
    @banking_information = BankingInformation.new(set_params)
    @banking_information.tour_store = @tour_store
    authorize @banking_information
    if @banking_information.save
      create_moip_bank
      redirect_to tour_store_dashboard_path(@tour_store)
    else
      flash[:alert] = @banking_information.errors.first.second
      redirect_back fallback_location: tour_store_bank_path(@tour_store)
    end
  end
  #[...]
  def create_moip_bank
    @moip.create_bank_info(@banking_information)
  end
mbnakaya commented 6 years ago

Esta issue será fechada, pois o caso foi tratado pelo time de integração.

image

Se achar necessário, fique à vontade para comentar ou reabrir a issue.