Sha256: 1799f5162aa7589072425ea72a9a1f76450d1cad5c0531bed6b831c7309d243d

Contents?: true

Size: 1.11 KB

Versions: 11

Compression:

Stored size: 1.11 KB

Contents

module MpApi
  class PaymentMethod
    attr_reader :payment_method_id, :issuer_id, :installments, :errors
    def initialize(payment_method_id:, issuer_id:, installments:, errors: nil)
      @payment_method_id = payment_method_id
      @issuer_id = issuer_id
      @installments = installments
      @errors = errors
    end

    def self.find_by_first_six_digits(first_six_digits, credit: true)
      response = Client.new.search_payment_methods(build_query(first_six_digits))
      new(**build_hash(response.json, credit))
    end

    def self.build_query(first_six_digits)
      {
        marketplace: "NONE",
        status: "active",
        bins: first_six_digits
      }
    end

    def self.build_hash(response, credit)
      payment_type_id = credit ? "credit_card" : "debit_card"
      payment_method = response.dig("results")&.find { |pm| pm["payment_type_id"] == payment_type_id }
      {
        payment_method_id: payment_method&.dig("id"),
        issuer_id: payment_method&.dig("issuer", "id"),
        installments: payment_method&.dig("payer_costs"),
        errors: response.dig("message")
      }
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
mp_api-1.2.2 lib/mp_api/payment_method.rb
mp_api-1.2.1 lib/mp_api/payment_method.rb
mp_api-1.2.0 lib/mp_api/payment_method.rb
mp_api-1.0.1 lib/mp_api/payment_method.rb
mp_api-0.3.12 lib/mp_api/payment_method.rb
mp_api-0.3.11 lib/mp_api/payment_method.rb
mp_api-0.3.10 lib/mp_api/payment_method.rb
mp_api-0.3.9 lib/mp_api/payment_method.rb
mp_api-0.3.8 lib/mp_api/payment_method.rb
mp_api-0.3.7 lib/mp_api/payment_method.rb
mp_api-0.3.6 lib/mp_api/payment_method.rb