Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.
This repository was archived by the owner on Oct 15, 2024. It is now read-only.

Bad Request na criação da conta bancária quando holder.taxDocument.number" == "CNPJ" O mesmo código funciona sim quando o holder.taxDocument.number" == 'CPF' #85

@oscarlaf03

Description

@oscarlaf03

Issue

Recebo bad request enviando um post request da uma conta bancária com um "holder.taxDocument.number" CNPJ mas recebo 200 com quando o documento é CPF

Error message

#<HTTParty::Response:0x7fa88f649d78 parsed_response=nil, @response=#<Net::HTTPBadRequest 400 Bad Request readbody=true>, @headers={"date"=>["Thu, 30 Aug 2018 13:51:17 GMT"], "server"=>["Apache"], "x-newrelic-app-data"=>["PxQGVFJbCgcTXFdSAwUOVEYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOFAVtGAcHUllGDBIQPh8ZWQFbV0FcRyxdHG1OUQMKXVYCBQxNXUQXQUpnfmQyTRMaA0xWT1IeUQxUCwgFBgRJC1UDTREGAVUPUQRaXlIDUVRQVgdWREhXV18RAz4="], "content-type"=>["text/plain; charset=UTF-8"], "content-length"=>["0"], "x-content-type-options"=>["nosniff"], "vary"=>["Origin"], "connection"=>["close"]}>

Code

app/services/moip_api.rb

class MoipApi
  def initialize(args = {})
    @test = args[:test] || false
	@api = Moip.new(args[:store], @test).call
    @platform_token = @test ? ENV['MOIP_SANDBOX_ACCESS_TOKEN'] : ENV['MOIP_ACCESS_TOKEN']
  end	
  #[...]
  
  def create_bank(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]) 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,
        },
        fullname: banking_information.holder_name,
      }
    }
  end
end

config/initializers/moip.rb

class Moip

  def initialize(store = nil, test = nil)
    @store = store
    @test = test || false
    @access_token = store_token || platform_token
  end

  def call
    authentication
  end

  private
    def authentication
    dummy? ? Moip2::Api.new(moip_sandbox_client) : Moip2::Api.new(moip_client)
  end

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

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

  def moip_auth
    Moip2::Auth::OAuth.new(access_token)
  end

  def dummy?
    @store ? @store.dummy : @test
  end
  #[...]
 end

app/controllers/banking_informations_controller.rb

class BankingInformationsController < ApplicationController
  #[...]
  def create
    @banking_information = BankingInformation.new(set_params)
    @banking_information.tour_store = @tour_store
    authorize @banking_information
    if @banking_information.save && create_moip_bank[:errors].nil?
      flash[:notice] = 'Conta bancária criada com sucesso'
      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
  #[...]
  private
  #[...]
  def create_moip_bank
    MoipApi.new(store: @tour_store).create_bank(@banking_information)
  end

app/models/banking_information.rb

class BankingInformation < ApplicationRecord
  #[...]
end

Post Request Error

#Método que chama o post request
api.bank_accounts.create(bank_info.tour_store.moip_id, bank_post_data(bank_info))

api #=> 
#<Moip2::Api:0x00007fcb0bdf8648
 @client=
  #<Moip2::Client:0x00007fcb0bdf88f0
   @auth=
    #<Moip2::Auth::OAuth:0x00007fcb0bdf8918
     @oauth=
      "da213e99cbcb4638a562dfd34cba3795_v2">,
   @env=:production,
   @opts=
    {:headers=>
      {"Content-Type"=>"application/json",
       "Authorization"=>
        "OAuth da213e99cbcb4638a562dfd34cba3795_v2",
       "User-Agent"=>
        "MoipRubySDK/1.2.1 (+https://github.com/moip/moip-sdk-ruby)"}},
   @uri="https://api.moip.com.br">>

bank_info.tour_store.moip_id  #=> "MPA-EA71B0668CA6"

bank_post_data(bank_info) #=>

{:bankNumber=>"033",
 :agencyNumber=>4109,
 :agencyCheckNumber=>"",
 :accountNumber=>13002469,
 :accountCheckNumber=>1,
 :type=>"CHECKING",
 :holder=>
  {:taxDocument=>
    {:type=>"CNPJ", :number=>"19.870.536/0001-96"},
   :fullname=>"Danilo dos Santos Rollo - ME"}}

api.bank_accounts.create(bank_info.tour_store.moip_id, bank_post_data(bank_info)) #=>

#Retorna este erro
=> #<HTTParty::Response:0x7fcb0bde67b8 parsed_response=nil, @response=#<Net::HTTPBadRequest 400 Bad Request readbody=true>, @headers={"date"=>["Thu, 30 Aug 2018 14:25:41 GMT"], "server"=>["Apache"], "x-newrelic-app-data"=>["PxQGVFJbCgcTXFdSAwUOVEYdFGQHBDcQUQxLA1tMXV1dORYzVBJHNQFUZAQUFVFQVThOFAVtGAcHUllGDBIQPh8ZWQFbV0FcRyxdHG1OUQMKXVYCBQxNXUQXQUpnfmQyTRMaA0xWT1IeUQ9RDAgEBx9XDVMdQ1IAVgNVAlQGAVZVAVhRAFcVSgJQWkAHOw=="], "content-type"=>["text/plain; charset=UTF-8"], "content-length"=>["0"], "x-content-type-options"=>["nosniff"], "vary"=>["Origin"], "connection"=>["close"]}>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions