Sha256: 6203b5e48d314e110550b34176cc10a58f681d1b9daad70e0064fa13e2ab6bd9

Contents?: true

Size: 1.29 KB

Versions: 11

Compression:

Stored size: 1.29 KB

Contents

module MpApi
  class Token
    attr_reader :card_number, :expiration_year, :expiration_month, :security_code, :cardholder_name, :id, :errors
    def initialize(card_number:, expiration_year:, expiration_month:, security_code:, cardholder_name:, id: nil, errors: nil)
      @card_number = card_number
      @expiration_year = expiration_year
      @expiration_month = expiration_month
      @security_code = security_code
      @cardholder_name = cardholder_name
      @id = id
      @errors = errors
    end

    def build_json
      {
        card_number: card_number,
        expiration_year: expiration_year,
        expiration_month: expiration_month,
        security_code: security_code,
        cardholder: {
          name: cardholder_name
        }
      }
    end

    def create
      response = Client.new.create_token(JSON.dump(build_json))
      self.class.new(**self.class.build_hash(response.json))
    end

    def self.build_hash(response)
      {
        id: response["id"],
        expiration_year: response["expiration_year"],
        expiration_month: response["expiration_month"],
        cardholder_name: response.dig("cardholder", "name"),
        card_number: response["card_number"],
        security_code: response["security_code"],
        errors: response["error"]
      }
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

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