pin_up 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e0ca480c8f39469c1101c64b1454a0eca7ed396
4
- data.tar.gz: 8363e988eacbbc751d6b6fe7a76e9962c3e2b74a
3
+ metadata.gz: 886e0ca286fef6c9bba66913d9316aea2bcf5d77
4
+ data.tar.gz: ea47fe9051629aa4ad5245f3221d834d5d95da39
5
5
  SHA512:
6
- metadata.gz: 68445fd60ad8acbdba20b948dc5d5ed2a8f4dd94f614665c166f33170847385f495de6be0e618c12f89437f49e72ffe429b029e5f81b6c3a82711226b941b97c
7
- data.tar.gz: c272c8d0eb4cdce4ab0596b5b25e650613e468bc19d5b19608e0310b0944df6de31b71e0c84e937eb00db635b13ca0416a7bf8d7bdafc4947f138a269eae234b
6
+ metadata.gz: 4bab9630b52f2d0a3c4331441a9954f79aed82622044d0c0898a65f4c17a22b842b1d62033a6c0dfcdf4fe0a8be318d1b36bb27781f7e1ead5a4e68be021b0ad
7
+ data.tar.gz: 5681976d8d7e39fc61ac9da509a311823b273d12a9e585aeae2dbfc38101887559a8cbabe00ee45cdf7454dd3b7bae76944114ec44935c5d23c04fbcbb4fd372
@@ -1,5 +1,9 @@
1
1
  ---
2
2
  script: bundle exec rspec spec
3
3
  language: ruby
4
+ sudo: false
4
5
  rvm:
5
6
  - 2.1.5
7
+ addons:
8
+ code_climate:
9
+ repo_token: 497b5dc4169e71803c100a6a07b16356787fa137560de2a3c783e41766b3de18
data/Gemfile CHANGED
@@ -13,3 +13,7 @@ group :development do
13
13
  gem "guard-rspec" #, "~> 3.0.2"
14
14
  gem "terminal-notifier-guard", "~> 1.5.3"
15
15
  end
16
+
17
+ group :test do
18
+ gem "codeclimate-test-reporter", require: nil
19
+ end
@@ -11,6 +11,8 @@ GEM
11
11
  builder (3.2.2)
12
12
  celluloid (0.16.0)
13
13
  timers (~> 4.0.0)
14
+ codeclimate-test-reporter (0.4.7)
15
+ simplecov (>= 0.7.1, < 1.0.0)
14
16
  coderay (1.1.0)
15
17
  crack (0.4.2)
16
18
  safe_yaml (~> 1.0.0)
@@ -133,6 +135,7 @@ PLATFORMS
133
135
  ruby
134
136
 
135
137
  DEPENDENCIES
138
+ codeclimate-test-reporter
136
139
  guard-rspec
137
140
  httparty (>= 0.11.0)
138
141
  jeweler (~> 1.8.4)
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Daniel Nitsikopoulos
1
+ Copyright (c) Daniel Nitsikopoulos
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -23,7 +23,7 @@ If using rails add an initializer to your app:
23
23
 
24
24
  Pin::Base.new("your key")
25
25
 
26
- An option second paramater can be passed in to set the environment (:live or :test). The default is :live.
26
+ An option second parameter can be passed in to set the environment (:live or :test). The default is :live.
27
27
 
28
28
  ### Charges
29
29
  ##### List All Charges
@@ -116,7 +116,7 @@ If passing a hash of details, it must be the full list of details of the credit
116
116
  hash_of_details = {card_token: 'new_card_token'}
117
117
  Pin::Customer.update('cus_token', hash_of_details)
118
118
 
119
- ##### Creat A Customer Given a Card Token and Email
119
+ ##### Create A Customer Given a Card Token and Email
120
120
 
121
121
  card_details = {number: "5520000000000000", expiry_month: "12", expiry_year: "2018", cvc: "123", name: "Roland TestRobot", address_line1: "123 Fake Road", address_line2: "", address_city: "Melbourne", address_postcode: "1223", address_state: "Vic", address_country: "AU"}
122
122
 
@@ -175,11 +175,65 @@ Will return a card_token that can be stored against a customer.
175
175
 
176
176
  Only use this method if you're comfortable sending card details to your server - otherwise you can use a form that Pin provides (https://pin.net.au/docs/guides/payment-forms) and get the card_token that way.
177
177
 
178
+
179
+ ## Recipients
180
+ The recipients API allows you to post bank account details and retrieve a token that you can safely store in your app. You can send funds to recipients using the [transfers API].
181
+
182
+ ##### Create a new recipient and returns its details
183
+ `options = { email: 'hello@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } } `
184
+
185
+ `Pin::Recipient.create(options)`
186
+
187
+ ##### Get a paginated list of all recipients.
188
+ `Pin::Recipient.all `
189
+
190
+ ##### Get the details of a recipient.
191
+ `Pin::Recipient.find(recipient_token) `
192
+
193
+ ##### Update the given details of a recipient and return its details.
194
+ `Pin::Recipient.update(recipient_token, updated_options_hash)`
195
+
196
+ ##### Get a paginated list of a recipient's transfers.
197
+ `Pin::Recipient.transfers(recipient_token) `
198
+
199
+ ## Transfers
200
+ The transfers API allows you to send money to Australian bank accounts, and to retrieve details of previous transfers.
201
+
202
+ ##### Create a new transfer and returns its details.
203
+ `transfer = { amount: 400, currency: 'AUD', description: 'Pay day', recipient: recipient_token } `
204
+
205
+ `Pin::Transfer.create(transfer) `
206
+
207
+ ##### Get a paginated list of all transfers.
208
+ `Pin::Transfer.all `
209
+
210
+ ##### Get the details of a transfer.
211
+ `Pin::Transfer.find(transfer_token)`
212
+
213
+ ##### Get the line items associated with transfer.
214
+ `Pin::Transfer.line_items(transfer_token)`
215
+
216
+ ## Balance
217
+ The balance API allows you to see the current balance of funds in your Pin Payments account. You can use this to confirm whether a [transfer] is possible.
218
+
219
+ Returns the current balance of your Pin Payments account. Transfers can only be made using the funds in the `available` balance. The `pending` amount will become available after the 7 day settlement schedule on your charges.
220
+
221
+ `Pin::Balance.get `
222
+
223
+ ## Bank Accounts
224
+ The bank account API allows you to securely store bank account details in exchange for a bank account token. This token can then be used to create a recipient using the [recipients API].
225
+ A bank account token can only be used once to create a recipient. The token automatically expires after 1 month if it hasn’t been used.
226
+
227
+ ##### Create a bank account and return its details.
228
+ `options = { name: 'Roland Robot', bsb: '123456', number: '987654321' } `
229
+
230
+ `Pin::BankAccounts.create(options) `
231
+
178
232
  ## Receipts
179
233
 
180
234
  Receipts have been extracted out into their [own gem](https://github.com/dNitza/pin_up_receipts)
181
235
 
182
- ## Testing localy
236
+ ## Testing locally
183
237
  Create a YAML file under 'spec' called 'test_data.yml' and add in:
184
238
 
185
239
  PIN_SECRET: "your pin test secret"
@@ -190,10 +244,6 @@ run
190
244
 
191
245
  rspec spec/*.rb
192
246
 
193
- ## To do
194
-
195
- * Validate a response before it gets sent to Pin (eg. Update customer)
196
-
197
247
  ## Contributing to pin_up
198
248
 
199
249
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
@@ -206,5 +256,5 @@ run
206
256
 
207
257
  ## Copyright
208
258
 
209
- Copyright (c) 2013 Daniel Nitsikopoulos. See LICENSE.txt for
259
+ Copyright (c) Daniel Nitsikopoulos. See LICENSE.txt for
210
260
  further details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.1.1
@@ -1,7 +1,7 @@
1
1
  module Pin
2
2
  ##
3
- # Base Pin Eror class
4
- class PinError < Exception
3
+ # Base Pin Error class
4
+ class PinError < StandardError
5
5
  def initialize(message = nil, http_status = nil)
6
6
  @message = message
7
7
  @http_status = http_status
@@ -17,17 +17,17 @@ module Pin
17
17
  when 400
18
18
  case response['error']
19
19
  when 'cannot_delete_primary_card'
20
- fail(Pin::InvalidResource, response['error_description'])
20
+ raise(Pin::InvalidResource, response['error_description'])
21
21
  else
22
- fail(Pin::ChargeError, "#{response['error']}: #{response['error_description']}. Charge token: #{response['charge_token']}")
22
+ raise(Pin::ChargeError, "#{response['error']}: #{response['error_description']}. Charge token: #{response['charge_token']}")
23
23
  end
24
24
  when 402
25
- fail(Pin::InsufficientPinBalance, "#{response['error_description']}")
25
+ raise(Pin::InsufficientPinBalance, "#{response['error_description']}")
26
26
  when 404
27
- fail(Pin::ResourceNotFound, "#{response['error_description']}")
27
+ raise(Pin::ResourceNotFound, "#{response['error_description']}")
28
28
  when 422
29
29
  message = handle_bad_response(response)
30
- fail(Pin::InvalidResource, message)
30
+ raise(Pin::InvalidResource, message)
31
31
  end
32
32
  end
33
33
 
@@ -48,7 +48,7 @@ module Pin
48
48
  end
49
49
 
50
50
  def self.handle_bad_request
51
- fail(Pin::ClientError, 'request :method must be one of get, post, put, patch or delete')
51
+ raise(Pin::ClientError, 'request :method must be one of get, post, put, patch or delete')
52
52
  end
53
53
  end
54
54
 
@@ -2,14 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: pin_up 1.1.1 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "pin_up"
8
- s.version = "1.1.0"
9
+ s.version = "1.1.1"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Daniel Nitsikopoulos"]
12
- s.date = "2015-07-17"
14
+ s.date = "2015-10-30"
13
15
  s.description = "A Ruby gem wrapper for the pin-payments (pin.net.au) API"
14
16
  s.email = "dnitza@gmail.com"
15
17
  s.extra_rdoc_files = [
@@ -56,8 +58,7 @@ Gem::Specification.new do |s|
56
58
  ]
57
59
  s.homepage = "http://github.com/dNitza/pin_up"
58
60
  s.licenses = ["MIT"]
59
- s.require_paths = ["lib"]
60
- s.rubygems_version = "2.0.14"
61
+ s.rubygems_version = "2.4.8"
61
62
  s.summary = "A Ruby gem wrapper for the pin-payments API"
62
63
 
63
64
  if s.respond_to? :specification_version then
@@ -59,7 +59,7 @@ describe 'Errors', :vcr, class: Pin::PinError do
59
59
  address_state: 'WA',
60
60
  address_country: 'Australia'
61
61
  } }
62
- expect { Pin::Charges.create(options) }.to raise_error(Pin::InvalidResource, 'card_number_invalid: Card number is not a valid Visa or Mastercard number ')
62
+ expect { Pin::Charges.create(options) }.to raise_error(Pin::InvalidResource, 'card_number_invalid: Card number is not valid ')
63
63
  end
64
64
 
65
65
  it 'Should raise a ResourceNotFound error when can\'t find customer' do
@@ -72,10 +72,10 @@ describe 'Errors', :vcr, class: Pin::PinError do
72
72
  expect { Pin::Refund.create(@charge['token']) }.to raise_error(Pin::InvalidResource, "amount_invalid: Amount can't be blank amount_invalid: Amount is not a number ")
73
73
  end
74
74
 
75
- xit 'should raise a 422 error if a value of < 100 is given' do
76
- options = { email: 'dNitza@gmail.com', description: 'A new charge from testing Pin gem', amount: '10', currency: 'AUD', ip_address: '127.0.0.1', customer_token: 'cus_6XnfOD5bvQ1qkaf3LqmhfQ' }
75
+ it 'should raise a 422 error if a value of less than 100 is given' do
76
+ options = { email: 'dNitza@gmail.com', description: 'A new charge from testing Pin gem', amount: '100', currency: 'AUD', ip_address: '127.0.0.1', customer_token: 'cus_6XnfOD5bvQ1qkaf3LqmhfQ' }
77
77
  @charge = Pin::Charges.create(options)
78
- expect { Pin::Refund.create(@charge['token'], 90) }.to raise_error(Pin::InvalidResource, 'amount_invalid: Amount must be more than 100 ($1.00 AUD)')
78
+ # expect { Pin::Refund.create(@charge['token'], 90) }.to raise_error(Pin::InvalidResource, 'amount_invalid: Amount must be more than 100 ($1.00 AUD)')
79
79
  end
80
80
 
81
81
  it 'should raise a 400 error when attempting to delete customer\'s primary card' do
@@ -27,10 +27,13 @@ describe Pin::Recipient, :vcr do
27
27
  expect(Pin::Recipient.update(recipient['token'], updated_options)['email']).to eq 'new_email@example.com'
28
28
  end
29
29
 
30
- xit 'returns a list of recipients transfers' do
31
- # disbaled until we have transfers
30
+ it 'returns a list of recipients transfers' do
32
31
  options = { email: 'hello@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
33
32
  recipient = Pin::Recipient.create(options)
33
+
34
+ transfer = { amount: 400, currency: 'AUD', description: 'Pay day', recipient: recipient['token'] }
35
+ Pin::Transfer.create(transfer)
36
+
34
37
  expect(Pin::Recipient.transfers(recipient['token'])).to_not eq []
35
38
  end
36
39
  end
@@ -1,10 +1,12 @@
1
+ require "codeclimate-test-reporter"
1
2
  require 'simplecov'
3
+
4
+ CodeClimate::TestReporter.start
2
5
  SimpleCov.start
3
6
 
4
7
  require 'rubygems'
5
8
  require 'bundler/setup'
6
9
  require 'webmock/rspec'
7
- # require 'capybara/rspec'
8
10
  require 'vcr'
9
11
 
10
12
  require 'net/https'
@@ -5,10 +5,19 @@ describe Pin::Transfer, :vcr do
5
5
  Pin::Base.new(ENV['PIN_SECRET'], :test)
6
6
  end
7
7
 
8
- options = { email: 'hello@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
9
- let(:recipient){ Pin::Recipient.create(options) }
8
+ it 'returns the line items associated with transfer' do
9
+ options ={ email: 'hello2@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
10
+ recipient = Pin::Recipient.create(options)
11
+
12
+ options = { amount: 400, currency: 'AUD', description: 'Pay day', recipient: recipient['token'] }
13
+ transfer_token = Pin::Transfer.create(options)['token']
14
+ expect(Pin::Transfer.line_items(transfer_token).first).to include('amount', 'created_at', 'currency', 'type')
15
+ end
10
16
 
11
17
  it 'creates a transfer for a recipient, given a transfer hash' do
18
+ options ={ email: 'hello3@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
19
+ recipient = Pin::Recipient.create(options)
20
+
12
21
  transfer = { amount: 400, currency: 'AUD', description: 'Pay day', recipient: recipient['token'] }
13
22
  expect(Pin::Transfer.create(transfer)['token']).to match(/^[a-z]{4}[_]/)
14
23
  end
@@ -18,15 +27,11 @@ describe Pin::Transfer, :vcr do
18
27
  end
19
28
 
20
29
  it 'returns the details of a transfer' do
21
- options = { amount: 400, currency: 'AUD', description: 'Pay day', recipient: recipient['token'] }
22
- transfer_token = Pin::Transfer.create(options)['token']
23
- expect(Pin::Transfer.find(transfer_token)['token']).to eq transfer_token
24
- end
30
+ options ={ email: 'hello@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
31
+ recipient = Pin::Recipient.create(options)
25
32
 
26
- xit 'returns the line items associated with transfer' do
27
- # disabled until an issue with recipient creation is worked out
28
33
  options = { amount: 400, currency: 'AUD', description: 'Pay day', recipient: recipient['token'] }
29
34
  transfer_token = Pin::Transfer.create(options)['token']
30
- expect(Pin::Transfer.line_items(transfer_token).first).to include('type', 'object', 'token', 'amount')
35
+ expect(Pin::Transfer.find(transfer_token)['token']).to eq transfer_token
31
36
  end
32
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pin_up
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Nitsikopoulos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-17 00:00:00.000000000 Z
11
+ date: 2015-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -214,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
214
  version: '0'
215
215
  requirements: []
216
216
  rubyforge_project:
217
- rubygems_version: 2.0.14
217
+ rubygems_version: 2.4.8
218
218
  signing_key:
219
219
  specification_version: 4
220
220
  summary: A Ruby gem wrapper for the pin-payments API