class SimplePin::Pin

Attributes

auth[RW]
base_url[RW]

Public Class Methods

new(key = '', env = :test) click to toggle source

Create a new Pin instance

key: Your Pin secret key
env: The environment you want to use.
# File lib/simple_pin.rb, line 12
def initialize(key = '', env = :test)
  @key = key
  env = env.to_sym
  @auth = { username: @key, password: '' }
  @base_url = if env == :live
                'https://api.pin.net.au/1/'
              else
                'https://test-api.pin.net.au/1/'
              end
end

Public Instance Methods

create_card(options = {}) click to toggle source

Creates a card given a hash of options pin.net.au/docs/api/cards returns: a card object

# File lib/simple_pin.rb, line 43
def create_card(options = {})
  build_response(make_request(:post, url: 'cards', options: options))
end
create_charge(options = {}) click to toggle source

Create a charge given charge details and a card, pin.net.au/docs/api/charges returns: a charge object

# File lib/simple_pin.rb, line 34
def create_charge(options = {})
  build_response(make_request(:post, url: 'charges', options: options))
end
create_customer(options = {}) click to toggle source

Create a customer given customer details and a card_token pin.net.au/docs/api/customers returns: a customer object

# File lib/simple_pin.rb, line 52
def create_customer(options = {})
  build_response(make_request(:post, url: 'customers', options: options))
end

Private Instance Methods

build_response(response) click to toggle source
# File lib/simple_pin.rb, line 58
def build_response(response)
  fail PinError, error_message(response) unless response.code == 201
  response['response']
end
error_message(response) click to toggle source
# File lib/simple_pin.rb, line 71
def error_message(response)
  %(Pin API returned code #{response.code} for #{@base_url}, with error: '#{response.body}')
end
make_request(method, args) click to toggle source

Sends an authenticated request to pin’s server

# File lib/simple_pin.rb, line 66
def make_request(method, args)
  @args = args
  HTTParty.send(method, "#{@base_url}#{args[:url]}", body: @args[:options], basic_auth: @auth)
end