Sha256: 21377abe75d3a09a8daa766df8c1659b7fcd8f646aa1c9411d56af56f36a1b32

Contents?: true

Size: 1.43 KB

Versions: 8

Compression:

Stored size: 1.43 KB

Contents

module MpApi
  class Client < Ac::Base
    BASE_URL = "https://api.mercadopago.com/v1/"
    MAX_RETRIES = 1
    attr_reader :access_token
    def initialize(access_token = MpApi.configuration.access_token)
      @headers = {
        "Content-Type" => "application/json",
        "x-idempotency-key" => SecureRandom.uuid
      }
      super(access_token)
    end

    def create_payment(body)
      post("/payments", body: body, headers: @headers) { |response| validate_response(response, "id") }
    end

    def get_payment(payment_id)
      get("/payments/#{payment_id}") { |response| validate_response(response, "id") }
    end

    def update_payment(payment_id, body)
      put("/payments/#{payment_id}", body: body, headers: @headers) { |response| validate_response(response, "id") }
    end

    def create_token(card_token_data)
      post("/card_tokens", body: card_token_data, headers: @headers) { |response| validate_response(response, "id") }
    end

    def search_payment_methods(query)
      get("/payment_methods/search", params: query) { |response| validate_response(response, ["results", 0]) }
    end

    def get_payment_methods
      get("/payment_methods") { |response| validate_response(response, "id") }
    end

    private

    def validate_response(response, required_response_key)
      puts response.json unless response.success?
      ![500, 429].include?(response.code) || response.json.dig(*required_response_key)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
mp_api-1.0.1 lib/mp_api/client.rb
mp_api-0.3.12 lib/mp_api/client.rb
mp_api-0.3.11 lib/mp_api/client.rb
mp_api-0.3.10 lib/mp_api/client.rb
mp_api-0.3.9 lib/mp_api/client.rb
mp_api-0.3.8 lib/mp_api/client.rb
mp_api-0.3.7 lib/mp_api/client.rb
mp_api-0.3.6 lib/mp_api/client.rb