Module: Pin::API::Tokens

Included in:
Client
Defined in:
lib/pin/api/tokens.rb

Instance Method Summary collapse

Instance Method Details

#create_token(number, expiry_month, expiry_year, cvc, name, address) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/pin/api/tokens.rb', line 2

def create_token(number, expiry_month, expiry_year, cvc, name, address)
  require_field number, :number
  require_field expiry_month, :expiry_month
  require_field expiry_year, :expiry_year
  require_field cvc, :cvc
  require_field name, :name

  unless address.is_a? Hash
    throw 'Address must be a hash containing each address field: line1, line2 (optional), city, postcode, state, country'
  end

  require_field address[:line1], :line1
  require_field address[:city], :city
  require_field address[:postcode], :postcode
  require_field address[:state], :state
  require_field address[:country], :country

  params = {
      :number => number,
      :expiry_month => expiry_month,
      :expiry_year => expiry_year,
      :cvc => cvc,
      :name => name,
      :address_line1 => address[:line1],
      :address_city => address[:city],
      :address_postcode => address[:postcode],
      :address_state => address[:state],
      :address_country => address[:country],
  }

  if address.has_key? :line2 && !address[:line2].blank?
    params[:address_line2] = address[:line2]
  end

  raw_response = api_call(:post, 'cards', params)
  pin_response(raw_response, Pin::Models::Card.new(raw_response['response']))
end