pin_up 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/Gemfile +1 -12
- data/Gemfile.lock +23 -94
- data/README.md +33 -33
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/pin_up/balance.rb +1 -1
- data/lib/pin_up/bank_accounts.rb +1 -1
- data/lib/pin_up/base.rb +2 -2
- data/lib/pin_up/card.rb +2 -2
- data/lib/pin_up/charge.rb +5 -5
- data/lib/pin_up/customer.rb +8 -8
- data/lib/pin_up/recipient.rb +4 -4
- data/lib/pin_up/refund.rb +2 -2
- data/lib/pin_up/transfer.rb +5 -5
- data/lib/pin_up/webhook_endpoints.rb +4 -4
- data/pin_up.gemspec +8 -25
- data/spec/base_spec.rb +3 -3
- data/spec/errors_spec.rb +9 -8
- data/spec/plan_spec.rb +6 -7
- data/spec/subscription_spec.rb +2 -4
- data/spec/webhook_endpoints_spec.rb +2 -1
- metadata +15 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8cd621a87b31feec9398239fb846abf0bc7117d72aac49d9c68d6d7d279fe7c4
|
4
|
+
data.tar.gz: 3e5a01721cb0a881664e7643f9295f2bf1a8e1ca0e5344af4cab6ac4c8e50b65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ea5de17437a508844cc3989a7203f33c4c29885cc9faab46627c9432e1b67927c2384334a95e9281e986746c554029868c54562e55a33340631034f3cd77a55
|
7
|
+
data.tar.gz: 145598a3fef5ce8f34b681443d7eb7ce20a8f9b3f9712aa4733c68473c97cd3e12ed25af85ffb56f30078319c368428194ee7ac054807a21e0d54f9a6656aa79
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,14 +1,3 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
group :development do
|
6
|
-
gem "rdoc", "~> 3.12"
|
7
|
-
gem "rspec" #, "~> 2.13"
|
8
|
-
gem "jeweler", "~> 2.3.9"
|
9
|
-
gem "simplecov", "~> 0.7.1"
|
10
|
-
gem "webmock"#, "~> 1.12.3"
|
11
|
-
gem "vcr"#, "~> 2.5.0"
|
12
|
-
gem "guard-rspec" #, "~> 3.0.2"
|
13
|
-
gem "terminal-notifier-guard", "~> 1.5.3"
|
14
|
-
end
|
3
|
+
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,90 +1,28 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
pin_up (1.4.0)
|
5
|
+
httparty (= 0.17.0)
|
6
|
+
|
1
7
|
GEM
|
2
8
|
remote: https://rubygems.org/
|
3
9
|
specs:
|
4
|
-
addressable (2.
|
5
|
-
|
6
|
-
coderay (1.1.2)
|
10
|
+
addressable (2.6.0)
|
11
|
+
public_suffix (>= 2.0.2, < 4.0)
|
7
12
|
crack (0.4.3)
|
8
13
|
safe_yaml (~> 1.0.0)
|
9
|
-
descendants_tracker (0.0.4)
|
10
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
11
14
|
diff-lcs (1.3)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
formatador (0.2.5)
|
16
|
-
git (1.4.0)
|
17
|
-
github_api (0.16.0)
|
18
|
-
addressable (~> 2.4.0)
|
19
|
-
descendants_tracker (~> 0.0.4)
|
20
|
-
faraday (~> 0.8, < 0.10)
|
21
|
-
hashie (>= 3.4)
|
22
|
-
mime-types (>= 1.16, < 3.0)
|
23
|
-
oauth2 (~> 1.0)
|
24
|
-
guard (2.14.2)
|
25
|
-
formatador (>= 0.2.4)
|
26
|
-
listen (>= 2.7, < 4.0)
|
27
|
-
lumberjack (>= 1.0.12, < 2.0)
|
28
|
-
nenv (~> 0.1)
|
29
|
-
notiffany (~> 0.0)
|
30
|
-
pry (>= 0.9.12)
|
31
|
-
shellany (~> 0.0)
|
32
|
-
thor (>= 0.18.1)
|
33
|
-
guard-compat (1.2.1)
|
34
|
-
guard-rspec (4.7.3)
|
35
|
-
guard (~> 2.1)
|
36
|
-
guard-compat (~> 1.1)
|
37
|
-
rspec (>= 2.99.0, < 4.0)
|
38
|
-
hashdiff (0.3.7)
|
39
|
-
hashie (3.5.7)
|
40
|
-
highline (2.0.0)
|
41
|
-
httparty (0.16.2)
|
15
|
+
hashdiff (0.4.0)
|
16
|
+
httparty (0.17.0)
|
17
|
+
mime-types (~> 3.0)
|
42
18
|
multi_xml (>= 0.5.2)
|
43
|
-
jeweler (2.3.9)
|
44
|
-
builder
|
45
|
-
bundler
|
46
|
-
git (>= 1.2.5)
|
47
|
-
github_api (~> 0.16.0)
|
48
|
-
highline (>= 1.6.15)
|
49
|
-
nokogiri (>= 1.5.10)
|
50
|
-
psych
|
51
|
-
rake
|
52
|
-
rdoc
|
53
|
-
semver2
|
54
19
|
json (1.8.6)
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
rb-inotify (~> 0.9, >= 0.9.7)
|
59
|
-
ruby_dep (~> 1.2)
|
60
|
-
lumberjack (1.0.13)
|
61
|
-
method_source (0.9.0)
|
62
|
-
mime-types (2.99.3)
|
63
|
-
mini_portile2 (2.3.0)
|
20
|
+
mime-types (3.2.2)
|
21
|
+
mime-types-data (~> 3.2015)
|
22
|
+
mime-types-data (3.2019.0331)
|
64
23
|
multi_json (1.13.1)
|
65
24
|
multi_xml (0.6.0)
|
66
|
-
|
67
|
-
nenv (0.3.0)
|
68
|
-
nokogiri (1.8.2)
|
69
|
-
mini_portile2 (~> 2.3.0)
|
70
|
-
notiffany (0.1.1)
|
71
|
-
nenv (~> 0.1)
|
72
|
-
shellany (~> 0.0)
|
73
|
-
oauth2 (1.4.0)
|
74
|
-
faraday (>= 0.8, < 0.13)
|
75
|
-
jwt (~> 1.0)
|
76
|
-
multi_json (~> 1.3)
|
77
|
-
multi_xml (~> 0.5)
|
78
|
-
rack (>= 1.2, < 3)
|
79
|
-
pry (0.11.3)
|
80
|
-
coderay (~> 1.1.0)
|
81
|
-
method_source (~> 0.9.0)
|
82
|
-
psych (3.0.2)
|
83
|
-
rack (2.0.5)
|
84
|
-
rake (12.3.1)
|
85
|
-
rb-fsevent (0.10.3)
|
86
|
-
rb-inotify (0.9.10)
|
87
|
-
ffi (>= 0.5.0, < 2)
|
25
|
+
public_suffix (3.1.1)
|
88
26
|
rdoc (3.12.2)
|
89
27
|
json (~> 1.4)
|
90
28
|
rspec (3.7.0)
|
@@ -100,36 +38,27 @@ GEM
|
|
100
38
|
diff-lcs (>= 1.2.0, < 2.0)
|
101
39
|
rspec-support (~> 3.7.0)
|
102
40
|
rspec-support (3.7.1)
|
103
|
-
|
104
|
-
safe_yaml (1.0.4)
|
105
|
-
semver2 (3.4.2)
|
106
|
-
shellany (0.0.1)
|
41
|
+
safe_yaml (1.0.5)
|
107
42
|
simplecov (0.7.1)
|
108
43
|
multi_json (~> 1.0)
|
109
44
|
simplecov-html (~> 0.7.1)
|
110
45
|
simplecov-html (0.7.1)
|
111
|
-
terminal-notifier-guard (1.5.3)
|
112
|
-
thor (0.20.0)
|
113
|
-
thread_safe (0.3.6)
|
114
46
|
vcr (4.0.0)
|
115
|
-
webmock (3.
|
47
|
+
webmock (3.6.0)
|
116
48
|
addressable (>= 2.3.6)
|
117
49
|
crack (>= 0.3.2)
|
118
|
-
hashdiff
|
50
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
119
51
|
|
120
52
|
PLATFORMS
|
121
53
|
ruby
|
122
54
|
|
123
55
|
DEPENDENCIES
|
124
|
-
|
125
|
-
httparty (>= 0.11.0)
|
126
|
-
jeweler (~> 2.3.9)
|
56
|
+
pin_up!
|
127
57
|
rdoc (~> 3.12)
|
128
|
-
rspec
|
58
|
+
rspec (~> 3.7.0)
|
129
59
|
simplecov (~> 0.7.1)
|
130
|
-
|
131
|
-
|
132
|
-
webmock
|
60
|
+
vcr (~> 4.0.0)
|
61
|
+
webmock (~> 3.6.0)
|
133
62
|
|
134
63
|
BUNDLED WITH
|
135
|
-
1.
|
64
|
+
1.17.3
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
## pin_up
|
2
2
|
|
3
|
-
A Ruby gem wrapper for the pin-payments (
|
3
|
+
A Ruby gem wrapper for the pin-payments (pinpayments.com) API, all of it.
|
4
4
|
|
5
5
|
Support for Ruby Ruby 2.x.x
|
6
6
|
|
@@ -115,7 +115,7 @@ With Pagination:
|
|
115
115
|
|
116
116
|
Pin::Customer.update('cus_token', hash_of_details)
|
117
117
|
|
118
|
-
If passing a hash of details, it must be the full list of details of the credit card to be stored. (https://
|
118
|
+
If passing a hash of details, it must be the full list of details of the credit card to be stored. (https://pinpayments.com/docs/api/customers#put-customer)
|
119
119
|
|
120
120
|
###### Update only an email
|
121
121
|
|
@@ -190,20 +190,20 @@ Only use this method if you're comfortable sending card details to your server -
|
|
190
190
|
##### Create A Plan
|
191
191
|
Pin::Plan.create(plan)
|
192
192
|
|
193
|
-
plan = { name: 'Coffee Plan',
|
194
|
-
amount: '1000',
|
195
|
-
currency: 'AUD',
|
196
|
-
interval: 30,
|
197
|
-
interval_unit: 'day',
|
198
|
-
setup_amount: 0,
|
199
|
-
trial_amount: 0,
|
200
|
-
trial_interval: 7,
|
193
|
+
plan = { name: 'Coffee Plan',
|
194
|
+
amount: '1000',
|
195
|
+
currency: 'AUD',
|
196
|
+
interval: 30,
|
197
|
+
interval_unit: 'day',
|
198
|
+
setup_amount: 0,
|
199
|
+
trial_amount: 0,
|
200
|
+
trial_interval: 7,
|
201
201
|
trial_interval_unit: 'day' }
|
202
|
-
|
203
|
-
Note: setup_amount, trial_amount, trial_interval and trial_interval_unit are all optional fields.
|
202
|
+
|
203
|
+
Note: setup_amount, trial_amount, trial_interval and trial_interval_unit are all optional fields.
|
204
204
|
|
205
205
|
Pin::Plan.create(plan)
|
206
|
-
|
206
|
+
|
207
207
|
##### List All Plans
|
208
208
|
Pin::Plan.all
|
209
209
|
|
@@ -214,30 +214,30 @@ Show Plans on a particular page:
|
|
214
214
|
With Pagination:
|
215
215
|
|
216
216
|
Pin::Plan.all(3,true)
|
217
|
-
|
217
|
+
|
218
218
|
##### Find a Plan
|
219
219
|
|
220
220
|
Pin::Plan.find(plan_token)
|
221
221
|
|
222
222
|
Return the details of a specified plan
|
223
|
-
|
223
|
+
|
224
224
|
##### Update a Plan
|
225
225
|
Update the name of a specified plan. Only the plan name can be updated!
|
226
|
-
|
226
|
+
|
227
227
|
Pin::Plan.update(plan_token, name_hash)
|
228
|
-
|
228
|
+
|
229
229
|
name_hash = { name: 'new_plan_name' }
|
230
230
|
|
231
231
|
##### Delete a Plan
|
232
|
-
Deletes a plan and all of its subscriptions. You will not be able to recover this.
|
232
|
+
Deletes a plan and all of its subscriptions. You will not be able to recover this.
|
233
233
|
|
234
234
|
Note: Plans can only be deleted if they have no running subscriptions.
|
235
|
-
|
235
|
+
|
236
236
|
Pin::Plan.delete(plan_token)
|
237
237
|
|
238
238
|
## Subscriptions
|
239
239
|
##### Create A Subscription
|
240
|
-
Activate a new subscription and return its details. The customer's card will immeadiately be billed the initial plan amount, unless there's a trial period.
|
240
|
+
Activate a new subscription and return its details. The customer's card will immeadiately be billed the initial plan amount, unless there's a trial period.
|
241
241
|
|
242
242
|
|
243
243
|
subscription = { plan_token: plan_token,
|
@@ -248,7 +248,7 @@ Activate a new subscription and return its details. The customer's card will imm
|
|
248
248
|
Note: card_token and include_setup_fee are both optional.
|
249
249
|
|
250
250
|
Pin::Subscription.create(subscription)
|
251
|
-
|
251
|
+
|
252
252
|
##### List All Subscriptions
|
253
253
|
|
254
254
|
Pin::Subscription.all
|
@@ -260,34 +260,34 @@ Show Subscriptions on a particular page:
|
|
260
260
|
With Pagination:
|
261
261
|
|
262
262
|
Pin::Subscription.all(3,true)
|
263
|
-
|
263
|
+
|
264
264
|
##### Find a Subscription
|
265
265
|
Return the details of a subscription.
|
266
266
|
|
267
267
|
Pin::Subscription.find(subscription_token)
|
268
|
-
|
268
|
+
|
269
269
|
##### Update a Subscription
|
270
270
|
Updates the card associated with a subscription identified by the subscription token.
|
271
|
-
|
271
|
+
|
272
272
|
Note: The card token must already be associated to the customer of the subscription.
|
273
|
-
|
273
|
+
|
274
274
|
Pin::Subscription.update(subscription_token, card_token)
|
275
|
-
|
275
|
+
|
276
276
|
##### Delete a Subscription
|
277
|
-
Cancels the subscription identified by the subscription token. Subscriptions can only be cancelled if they are in a trial or active state.
|
277
|
+
Cancels the subscription identified by the subscription token. Subscriptions can only be cancelled if they are in a trial or active state.
|
278
278
|
|
279
279
|
Note: Subscriptions will only attain a cancelled state once the subscription period has elapsed. Until such time subscriptions will be in a state of 'Cancelling'.
|
280
|
-
|
280
|
+
|
281
281
|
Pin::Subscription.delete(plan_token)
|
282
|
-
|
282
|
+
|
283
283
|
##### Reactivate a Subscription
|
284
284
|
Reactivates the subscription identified by the subscription token returning the details of the subscription
|
285
|
-
|
285
|
+
|
286
286
|
Pin::Subscription.reactivate(plan_token)
|
287
287
|
|
288
288
|
##### List Subscription history
|
289
289
|
Fetch the ledger entries relating to a subscription identified by a subscription token
|
290
|
-
|
290
|
+
|
291
291
|
Pin::Subscription.history(subscription_token)
|
292
292
|
|
293
293
|
###### With pagination
|
@@ -422,7 +422,7 @@ run
|
|
422
422
|
### Record New VCR cassettes
|
423
423
|
After cloning the project one should create a new set of cassettes.
|
424
424
|
|
425
|
-
In spec_helper change
|
425
|
+
In spec_helper change
|
426
426
|
|
427
427
|
VCR.use_cassette(name, options) { example.call }
|
428
428
|
to
|
@@ -433,7 +433,7 @@ Run all tests and then change the line back (replace record: :all with options)
|
|
433
433
|
|
434
434
|
### Updating VCR test cassettes
|
435
435
|
A contributor can update cassettes previously recorded by adding the following syntax:
|
436
|
-
|
436
|
+
|
437
437
|
record: :all, :match_requests_on => [:method, :host, :path]
|
438
438
|
|
439
439
|
E.g. in a particular spec file:
|
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ Jeweler::Tasks.new do |gem|
|
|
18
18
|
gem.homepage = "http://github.com/dNitza/pin_up"
|
19
19
|
gem.license = "MIT"
|
20
20
|
gem.summary = %Q{A Ruby gem wrapper for the pin-payments API}
|
21
|
-
gem.description = %Q{A Ruby gem wrapper for the pin-payments (
|
21
|
+
gem.description = %Q{A Ruby gem wrapper for the pin-payments (pinpayments.com) API}
|
22
22
|
gem.email = "dnitza@gmail.com"
|
23
23
|
gem.authors = ["Daniel Nitsikopoulos"]
|
24
24
|
# dependencies defined in Gemfile
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.1
|
data/lib/pin_up/balance.rb
CHANGED
@@ -7,7 +7,7 @@ module Pin
|
|
7
7
|
# Transfers can only be made using the funds in the available balance.
|
8
8
|
# The pending amount will become available after the 7 day settlement schedule on your charges.
|
9
9
|
#
|
10
|
-
# https://
|
10
|
+
# https://pinpayments.com/docs/api/balance
|
11
11
|
def self.get
|
12
12
|
build_response(make_request(:get, { url: 'balance' }))
|
13
13
|
end
|
data/lib/pin_up/bank_accounts.rb
CHANGED
@@ -11,7 +11,7 @@ module Pin
|
|
11
11
|
# A bank account token can only be used once to create a recipient.
|
12
12
|
# The token automatically expires after 1 month if it hasn’t been used.
|
13
13
|
#
|
14
|
-
# https://
|
14
|
+
# https://pinpayments.com/docs/api/bank-accounts
|
15
15
|
def self.create(options)
|
16
16
|
build_response(make_request(:post, { url: 'bank_accounts', options: options }))
|
17
17
|
end
|
data/lib/pin_up/base.rb
CHANGED
@@ -19,9 +19,9 @@ module Pin
|
|
19
19
|
@@auth = { username: @key, password: '' }
|
20
20
|
@@timeout = timeout
|
21
21
|
@@base_url = if env == :live
|
22
|
-
'https://api.
|
22
|
+
'https://api.pinpayments.com/1/'
|
23
23
|
elsif env == :test
|
24
|
-
'https://test-api.
|
24
|
+
'https://test-api.pinpayments.com/1/'
|
25
25
|
else
|
26
26
|
fail "'env' option must be :live or :test. Leave blank for live payments"
|
27
27
|
end
|
data/lib/pin_up/card.rb
CHANGED
@@ -4,10 +4,10 @@ module Pin
|
|
4
4
|
class Card < Base
|
5
5
|
##
|
6
6
|
# creates a card given a hash of options
|
7
|
-
# https://
|
7
|
+
# https://pinpayments.com/docs/api/cards
|
8
8
|
# Only use if you have a secure server connection, if in doubt use
|
9
9
|
# the form example provided by Pin to create a card_token
|
10
|
-
# https://
|
10
|
+
# https://pinpayments.com/docs/guides/payment-forms
|
11
11
|
# args: card_details (Hash)
|
12
12
|
# returns: card object
|
13
13
|
def self.create(options)
|
data/lib/pin_up/charge.rb
CHANGED
@@ -10,7 +10,7 @@ module Pin
|
|
10
10
|
# if pagination is passed, access the response hash with [:response]
|
11
11
|
# and the pagination hash with [:pagination]
|
12
12
|
#
|
13
|
-
# https://
|
13
|
+
# https://pinpayments.com/docs/api/charges#get-charges
|
14
14
|
def self.all(page = nil, pagination = false)
|
15
15
|
build_collection_response(make_request(:get, { url: "charges?page=#{page}" }), pagination)
|
16
16
|
end
|
@@ -19,7 +19,7 @@ module Pin
|
|
19
19
|
# Find a charge for your account given a token
|
20
20
|
# args: token (String)
|
21
21
|
# returns: a charge object
|
22
|
-
# https://
|
22
|
+
# https://pinpayments.com/docs/api/charges#get-charge
|
23
23
|
def self.find(token)
|
24
24
|
build_response(make_request(:get, {url: "charges/#{token}" } ))
|
25
25
|
end
|
@@ -31,7 +31,7 @@ module Pin
|
|
31
31
|
# if pagination is passed, access the response hash with [:response]
|
32
32
|
# and the pagination hash with [:pagination]
|
33
33
|
#
|
34
|
-
# https://
|
34
|
+
# https://pinpayments.com/docs/api/charges#search-charges
|
35
35
|
def self.search(page = nil, pagination = false, **options)
|
36
36
|
term = ''
|
37
37
|
options.merge! page: page if page
|
@@ -46,7 +46,7 @@ module Pin
|
|
46
46
|
# a card_token or a customer_token
|
47
47
|
# args: options (Hash)
|
48
48
|
# returns: a charge object
|
49
|
-
# https://
|
49
|
+
# https://pinpayments.com/docs/api/charges#post-charges
|
50
50
|
def self.create(options = {})
|
51
51
|
build_response(make_request(:post, {url: 'charges', options: options} ))
|
52
52
|
end
|
@@ -54,7 +54,7 @@ module Pin
|
|
54
54
|
# Captures a previously authorised charge and returns its details.
|
55
55
|
# args: charge-token (String)
|
56
56
|
# returns: charge object
|
57
|
-
# https://
|
57
|
+
# https://pinpayments.com/docs/api/charges#put-charges
|
58
58
|
def self.capture(token)
|
59
59
|
build_response(make_request(:put, { url: "charges/#{token}/capture" } ))
|
60
60
|
end
|
data/lib/pin_up/customer.rb
CHANGED
@@ -10,7 +10,7 @@ module Pin
|
|
10
10
|
# if pagination is passed, access the response hash with [:response]
|
11
11
|
# and the pagination hash with [:pagination]
|
12
12
|
#
|
13
|
-
# https://
|
13
|
+
# https://pinpayments.com/docs/api/customers#get-customers
|
14
14
|
def self.all(page = nil, pagination = false)
|
15
15
|
build_collection_response(make_request(:get, {url: "customers?page=#{page}" } ), pagination)
|
16
16
|
end
|
@@ -19,7 +19,7 @@ module Pin
|
|
19
19
|
# Create a customer given customer details and a card OR a card_token
|
20
20
|
# args: email(String), card (Hash)
|
21
21
|
# returns: a customer object
|
22
|
-
# https://
|
22
|
+
# https://pinpayments.com/docs/api/customers#post-customers
|
23
23
|
def self.create(email, card)
|
24
24
|
options = if card.respond_to?(:to_hash)
|
25
25
|
{ card: card.to_hash }
|
@@ -34,7 +34,7 @@ module Pin
|
|
34
34
|
# Find a customer for your account given a token
|
35
35
|
# args: token (String)
|
36
36
|
# returns: a customer object
|
37
|
-
# https://
|
37
|
+
# https://pinpayments.com/docs/api/customers#get-customers
|
38
38
|
def self.find(token)
|
39
39
|
build_response(make_request(:get, {url: "customers/#{token}" } ))
|
40
40
|
end
|
@@ -44,7 +44,7 @@ module Pin
|
|
44
44
|
# and any of: email, card (hash),card_token
|
45
45
|
# args: token (String), options (Hash)
|
46
46
|
# returns: a customer object
|
47
|
-
# https://
|
47
|
+
# https://pinpayments.com/docs/api/customers#put-customer
|
48
48
|
# NB: When providing a card (hash), you need to specify
|
49
49
|
# the full list of details.
|
50
50
|
def self.update(token, options = {})
|
@@ -59,7 +59,7 @@ module Pin
|
|
59
59
|
# if pagination is passed, access the response hash with [:response]
|
60
60
|
# and the pagination hash with [:pagination]
|
61
61
|
#
|
62
|
-
# https://
|
62
|
+
# https://pinpayments.com/docs/api/customers#get-customers-charges
|
63
63
|
def self.charges(token, page = nil, pagination = false)
|
64
64
|
build_collection_response(
|
65
65
|
make_request(:get, {url: "customers/#{token}/charges?page=#{page}" }), pagination
|
@@ -74,7 +74,7 @@ module Pin
|
|
74
74
|
# if pagination is passed, access the response hash with [:response]
|
75
75
|
# and the pagination hash with [:pagination]
|
76
76
|
#
|
77
|
-
# https://
|
77
|
+
# https://pinpayments.com/docs/api/customers#get-customers-cards
|
78
78
|
def self.cards(token, page = nil, pagination = false)
|
79
79
|
build_collection_response(
|
80
80
|
make_request(:get, {url: "customers/#{token}/cards?page=#{page}" }), pagination
|
@@ -85,7 +85,7 @@ module Pin
|
|
85
85
|
# Create a card for customer given a card OR a card_token
|
86
86
|
# args: customer_token (String), card (Hash) or (String) see docs.
|
87
87
|
# returns: a card object
|
88
|
-
# https://
|
88
|
+
# https://pinpayments.com/docs/api/customers#post-customers-cards
|
89
89
|
def self.create_card(token, card)
|
90
90
|
options = if card.respond_to?(:to_hash)
|
91
91
|
card
|
@@ -100,7 +100,7 @@ module Pin
|
|
100
100
|
# Deletes a card for customer given a card_token
|
101
101
|
# args: customer_token (String), card_token (String)
|
102
102
|
# returns: a card object
|
103
|
-
# https://
|
103
|
+
# https://pinpayments.com/docs/api/customers#delete-customers-card
|
104
104
|
def self.delete_card(token, card_token)
|
105
105
|
build_response(make_request(:delete, {url: "customers/#{token}/cards/#{card_token}"} ))
|
106
106
|
end
|
data/lib/pin_up/recipient.rb
CHANGED
@@ -4,7 +4,7 @@ module Pin
|
|
4
4
|
class Recipient < Base
|
5
5
|
##
|
6
6
|
# Creates a new recipient and returns its details.
|
7
|
-
# https://
|
7
|
+
# https://pinpayments.com/docs/api/recipients#post-recipients
|
8
8
|
# args: options (Hash)
|
9
9
|
# returns: recipient (Hash)
|
10
10
|
def self.create(options)
|
@@ -19,7 +19,7 @@ module Pin
|
|
19
19
|
# if pagination is passed, access the response hash with [:response]
|
20
20
|
# and the pagination hash with [:pagination]
|
21
21
|
#
|
22
|
-
# https://
|
22
|
+
# https://pinpayments.com/docs/api/recipients#get-recipients
|
23
23
|
def self.all(page = nil, pagination = false)
|
24
24
|
build_collection_response(make_request(:get, {url: "recipients?page=#{page}" } ), pagination)
|
25
25
|
end
|
@@ -28,7 +28,7 @@ module Pin
|
|
28
28
|
# Find a recipient for your account given a token
|
29
29
|
# args: token (String)
|
30
30
|
# returns: a recipient
|
31
|
-
# https://
|
31
|
+
# https://pinpayments.com/docs/api/recipients#get-recipient
|
32
32
|
def self.find(token)
|
33
33
|
build_response(make_request(:get, {url: "recipients/#{token}" } ))
|
34
34
|
end
|
@@ -38,7 +38,7 @@ module Pin
|
|
38
38
|
# and any of: email, name, bank_account (hash)
|
39
39
|
# args: token (String), options (Hash)
|
40
40
|
# returns: a recipient
|
41
|
-
# https://
|
41
|
+
# https://pinpayments.com/docs/api/recipients#put-recipient
|
42
42
|
def self.update(token, options = {})
|
43
43
|
build_response(make_request(:put, { url: "recipients/#{token}", options: options }))
|
44
44
|
end
|
data/lib/pin_up/refund.rb
CHANGED
@@ -10,7 +10,7 @@ module Pin
|
|
10
10
|
# if pagination is passed, access the response hash with [:response]
|
11
11
|
# and the pagination hash with [:pagination]
|
12
12
|
#
|
13
|
-
# https://
|
13
|
+
# https://pinpayments.com/docs/api/refunds#get-refunds
|
14
14
|
def self.find(token, page = nil, pagination = false)
|
15
15
|
build_collection_response(make_request(:get, { url: "charges/#{token}/refunds?page=#{page}" } ), pagination)
|
16
16
|
end
|
@@ -20,7 +20,7 @@ module Pin
|
|
20
20
|
# args: token (String), amount (String - optional)
|
21
21
|
# returns: a refund object
|
22
22
|
# if no amount is passed in, the full amount of the charge will be refunded
|
23
|
-
# https://
|
23
|
+
# https://pinpayments.com/docs/api/refunds#post-refunds
|
24
24
|
def self.create(token, amount = nil)
|
25
25
|
options = { amount: amount }
|
26
26
|
build_response(make_request(:post, { url: "charges/#{token}/refunds", options: options } ))
|
data/lib/pin_up/transfer.rb
CHANGED
@@ -4,7 +4,7 @@ module Pin
|
|
4
4
|
class Transfer < Base
|
5
5
|
##
|
6
6
|
# Creates a new transfer and returns its details.
|
7
|
-
# https://
|
7
|
+
# https://pinpayments.com/docs/api/transfers#post-transfers
|
8
8
|
# args: options (Hash)
|
9
9
|
def self.create(options)
|
10
10
|
build_response(make_request(:post, { url: 'transfers', options: options }))
|
@@ -17,7 +17,7 @@ module Pin
|
|
17
17
|
# if pagination is passed, access the response hash with [:response]
|
18
18
|
# and the pagination hash with [:pagination]
|
19
19
|
#
|
20
|
-
# https://
|
20
|
+
# https://pinpayments.com/docs/api/transfers#get-transfers
|
21
21
|
def self.all(page = nil, pagination = false)
|
22
22
|
build_collection_response(make_request(:get, {url: "transfers?page=#{page}" } ), pagination)
|
23
23
|
end
|
@@ -26,7 +26,7 @@ module Pin
|
|
26
26
|
# Returns the details of a transfer.
|
27
27
|
# args: token (String)
|
28
28
|
# returns: a transfer
|
29
|
-
# https://
|
29
|
+
# https://pinpayments.com/docs/api/transfers#get-transfer
|
30
30
|
def self.find(token)
|
31
31
|
build_response(make_request(:get, {url: "transfers/#{token}" } ))
|
32
32
|
end
|
@@ -38,7 +38,7 @@ module Pin
|
|
38
38
|
# if pagination is passed, access the response hash with [:response]
|
39
39
|
# and the pagination hash with [:pagination]
|
40
40
|
#
|
41
|
-
# https://
|
41
|
+
# https://pinpayments.com/docs/api/transfers#search-transfers
|
42
42
|
def self.search(page = nil, pagination = false, **options)
|
43
43
|
term = ''
|
44
44
|
options.merge! page: page if page
|
@@ -53,7 +53,7 @@ module Pin
|
|
53
53
|
# Returns the line items associated with transfer.
|
54
54
|
# args: token (String), page (Fixnum), pagination (Boolean)
|
55
55
|
#
|
56
|
-
# https://
|
56
|
+
# https://pinpayments.com/docs/api/transfers#get-transfer-line-items
|
57
57
|
def self.line_items(token, page = nil, pagination = false)
|
58
58
|
build_collection_response(make_request(:get, {url: "transfers/#{token}/line_items?page=#{page}" } ), pagination)
|
59
59
|
end
|
@@ -10,14 +10,14 @@ module Pin
|
|
10
10
|
# if pagination is passed, access the response hash with [:response]
|
11
11
|
# and the pagination hash with [:pagination]
|
12
12
|
#
|
13
|
-
# https://
|
13
|
+
# https://pinpayments.com/docs/api/webhook_endpoints#get-webhook_endpoints
|
14
14
|
def self.all(page = nil, pagination = false)
|
15
15
|
build_collection_response(make_request(:get, {url: "webhook_endpoints?page=#{page}" } ), pagination)
|
16
16
|
end
|
17
17
|
|
18
18
|
##
|
19
19
|
# creates a webhook endpoint given a hash of options
|
20
|
-
# https://
|
20
|
+
# https://pinpayments.com/docs/api/webhook_endpoints
|
21
21
|
# args: url (Hash)
|
22
22
|
# returns: webhook object
|
23
23
|
def self.create(options)
|
@@ -28,7 +28,7 @@ module Pin
|
|
28
28
|
# Find a webhook endpoint for your account given a token
|
29
29
|
# args: token (String)
|
30
30
|
# returns: a webhook endpoint object
|
31
|
-
# https://
|
31
|
+
# https://pinpayments.com/docs/api/webhook_endpoints#get-webhook_endpoints
|
32
32
|
def self.find(token)
|
33
33
|
build_response(make_request(:get, {url: "webhook_endpoints/#{token}" } ))
|
34
34
|
end
|
@@ -37,7 +37,7 @@ module Pin
|
|
37
37
|
# Delete a webhook endpoint for your account given a token
|
38
38
|
# args: token (String)
|
39
39
|
# returns: nil
|
40
|
-
# https://
|
40
|
+
# https://pinpayments.com/docs/api/webhook_endpoints#delete-webhook_endpoints
|
41
41
|
def self.delete(token)
|
42
42
|
build_response(make_request(:delete, {url: "webhook_endpoints/#{token}" } ))
|
43
43
|
end
|
data/pin_up.gemspec
CHANGED
@@ -6,13 +6,13 @@
|
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "pin_up".freeze
|
9
|
-
s.version = "1.4.
|
9
|
+
s.version = "1.4.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Daniel Nitsikopoulos".freeze]
|
14
14
|
s.date = "2018-06-15"
|
15
|
-
s.description = "A Ruby gem wrapper for the pin-payments (
|
15
|
+
s.description = "A Ruby gem wrapper for the pin-payments (pinpayments.com) API".freeze
|
16
16
|
s.email = "dnitza@gmail.com".freeze
|
17
17
|
s.extra_rdoc_files = [
|
18
18
|
"LICENSE.txt",
|
@@ -71,36 +71,19 @@ Gem::Specification.new do |s|
|
|
71
71
|
s.specification_version = 4
|
72
72
|
|
73
73
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
74
|
-
s.add_runtime_dependency(%q<httparty>.freeze, ["
|
74
|
+
s.add_runtime_dependency(%q<httparty>.freeze, ["= 0.17.0"])
|
75
75
|
s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
76
|
-
s.add_development_dependency(%q<rspec>.freeze, ["
|
77
|
-
s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.9"])
|
76
|
+
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.7.0"])
|
78
77
|
s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.7.1"])
|
79
|
-
s.add_development_dependency(%q<webmock>.freeze, ["
|
80
|
-
s.add_development_dependency(%q<vcr>.freeze, ["
|
81
|
-
s.add_development_dependency(%q<guard-rspec>.freeze, [">= 0"])
|
82
|
-
s.add_development_dependency(%q<terminal-notifier-guard>.freeze, ["~> 1.5.3"])
|
78
|
+
s.add_development_dependency(%q<webmock>.freeze, ["~> 3.6.0"])
|
79
|
+
s.add_development_dependency(%q<vcr>.freeze, ["~> 4.0.0"])
|
83
80
|
else
|
84
|
-
s.add_dependency(%q<httparty>.freeze, ["
|
81
|
+
s.add_dependency(%q<httparty>.freeze, ["= 0.17.0"])
|
85
82
|
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
86
|
-
s.add_dependency(%q<rspec>.freeze, [">= 0"])
|
87
|
-
s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.9"])
|
88
|
-
s.add_dependency(%q<simplecov>.freeze, ["~> 0.7.1"])
|
89
|
-
s.add_dependency(%q<webmock>.freeze, [">= 0"])
|
90
|
-
s.add_dependency(%q<vcr>.freeze, [">= 0"])
|
91
|
-
s.add_dependency(%q<guard-rspec>.freeze, [">= 0"])
|
92
|
-
s.add_dependency(%q<terminal-notifier-guard>.freeze, ["~> 1.5.3"])
|
93
83
|
end
|
94
84
|
else
|
95
|
-
s.add_dependency(%q<httparty>.freeze, ["
|
85
|
+
s.add_dependency(%q<httparty>.freeze, ["= 0.17.0"])
|
96
86
|
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
97
|
-
s.add_dependency(%q<rspec>.freeze, [">= 0"])
|
98
|
-
s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.9"])
|
99
|
-
s.add_dependency(%q<simplecov>.freeze, ["~> 0.7.1"])
|
100
|
-
s.add_dependency(%q<webmock>.freeze, [">= 0"])
|
101
|
-
s.add_dependency(%q<vcr>.freeze, [">= 0"])
|
102
|
-
s.add_dependency(%q<guard-rspec>.freeze, [">= 0"])
|
103
|
-
s.add_dependency(%q<terminal-notifier-guard>.freeze, ["~> 1.5.3"])
|
104
87
|
end
|
105
88
|
end
|
106
89
|
|
data/spec/base_spec.rb
CHANGED
@@ -12,11 +12,11 @@ RSpec.describe 'Base', :vcr, class: Pin::Base do
|
|
12
12
|
|
13
13
|
it 'should set environment to live if no env set' do
|
14
14
|
@pin = Pin::Base.new('KEY', :live)
|
15
|
-
expect(@pin.base_uri).to eq 'https://api.
|
15
|
+
expect(@pin.base_uri).to eq 'https://api.pinpayments.com/1/'
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should set environment to test when set' do
|
19
|
-
expect(@test_pin.base_uri).to eq 'https://test-api.
|
19
|
+
expect(@test_pin.base_uri).to eq 'https://test-api.pinpayments.com/1/'
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'should raise an error if anything other than '' :live or :test is passed to a new instance' do
|
@@ -24,7 +24,7 @@ RSpec.describe 'Base', :vcr, class: Pin::Base do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should succesfully connect to Pin' do
|
27
|
-
stub_request(:get, "https://#{@test_pin.key}:''@test-api.
|
27
|
+
stub_request(:get, "https://#{@test_pin.key}:''@test-api.pinpayments.com/1/customers")
|
28
28
|
expect(Pin::Base.make_request(:get, { url: 'customers' }).code).to eq 200
|
29
29
|
end
|
30
30
|
|
data/spec/errors_spec.rb
CHANGED
@@ -239,13 +239,14 @@ describe 'Errors', :vcr, class: Pin::PinError do
|
|
239
239
|
end
|
240
240
|
end
|
241
241
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
end
|
242
|
+
# Name is now optional in the API
|
243
|
+
# it 'should raise a 422 when updating a plan token and any field validation fails' do
|
244
|
+
# expect { Pin::Plan.update(plan_token, { currency: 'USD' }) }.to raise_error do |error|
|
245
|
+
# expect(error).to be_a Pin::InvalidResource
|
246
|
+
# expect(error.response['messages'][0]).to match a_hash_including("message"=>"Name can't be blank")
|
247
|
+
# expect(error.response).to be_a Hash
|
248
|
+
# end
|
249
|
+
# end
|
249
250
|
|
250
251
|
it 'should raise a 400 cannot delete plan which has active subscriptions' do
|
251
252
|
end
|
@@ -281,7 +282,7 @@ describe 'Errors', :vcr, class: Pin::PinError do
|
|
281
282
|
subscription_w_no_plan_token = subscription_1.tap { |h| h[:plan_token] = '' }
|
282
283
|
expect { Pin::Subscription.create(subscription_w_no_plan_token) }.to raise_error do |error|
|
283
284
|
expect(error).to be_a Pin::InvalidResource
|
284
|
-
expect(error.response['messages'][0]).to match a_hash_including("message"=>"Plan must
|
285
|
+
expect(error.response['messages'][0]).to match a_hash_including("message"=>"Plan token must be present")
|
285
286
|
end
|
286
287
|
end
|
287
288
|
|
data/spec/plan_spec.rb
CHANGED
@@ -21,9 +21,7 @@ describe 'Plan', :vcr, class: Pin::Plan do
|
|
21
21
|
interval: 1,
|
22
22
|
interval_unit: 'day',
|
23
23
|
setup_amount: 27900,
|
24
|
-
trial_amount: 0
|
25
|
-
trial_interval: '',
|
26
|
-
trial_interval_unit: '' }
|
24
|
+
trial_amount: 0}
|
27
25
|
}
|
28
26
|
|
29
27
|
let(:plan_2_token) {
|
@@ -102,9 +100,9 @@ describe 'Plan', :vcr, class: Pin::Plan do
|
|
102
100
|
end
|
103
101
|
|
104
102
|
it 'should create a new plan and return its details' do
|
105
|
-
|
103
|
+
res = Pin::Plan.create(plan)
|
104
|
+
expect(res)
|
106
105
|
.to match a_hash_including("name"=>match(/(Plan)/),
|
107
|
-
"token"=>match(/(plan)[_]([\w-]{22})/),
|
108
106
|
"amount"=>1000,
|
109
107
|
"currency"=>"AUD",
|
110
108
|
"setup_amount"=>0,
|
@@ -113,8 +111,9 @@ describe 'Plan', :vcr, class: Pin::Plan do
|
|
113
111
|
"interval_unit"=>"day",
|
114
112
|
"trial_interval"=>7,
|
115
113
|
"trial_interval_unit"=>"day",
|
116
|
-
"
|
117
|
-
"
|
114
|
+
"created_at"=>match(/\d/),
|
115
|
+
"customer_permissions"=>["cancel"],
|
116
|
+
"token"=>match(/(plan)[_]([\w-]{22})/),
|
118
117
|
"active_subscriptions"=>0,
|
119
118
|
"trial_subscriptions"=>0)
|
120
119
|
end
|
data/spec/subscription_spec.rb
CHANGED
@@ -21,9 +21,7 @@ describe 'Subscription', :vcr, class: Pin::Subscription do
|
|
21
21
|
interval: 30,
|
22
22
|
interval_unit: 'day',
|
23
23
|
setup_amount: 27900,
|
24
|
-
trial_amount: 0
|
25
|
-
trial_interval: '',
|
26
|
-
trial_interval_unit: '' }
|
24
|
+
trial_amount: 0 }
|
27
25
|
}
|
28
26
|
|
29
27
|
let(:plan_1_token) {
|
@@ -150,7 +148,7 @@ describe 'Subscription', :vcr, class: Pin::Subscription do
|
|
150
148
|
end
|
151
149
|
|
152
150
|
it 'should not list subscriptions for a given page if there are no subscriptions' do
|
153
|
-
request = Pin::Subscription.all(
|
151
|
+
request = Pin::Subscription.all(250, true)
|
154
152
|
expect(request[:response]).to eq []
|
155
153
|
end
|
156
154
|
|
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'securerandom'
|
2
3
|
|
3
4
|
RSpec.describe 'WebhookEndpoints', :vcr, class: Pin::WebhookEndpoints do
|
4
5
|
let(:token) {
|
5
|
-
Pin::WebhookEndpoints.create({ url: "http://example.com/webhooks#{
|
6
|
+
Pin::WebhookEndpoints.create({ url: "http://example.com/webhooks#{SecureRandom.urlsafe_base64}/" })['token']
|
6
7
|
}
|
7
8
|
|
8
9
|
before(:each) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pin_up
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Nitsikopoulos
|
@@ -14,16 +14,16 @@ dependencies:
|
|
14
14
|
name: httparty
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.17.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.17.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rdoc
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -40,32 +40,18 @@ dependencies:
|
|
40
40
|
version: '3.12'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: jeweler
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
47
|
+
version: 3.7.0
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
54
|
+
version: 3.7.0
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: simplecov
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,59 +70,31 @@ dependencies:
|
|
84
70
|
name: webmock
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- - "
|
73
|
+
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
75
|
+
version: 3.6.0
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- - "
|
80
|
+
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
82
|
+
version: 3.6.0
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: vcr
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: guard-rspec
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: terminal-notifier-guard
|
127
85
|
requirement: !ruby/object:Gem::Requirement
|
128
86
|
requirements:
|
129
87
|
- - "~>"
|
130
88
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
89
|
+
version: 4.0.0
|
132
90
|
type: :development
|
133
91
|
prerelease: false
|
134
92
|
version_requirements: !ruby/object:Gem::Requirement
|
135
93
|
requirements:
|
136
94
|
- - "~>"
|
137
95
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
139
|
-
description: A Ruby gem wrapper for the pin-payments (
|
96
|
+
version: 4.0.0
|
97
|
+
description: A Ruby gem wrapper for the pin-payments (pinpayments.com) API
|
140
98
|
email: dnitza@gmail.com
|
141
99
|
executables: []
|
142
100
|
extensions: []
|
@@ -205,8 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
163
|
- !ruby/object:Gem::Version
|
206
164
|
version: '0'
|
207
165
|
requirements: []
|
208
|
-
|
209
|
-
rubygems_version: 2.7.3
|
166
|
+
rubygems_version: 3.0.3
|
210
167
|
signing_key:
|
211
168
|
specification_version: 4
|
212
169
|
summary: A Ruby gem wrapper for the pin-payments API
|