promisepay 0.0.5 → 0.0.6

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: 81abebc5923d9af216511284d1940b4856ec1ff5
4
- data.tar.gz: 048efbbeb3acb567028438500473b64c277850e8
3
+ metadata.gz: 7dacee9ed6f0901b5ffc85139e1d62d1d7c89436
4
+ data.tar.gz: f99a7de4228a3c7a6190b6bbe478d40d6822c1d9
5
5
  SHA512:
6
- metadata.gz: b9d25d958566d6a19773f0b76b7c4b05dd4d2657a981810577bf367cb09ab1573f6082962bd1fd8d86f87997366a0592514ad53f498dbb6b66254e810d89a5de
7
- data.tar.gz: 6bee0b0b9e0a808abc3089eb4884c59999da7fb72c078be950d69d79e2bf8a89b72845807d14a77ce416d3fe439f84ac543691f91173827ce2a3dd7d79b44f93
6
+ metadata.gz: 9359c5c0411da5ad38c1ebeaa7253a0279996106f849d2dc38220e8c5c67a146d2ccb8036b26f3da1c09693b6ff0a0587b3e8212e9a0ea82a56b4c474d6c4733
7
+ data.tar.gz: c578ec4260aa6293eb095ea1962921132e74fec94e268a5c7c4b4fe358597933c4c427d9f0e2d326e714835ecff470196699436aa0237d2cdd10c6eec16c3b33
data/README.md CHANGED
@@ -3,13 +3,15 @@
3
3
  [![Join the chat at https://gitter.im/PromisePay/promisepay-ruby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/PromisePay/promisepay-ruby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/promisepay.svg)](http://badge.fury.io/rb/promisepay)
6
- [![Build Status](https://travis-ci.org/PromisePay/promisepay-ruby.svg?branch=develop)](https://travis-ci.org/PromisePay/promisepay-ruby)
7
- [![Coverage Status](https://coveralls.io/repos/PromisePay/promisepay-ruby/badge.svg?branch=develop)](https://coveralls.io/r/PromisePay/promisepay-ruby?branch=develop)
6
+ [![Build Status](https://travis-ci.org/PromisePay/promisepay-ruby.svg?branch=master)](https://travis-ci.org/PromisePay/promisepay-ruby)
7
+ [![Coverage Status](https://coveralls.io/repos/PromisePay/promisepay-ruby/badge.svg?branch=master)](https://coveralls.io/r/PromisePay/promisepay-ruby?branch=develop)
8
8
  [![Code Climate](https://codeclimate.com/github/PromisePay/promisepay-ruby/badges/gpa.svg)](https://codeclimate.com/github/PromisePay/promisepay-ruby)
9
9
 
10
+ To see a completed integration in a Ruby on Rails app, visit this [repository](https://github.com/dannyshafer/PromisePay_api_integration).
11
+
10
12
  #1. Installation
11
13
 
12
- Add this line to your application's Gemfile:
14
+ Add these lines to your application's Gemfile:
13
15
 
14
16
  ```ruby
15
17
  gem 'promisepay'
@@ -27,27 +29,16 @@ Or install it yourself as:
27
29
 
28
30
  Before interacting with Promispay API you need to generate an access token.
29
31
 
30
- See http://docs.promisepay.com/v2.2/docs/request_token for more information.
32
+ See [PromisePay documentation](https://promisepay-docs.readme.io/v1.0/docs/fetching-your-api-key) for more information.
31
33
 
32
34
  **Create a PromisePay client**
33
35
 
34
- ```ruby
35
- require 'promisepay'
36
-
37
- client = Promisepay::Client.new(username: 'YOUR_USERNAME', token: 'YOUR_TOKEN')
38
- ```
39
-
40
36
  The client can be configured through environment variables.
41
37
 
42
38
  ```ruby
43
- ENV['PROMISEPAY_USERNAME'] = 'YOUR_USERNAME'
44
- ENV['PROMISEPAY_TOKEN'] = 'YOUR_TOKEN'
45
- ```
46
-
47
- ```ruby
48
- require 'promisepay'
49
-
50
- client = Promisepay::Client.new()
39
+ # In your environment file
40
+ PROMISEPAY_USERNAME ||= youremailaddress
41
+ PROMISEPAY_TOKEN ||= y0urt0k3n12345678910123456789101
51
42
  ```
52
43
 
53
44
  The following parameters are configurable through the client:
@@ -57,11 +48,17 @@ The following parameters are configurable through the client:
57
48
  * `:environment` / `ENV['PROMISEPAY_ENVIRONMENT']`: API [environment](http://docs.promisepay.com/v2.2/docs/environments) to use (default: 'test')
58
49
  * `:api_domain` / `ENV['PROMISEPAY_API_DOMAIN']`: API domain name to use (default: 'api.promisepay.com')
59
50
 
51
+ Instantiate the PromisePay client.
52
+
53
+ ```ruby
54
+ client = Promisepay::Client.new(username: ENV['PROMISEPAY_USERNAME'], token: ENV['PROMISEPAY_TOKEN'])
55
+ ```
56
+
60
57
  #3. Examples
61
58
 
62
59
  ##Tokens
63
60
  ##### Example 1 - Request session token
64
- The below example shows the request for a marketplace configured to have the Item and User IDs generated automatically for them.
61
+ The below example shows the controller request for a marketplace configured to have the Item and User IDs generated automatically for them. Note: by default, the ability to have PromisePay auto generate IDs is turned off. However, it can easily be requested by contacting PromisePay support.
65
62
 
66
63
  ```ruby
67
64
  token_request = client.tokens.create(:session, {
@@ -115,10 +112,10 @@ item = client.items.create(
115
112
  id: '12345',
116
113
  name: 'test item for 5AUD',
117
114
  amount: '500',
118
- payement_type: '1',
115
+ payment_type: '1',
119
116
  buyer_id: buyer.id,
120
117
  seller_id: seller.id,
121
- fee_id: fee.id,
118
+ fee_ids: fee.id,
122
119
  description: '5AUD transfer'
123
120
  )
124
121
  ```
@@ -180,7 +177,23 @@ user = client.users.create(
180
177
  state: 'vic',
181
178
  city: 'Mel',
182
179
  zip: '3000',
183
- country: 'AUS'
180
+ country: 'AUS',
181
+ dob:'12/06/1980'
182
+ )
183
+ ```
184
+ #####Update a user
185
+ ```ruby
186
+ user = client.users.update(
187
+ id: '123456',
188
+ first_name: 'test',
189
+ last_name: 'buyer',
190
+ email: 'buyer@test.com',
191
+ address_line1: '48 collingwood',
192
+ state: 'vic',
193
+ city: 'Mel',
194
+ zip: '3000',
195
+ country: 'AUS',
196
+ dob:'12/06/1980'
184
197
  )
185
198
  ```
186
199
  #####Get a user
@@ -191,15 +204,15 @@ user = client.users.find('1')
191
204
  ```ruby
192
205
  users = client.users.find_all
193
206
  ```
194
- #####Get a user's card accounts
207
+ #####Get a user's card account
195
208
  ```ruby
196
209
  user.card_account
197
210
  ```
198
- #####Get a user's PayPal accounts
211
+ #####Get a user's PayPal account
199
212
  ```ruby
200
213
  user.paypal_account
201
214
  ```
202
- #####Get a user's bank accounts
215
+ #####Get a user's bank account
203
216
  ```ruby
204
217
  user.bank_account
205
218
  ```
@@ -207,6 +220,10 @@ user.bank_account
207
220
  ```ruby
208
221
  user.items
209
222
  ```
223
+ #####Get a user's address
224
+ ```ruby
225
+ user.address
226
+ ```
210
227
  #####Set a user's disbursement account
211
228
  ```ruby
212
229
  user.disbursement_account(bank_account.id)
@@ -220,7 +237,7 @@ item.make_payment(
220
237
  ```
221
238
  #####Request payment
222
239
  ```ruby
223
- item.request_payement
240
+ item.request_payment
224
241
  ```
225
242
  #####Release payment
226
243
  ```ruby
@@ -248,11 +265,14 @@ item.revert_wire
248
265
  ```
249
266
  #####Request refund
250
267
  ```ruby
251
- item.release_payment
268
+ item.request_refund(
269
+ refund_amount: '1000',
270
+ refund_message: 'because'
271
+ )
252
272
  ```
253
273
  #####Refund
254
274
  ```ruby
255
- item.request_refund(
275
+ item.refund(
256
276
  refund_amount: '1000',
257
277
  refund_message: 'because'
258
278
  )
@@ -302,19 +322,23 @@ bank_account = client.bank_accounts.find('1')
302
322
  ```
303
323
  #####Deactivate a bank account
304
324
  ```ruby
305
- bank_account.deactivate('mobile_pin')
325
+ bank_account.deactivate
306
326
  ```
307
327
  #####Get a bank account's users
308
328
  ```ruby
309
329
  bank_account.user
310
330
  ```
331
+ #####Validate Routing Number
332
+ ```ruby
333
+ client.bank_accounts.validate('122235821')
334
+ ```
311
335
 
312
336
  ##PayPal Accounts
313
337
  #####Create a PayPal account
314
338
  ```ruby
315
339
  paypal_account = client.paypal_accounts.create(
316
- user_id: seller.id,
317
- paypal_email: 'seller@promisepay.com'
340
+ user_id: seller.id,
341
+ paypal_email: 'seller@promisepay.com'
318
342
  )
319
343
  ```
320
344
  #####Get a PayPal account
@@ -329,6 +353,56 @@ paypal_account.deactivate
329
353
  ```ruby
330
354
  paypal_account.user
331
355
  ```
356
+ ##Companies
357
+
358
+ #####Create a company
359
+ ```ruby
360
+ client.companies.create(
361
+ user_id: "1",
362
+ name: "Acme Co",
363
+ legal_name: "Acme Co Pty Ltd",
364
+ tax_number: "1231231",
365
+ charge_tax: true,
366
+ address_line1: "123 Test St",
367
+ address_line2: "",
368
+ city: "Melbourne",
369
+ state: "VIC",
370
+ zip: "3000",
371
+ country: "AUS"
372
+ )
373
+ ```
374
+
375
+ #####Get a company
376
+ ```ruby
377
+ client.companies.find('compamy_id')
378
+ ```
379
+
380
+ #####Get a list of companies
381
+ ```ruby
382
+ client.companies.find_all
383
+ ```
384
+
385
+ #####Get a company's address
386
+ ```ruby
387
+ company.address
388
+ ```
389
+
390
+ #####Update a company
391
+ ```ruby
392
+ client.companies.update(
393
+ id: "8d578b9c-5b79-11e5-885d-feff819cdc9f",
394
+ name: "Acme Co",
395
+ legal_name: "Acme Co Pty Ltd",
396
+ tax_number: "1231231",
397
+ charge_tax: true,
398
+ address_line1: "123 Test St",
399
+ address_line2: "",
400
+ city: "Melbourne",
401
+ state: "VIC",
402
+ zip: "3000",
403
+ country: "AUS"
404
+ )
405
+ ```
332
406
 
333
407
  ##Fees
334
408
  #####Get a list of fees
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require 'bundler/gem_tasks'
2
+
3
+ task :console do
4
+ require 'irb'
5
+ require 'irb/completion'
6
+ require 'promisepay'
7
+ ARGV.clear
8
+ IRB.start
9
+ end
@@ -1,8 +1,10 @@
1
1
  require_relative 'configurable'
2
+ require_relative 'error'
2
3
  require_relative 'models/base_model'
3
4
  require_relative 'models/account'
4
5
  require_relative 'models/bank_account'
5
6
  require_relative 'models/card_account'
7
+ require_relative 'models/company'
6
8
  require_relative 'models/fee'
7
9
  require_relative 'models/item'
8
10
  require_relative 'models/paypal_account'
@@ -12,6 +14,7 @@ require_relative 'resources/base_resource'
12
14
  require_relative 'resources/account_resource'
13
15
  require_relative 'resources/bank_account_resource'
14
16
  require_relative 'resources/card_account_resource'
17
+ require_relative 'resources/company_resource'
15
18
  require_relative 'resources/fee_resource'
16
19
  require_relative 'resources/item_resource'
17
20
  require_relative 'resources/paypal_account_resource'
@@ -52,9 +55,9 @@ module Promisepay
52
55
  # @param url [String] The path, relative to {#api_endpoint}
53
56
  # @param parameters [Hash] Query params for request
54
57
  # @return [Faraday::Response]
55
- def get(url, parameters = {})
58
+ def get(url, parameters = {}, skip_status_check = false)
56
59
  response = connection.get("#{api_endpoint}#{url}", parameters)
57
- on_complete(response)
60
+ on_complete(response) unless skip_status_check
58
61
  response
59
62
  end
60
63
 
@@ -110,6 +113,7 @@ module Promisepay
110
113
  {
111
114
  bank_accounts: BankAccountResource,
112
115
  card_accounts: CardAccountResource,
116
+ companies: CompanyResource,
113
117
  fees: FeeResource,
114
118
  items: ItemResource,
115
119
  paypal_accounts: PaypalAccountResource,
@@ -39,9 +39,7 @@ module Promisepay
39
39
  message = ''
40
40
  message << json_response['message'] if json_response.key?('message')
41
41
  if json_response.key?('errors')
42
- json_response['errors'].each do |attribute, content|
43
- message << "#{attribute}: #{content}"
44
- end
42
+ message << json_response['errors'].map{|attribute, content| "#{attribute}: #{content}"}.join(", ")
45
43
  end
46
44
 
47
45
  message
@@ -3,7 +3,7 @@ module Promisepay
3
3
  class BankAccount < Account
4
4
  # Get the user the bank account belongs to.
5
5
  #
6
- # @see http://docs.promisepay.com/v2.2/docs/bank_accountsidusers
6
+ # @see https://reference.promisepay.com/#show-bank-account-user
7
7
  #
8
8
  # @return [Promisepay::User]
9
9
  def user
@@ -14,7 +14,7 @@ module Promisepay
14
14
  # Deletes a bank account for a user on a marketplace.
15
15
  # Sets the account to in-active.
16
16
  #
17
- # @see http://docs.promisepay.com/v2.2/docs/bank_accountsid
17
+ # @see https://reference.promisepay.com/#redact-bank-account
18
18
  #
19
19
  # @param mobile_pin [String] Mobile PIN.
20
20
  #
@@ -3,7 +3,7 @@ module Promisepay
3
3
  class CardAccount < Account
4
4
  # Get the user the card account belongs to.
5
5
  #
6
- # @see http://docs.promisepay.com/v2.2/docs/card_accountsidusers
6
+ # @see https://reference.promisepay.com/#show-card-account-user
7
7
  #
8
8
  # @return [Promisepay::User]
9
9
  def user
@@ -14,7 +14,7 @@ module Promisepay
14
14
  # Deletes a card account for a user on a marketplace.
15
15
  # Sets the account to in-active.
16
16
  #
17
- # @see http://docs.promisepay.com/v2.2/docs/card_accountsid
17
+ # @see https://reference.promisepay.com/#redact-card-account
18
18
  #
19
19
  # @return [Boolean]
20
20
  def deactivate
@@ -0,0 +1,38 @@
1
+ module Promisepay
2
+ # Manage Companies
3
+ class Company < BaseModel
4
+ # Update the attributes of an item.
5
+ #
6
+ # @see https://reference.promisepay.com/#update-item
7
+ #
8
+ # @param attributes [Hash] Item's attributes to be updated.
9
+ #
10
+ # @return [self]
11
+ def update(attributes)
12
+ response = JSON.parse(@client.patch("companies/#{send(:id)}", attributes).body)
13
+ @attributes = response['companies']
14
+ self
15
+ end
16
+
17
+ # Get the user the company belongs to.
18
+ #
19
+ # @see
20
+ #
21
+ # @return [Promisepay::User]
22
+ def user
23
+ response = JSON.parse(@client.get("companies/#{send(:id)}/users").body)
24
+ Promisepay::User.new(@client, response['users'])
25
+ end
26
+
27
+ # Gets company address.
28
+ #
29
+ # @see https://reference.promisepay.com/#addresses
30
+ #
31
+ # @return [Hash]
32
+ def address
33
+ return nil unless @attributes.key?('related')
34
+ response = JSON.parse(@client.get("addresses/#{send(:related)['addresses']}").body)
35
+ response['addresses']
36
+ end
37
+ end
38
+ end
@@ -3,7 +3,7 @@ module Promisepay
3
3
  class Item < BaseModel
4
4
  # Update the attributes of an item.
5
5
  #
6
- # @see http://docs.promisepay.com/v2.2/docs/itemsiduseraction
6
+ # @see https://reference.promisepay.com/#update-item
7
7
  #
8
8
  # @param attributes [Hash] Item's attributes to be updated.
9
9
  #
@@ -16,7 +16,7 @@ module Promisepay
16
16
 
17
17
  # Show the item status for a marketplace.
18
18
  #
19
- # @see http://docs.promisepay.com/v2.2/docs/itemsidstatus
19
+ # @see https://reference.promisepay.com/#show-item-status
20
20
  #
21
21
  # @return [Hash]
22
22
  def status
@@ -26,7 +26,7 @@ module Promisepay
26
26
 
27
27
  # Show the buyer detail for a single item for a marketplace.
28
28
  #
29
- # @see http://docs.promisepay.com/v2.2/docs/itemsidbuyers
29
+ # @see https://reference.promisepay.com/#show-item-buyer
30
30
  #
31
31
  # @return [Promisepay::User]
32
32
  def buyer
@@ -36,7 +36,7 @@ module Promisepay
36
36
 
37
37
  # Show the seller detail for a single item for a marketplace.
38
38
  #
39
- # @see http://docs.promisepay.com/v2.2/docs/itemsidbuyers
39
+ # @see https://reference.promisepay.com/#show-item-seller
40
40
  #
41
41
  # @return [Promisepay::User]
42
42
  def seller
@@ -46,7 +46,7 @@ module Promisepay
46
46
 
47
47
  # Get fees associated to the item.
48
48
  #
49
- # @see http://docs.promisepay.com/v2.2/docs/itemsidfees
49
+ # @see https://reference.promisepay.com/#show-item-fees
50
50
  #
51
51
  # @param options [Hash] Optional options.
52
52
  # @option options [Integer] :limit Can ask for up to 200 fees. default: 10
@@ -61,7 +61,7 @@ module Promisepay
61
61
 
62
62
  # Get historical transaction for the item.
63
63
  #
64
- # @see http://docs.promisepay.com/v2.2/docs/itemsidtransactions
64
+ # @see https://reference.promisepay.com/#list-item-transactions
65
65
  #
66
66
  # @param options [Hash] Optional options.
67
67
  # @option options [Integer] :limit Can ask for up to 200 transactions. default: 10
@@ -76,7 +76,7 @@ module Promisepay
76
76
 
77
77
  # Show the wire details for payment.
78
78
  #
79
- # @see http://docs.promisepay.com/v2.2/docs/itemsidwire_details
79
+ # @see https://reference.promisepay.com/#show-item-wire-details
80
80
  #
81
81
  # @return [Hash]
82
82
  def wire_details
@@ -86,7 +86,7 @@ module Promisepay
86
86
 
87
87
  # Show the bpay details details for payment.
88
88
  #
89
- # @see http://docs.promisepay.com/v2.2/docs/itemsidbpay_details
89
+ # @see https://reference.promisepay.com/#show-item-bpay-details
90
90
  #
91
91
  # @return [Hash]
92
92
  def bpay_details
@@ -94,53 +94,60 @@ module Promisepay
94
94
  response['items']['bpay_details']
95
95
  end
96
96
 
97
- # .
97
+ # Make a payment for an Item.
98
98
  #
99
- # @see http://docs.promisepay.com/v2.2/docs/itemsidaction
99
+ # @see https://reference.promisepay.com/#make-payment
100
100
  #
101
101
  # @return [Boolean]
102
102
  def make_payment(options = {})
103
- @client.patch("items/#{send(:id)}/make_payment", options).body
103
+ response = JSON.parse(@client.patch("items/#{send(:id)}/make_payment", options).body)
104
+ @attributes = response['items']
104
105
  true
105
106
  end
106
107
 
107
- # .
108
+ # Request payment for an Item.
108
109
  #
109
- # @see http://docs.promisepay.com/v2.2/docs/itemsidrequest_payment
110
+ # @see https://reference.promisepay.com/#request-payment
110
111
  #
111
112
  # @return [Boolean]
112
113
  def request_payment(options = {})
113
- @client.patch("items/#{send(:id)}/request_payment", options).body
114
+ response = JSON.parse(@client.patch("items/#{send(:id)}/request_payment", options).body)
115
+ @attributes = response['items']
114
116
  true
115
117
  end
116
118
 
117
- # .
119
+ # Release funds held in escrow from an Item with an Escrow or Escrow Partial Release
120
+ # payment type.
118
121
  #
119
- # @see http://docs.promisepay.com/v2.2/docs/itemsidrequest_payment
122
+ # @see https://reference.promisepay.com/#release-payment
120
123
  #
121
124
  # @return [Boolean]
122
125
  def release_payment(options = {})
123
- @client.patch("items/#{send(:id)}/release_payment", options).body
126
+ response = JSON.parse(@client.patch("items/#{send(:id)}/release_payment", options).body)
127
+ @attributes = response['items']
124
128
  true
125
129
  end
126
130
 
127
- # .
131
+ # Request release of funds held in escrow, from an Item with an Escrow or Escrow Partial
132
+ # Release payment type.
128
133
  #
129
- # @see http://docs.promisepay.com/v2.2/docs/itemsidrequest_release
134
+ # @see https://reference.promisepay.com/#request-release
130
135
  #
131
136
  # @return [Boolean]
132
137
  def request_release(options = {})
133
- @client.patch("items/#{send(:id)}/request_release", options).body
138
+ response = JSON.parse(@client.patch("items/#{send(:id)}/request_release", options).body)
139
+ @attributes = response['items']
134
140
  true
135
141
  end
136
142
 
137
- # .
143
+ # Acknowledge that funds are being wired for payment.
138
144
  #
139
- # @see http://docs.promisepay.com/v2.2/docs/itemsidacknowledge_wire
145
+ # @see https://reference.promisepay.com/#acknowledge-wire-transfer
140
146
  #
141
147
  # @return [Boolean]
142
148
  def acknowledge_wire(options = {})
143
- @client.patch("items/#{send(:id)}/acknowledge_wire", options).body
149
+ response = JSON.parse(@client.patch("items/#{send(:id)}/acknowledge_wire", options).body)
150
+ @attributes = response['items']
144
151
  true
145
152
  end
146
153
 
@@ -150,47 +157,52 @@ module Promisepay
150
157
  #
151
158
  # @return [Boolean]
152
159
  def acknowledge_paypal(options = {})
153
- @client.patch("items/#{send(:id)}/acknowledge_paypal", options).body
160
+ response = JSON.parse(@client.patch("items/#{send(:id)}/acknowledge_paypal", options).body)
161
+ @attributes = response['items']
154
162
  true
155
163
  end
156
164
 
157
- # .
165
+ # Revert an acknowledge wire Item Action.
158
166
  #
159
- # @see http://docs.promisepay.com/v2.2/docs/itemsidrevert_wire
167
+ # @see https://reference.promisepay.com/#revert-wire-transfer
160
168
  #
161
169
  # @return [Boolean]
162
170
  def revert_wire(options = {})
163
- @client.patch("items/#{send(:id)}/revert_wire", options).body
171
+ response = JSON.parse(@client.patch("items/#{send(:id)}/revert_wire", options).body)
172
+ @attributes = response['items']
164
173
  true
165
174
  end
166
175
 
167
- # .
176
+ # Request a refund for an Item.
168
177
  #
169
- # @see http://docs.promisepay.com/v2.2/docs/itemsidrequest_refund
178
+ # @see https://reference.promisepay.com/#request-refund
170
179
  #
171
180
  # @return [Boolean]
172
181
  def request_refund(options = {})
173
- @client.patch("items/#{send(:id)}/request_refund", options).body
182
+ response = JSON.parse(@client.patch("items/#{send(:id)}/request_refund", options).body)
183
+ @attributes = response['items']
174
184
  true
175
185
  end
176
186
 
177
- # .
187
+ # Refund an Item’s funds held in escrow.
178
188
  #
179
- # @see http://docs.promisepay.com/v2.2/docs/itemsidrefund
189
+ # @see https://reference.promisepay.com/#refund
180
190
  #
181
191
  # @return [Boolean]
182
192
  def refund(options = {})
183
- @client.patch("items/#{send(:id)}/refund", options).body
193
+ response = JSON.parse(@client.patch("items/#{send(:id)}/refund", options).body)
194
+ @attributes = response['items']
184
195
  true
185
196
  end
186
197
 
187
- # .
198
+ # Cancel an Item.
188
199
  #
189
- # @see http://docs.promisepay.com/v2.2/docs/itemsidcancel
200
+ # @see https://reference.promisepay.com/#cancel
190
201
  #
191
202
  # @return [Boolean]
192
203
  def cancel
193
- @client.patch("items/#{id}/cancel")
204
+ response = JSON.parse(@client.patch("items/#{id}/cancel").body)
205
+ @attributes = response['items']
194
206
  true
195
207
  end
196
208
  end
@@ -3,7 +3,7 @@ module Promisepay
3
3
  class PaypalAccount < Account
4
4
  # Get the user the paypal account belongs to.
5
5
  #
6
- # @see http://docs.promisepay.com/v2.2/docs/paypal_accountsidusers
6
+ # @see https://reference.promisepay.com/#show-paypal-account-user
7
7
  #
8
8
  # @return [Promisepay::User]
9
9
  def user
@@ -14,7 +14,7 @@ module Promisepay
14
14
  # Deletes a Paypal account for a user on a marketplace.
15
15
  # Sets the account to in-active.
16
16
  #
17
- # @see http://docs.promisepay.com/v2.2/docs/paypal_accountsid
17
+ # @see https://reference.promisepay.com/#redact-paypal-account
18
18
  #
19
19
  # @return [Boolean]
20
20
  def deactivate
@@ -1,9 +1,9 @@
1
1
  module Promisepay
2
2
  # Manage Transactions
3
3
  class Transaction < Account
4
- # .
4
+ # Show the User associated with the Transaction.
5
5
  #
6
- # @see https://test.api.promisepay.com/transactions/:id/users
6
+ # @see https://reference.promisepay.com/#show-transaction-user
7
7
  #
8
8
  # @return [Promisepay::User]
9
9
  def user
@@ -13,7 +13,7 @@ module Promisepay
13
13
 
14
14
  # Gets a transactions fee details if applicable.
15
15
  #
16
- # @see http://docs.promisepay.com/v2.2/docs/transactionsidfees
16
+ # @see https://reference.promisepay.com/#shows-transaction-fees
17
17
  #
18
18
  # @return [Promisepay::Fee]
19
19
  def fee
@@ -2,9 +2,22 @@
2
2
  module Promisepay
3
3
  # Manage Users
4
4
  class User < BaseModel
5
+ # Update the attributes of an item.
6
+ #
7
+ # @see https://reference.promisepay.com/#update-item
8
+ #
9
+ # @param attributes [Hash] Item's attributes to be updated.
10
+ #
11
+ # @return [self]
12
+ def update(attributes)
13
+ response = JSON.parse(@client.patch("users/#{send(:id)}", attributes).body)
14
+ @attributes = response['users']
15
+ self
16
+ end
17
+
5
18
  # Lists items for a user on a marketplace.
6
19
  #
7
- # @see http://docs.promisepay.com/v2.2/docs/usersiditems
20
+ # @see https://reference.promisepay.com/#list-user-items
8
21
  #
9
22
  # @return [Array<Promisepay::Item>]
10
23
  def items
@@ -15,7 +28,7 @@ module Promisepay
15
28
 
16
29
  # Gets Bank account for a user on a marketplace.
17
30
  #
18
- # @see http://docs.promisepay.com/v2.2/docs/usersidbank_accounts
31
+ # @see https://reference.promisepay.com/#show-user-bank-account
19
32
  #
20
33
  # @return [Promisepay::BankAccount]
21
34
  def bank_account
@@ -27,7 +40,7 @@ module Promisepay
27
40
 
28
41
  # Gets Card account for a user on a marketplace.
29
42
  #
30
- # @see http://docs.promisepay.com/v2.2/docs/usersidcard_accounts
43
+ # @see https://reference.promisepay.com/#show-user-card-account
31
44
  #
32
45
  # @return [Promisepay::CardAccount]
33
46
  def card_account
@@ -39,7 +52,7 @@ module Promisepay
39
52
 
40
53
  # Gets PayPal account for a user on a marketplace.
41
54
  #
42
- # @see http://docs.promisepay.com/v2.2/docs/usersidpaypal_accounts
55
+ # @see https://reference.promisepay.com/#show-user-paypal-account
43
56
  #
44
57
  # @return [Promisepay::PaypalAccount]
45
58
  def paypal_account
@@ -51,7 +64,7 @@ module Promisepay
51
64
 
52
65
  # Set the disbursement account for a user.
53
66
  #
54
- # @see http://docs.promisepay.com/v2.2/docs/usersiddisbursement_account
67
+ # @see https://reference.promisepay.com/#set-user-disbursement-account
55
68
  #
56
69
  # @return [Boolean]
57
70
  def disbursement_account(account_id)
@@ -59,5 +72,28 @@ module Promisepay
59
72
  JSON.parse(@client.post("users/#{send(:id)}/disbursement_account", options).body)
60
73
  true
61
74
  end
75
+
76
+ # Gets company for a user on a marketplace.
77
+ #
78
+ # @see
79
+ #
80
+ # @return [Promisepay::Company]
81
+ def company
82
+ response = JSON.parse(@client.get("users/#{send(:id)}/companies").body)
83
+ Promisepay::Company.new(@client, response['companies'])
84
+ rescue Promisepay::NotFound
85
+ nil
86
+ end
87
+
88
+ # Gets user address.
89
+ #
90
+ # @see https://reference.promisepay.com/#addresses
91
+ #
92
+ # @return [Hash]
93
+ def address
94
+ return nil unless @attributes.key?('related')
95
+ response = JSON.parse(@client.get("addresses/#{send(:related)['addresses']}").body)
96
+ response['addresses']
97
+ end
62
98
  end
63
99
  end
@@ -7,7 +7,7 @@ module Promisepay
7
7
 
8
8
  # Get bank account for a user on a marketplace.
9
9
  #
10
- # @see http://docs.promisepay.com/v2.2/docs/bank_accountsid-1
10
+ # @see https://reference.promisepay.com/#show-bank-account
11
11
  #
12
12
  # @param id [String] Bank Account ID.
13
13
  #
@@ -19,7 +19,7 @@ module Promisepay
19
19
 
20
20
  # Create a bank account for a user on a marketplace.
21
21
  #
22
- # @see http://docs.promisepay.com/v2.2/docs/bank_accountsid-2
22
+ # @see https://reference.promisepay.com/#create-bank-account
23
23
  #
24
24
  # @param attributes [Hash] Bank Account's attributes.
25
25
  #
@@ -28,5 +28,19 @@ module Promisepay
28
28
  response = JSON.parse(@client.post('bank_accounts', attributes).body)
29
29
  Promisepay::BankAccount.new(@client, response['bank_accounts'])
30
30
  end
31
+
32
+ # Validate a US bank routing number before creating an account.
33
+ # This can be used to provide on-demand verification,
34
+ # and further information of the bank information a User is providing.
35
+ #
36
+ # @see https://reference.promisepay.com/#validate-routing-number
37
+ #
38
+ # @param routing_number [String] Bank account Routing Number
39
+ #
40
+ # @return [Hash]
41
+ def validate(routing_number)
42
+ response = @client.get('tools/routing_number', { routing_number: routing_number }, true)
43
+ (response.status == 200) ? JSON.parse(response.body)['routing_number'] : {}
44
+ end
31
45
  end
32
46
  end
@@ -7,7 +7,7 @@ module Promisepay
7
7
 
8
8
  # Get card account for a user on a marketplace.
9
9
  #
10
- # @see http://docs.promisepay.com/v2.2/docs/card_accountsid-1
10
+ # @see https://reference.promisepay.com/#show-card-account
11
11
  #
12
12
  # @param id [String] Bank Account ID.
13
13
  #
@@ -19,7 +19,7 @@ module Promisepay
19
19
 
20
20
  # Create a card account for a user on a marketplace.
21
21
  #
22
- # @see http://docs.promisepay.com/v2.2/docs/card_accountsid-2
22
+ # @see https://reference.promisepay.com/#create-card-account
23
23
  #
24
24
  # @param attributes [Hash] Bank Account's attributes.
25
25
  #
@@ -0,0 +1,59 @@
1
+ module Promisepay
2
+ # Resource for the Fees API
3
+ class CompanyResource < BaseResource
4
+ def model
5
+ Promisepay::Company
6
+ end
7
+
8
+ # List all companies for a marketplace
9
+ #
10
+ # @see https://reference.promisepay.com/#list-companies
11
+ #
12
+ # @param options [Hash] Optional options.
13
+ # @option options [Integer] :limit Can ask for up to 200 users. default: 10
14
+ # @option options [Integer] :offset Pagination help. default: 0
15
+ #
16
+ # @return [Array<Promisepay::Company>] List all companies for a marketplace.
17
+ def find_all(options = {})
18
+ response = JSON.parse(@client.get('companies', options).body)
19
+ users = response.key?('companies') ? response['companies'] : []
20
+ users.map { |attributes| Promisepay::Company.new(@client, attributes) }
21
+ end
22
+
23
+ # Get a company
24
+ #
25
+ # @see https://reference.promisepay.com/#show-company
26
+ #
27
+ # @param id [String] Company id
28
+ #
29
+ # @return [Promisepay::Company]
30
+ def find(id)
31
+ response = JSON.parse(@client.get("companies/#{id}").body)
32
+ Promisepay::Company.new(@client, response['companies'])
33
+ end
34
+
35
+ # Create a company for a user
36
+ #
37
+ # @see https://reference.promisepay.com/#create-company
38
+ #
39
+ # @param attributes [Hash] Company's attributes.
40
+ #
41
+ # @return [Promisepay::Company]
42
+ def create(attributes)
43
+ response = JSON.parse(@client.post('companies', attributes).body)
44
+ Promisepay::Company.new(@client, response['companies'])
45
+ end
46
+
47
+ # Update a company for a user
48
+ #
49
+ # @see https://reference.promisepay.com/#update-company
50
+ #
51
+ # @param attributes [Hash] Company's attributes.
52
+ #
53
+ # @return [Promisepay::Company]
54
+ def update(attributes)
55
+ response = JSON.parse(@client.patch('companies', attributes).body)
56
+ Promisepay::Company.new(@client, response['companies'])
57
+ end
58
+ end
59
+ end
@@ -7,7 +7,7 @@ module Promisepay
7
7
 
8
8
  # List all fees for a marketplace
9
9
  #
10
- # @see http://docs.promisepay.com/v2.2/docs/fees-1
10
+ # @see https://reference.promisepay.com/#list-fees
11
11
  #
12
12
  # @param options [Hash] Optional options.
13
13
  # @option options [Integer] :limit Can ask for up to 200 fees. default: 10
@@ -22,7 +22,7 @@ module Promisepay
22
22
 
23
23
  # Get a single fee for a marketplace
24
24
  #
25
- # @see http://docs.promisepay.com/v2.2/docs/feesid
25
+ # @see https://reference.promisepay.com/#show-fee
26
26
  #
27
27
  # @param id [String] Marketplace Fee ID.
28
28
  #
@@ -34,7 +34,7 @@ module Promisepay
34
34
 
35
35
  # Create a fee for a marketplace
36
36
  #
37
- # @see http://docs.promisepay.com/v2.2/docs/fee_lists
37
+ # @see https://reference.promisepay.com/#create-fee
38
38
  #
39
39
  # @param attributes [Hash] Item's attributes.
40
40
  #
@@ -7,7 +7,7 @@ module Promisepay
7
7
 
8
8
  # List all items for a marketplace
9
9
  #
10
- # @see http://docs.promisepay.com/v2.2/docs/items
10
+ # @see https://reference.promisepay.com/#list-items
11
11
  #
12
12
  # @param options [Hash] Optional options.
13
13
  # @option options [Integer] :limit Can ask for up to 200 items. default: 10
@@ -22,7 +22,7 @@ module Promisepay
22
22
 
23
23
  # Get a single item for a marketplace
24
24
  #
25
- # @see http://docs.promisepay.com/v2.2/docs/itemsid
25
+ # @see https://reference.promisepay.com/#show-item
26
26
  #
27
27
  # @param id [String] Marketplace item ID.
28
28
  #
@@ -40,7 +40,7 @@ module Promisepay
40
40
 
41
41
  # Create an item for a marketplace
42
42
  #
43
- # @see http://docs.promisepay.com/v2.2/docs/items-1
43
+ # @see https://reference.promisepay.com/#create-item
44
44
  #
45
45
  # @param attributes [Hash] Item's attributes.
46
46
  #
@@ -7,7 +7,7 @@ module Promisepay
7
7
 
8
8
  # Get paypal account for a user on a marketplace.
9
9
  #
10
- # @see http://docs.promisepay.com/v2.2/docs/paypal_accountsid-1
10
+ # @see https://reference.promisepay.com/#show-paypal-account
11
11
  #
12
12
  # @param id [String] Paypal Account ID.
13
13
  #
@@ -19,7 +19,7 @@ module Promisepay
19
19
 
20
20
  # Create a Paypal account for a user on a marketplace.
21
21
  #
22
- # @see http://docs.promisepay.com/v2.2/docs/paypal_accountsid-2
22
+ # @see https://reference.promisepay.com/#create-paypal-account
23
23
  #
24
24
  # @param attributes [Hash] Paypal Account's attributes.
25
25
  #
@@ -3,19 +3,31 @@ module Promisepay
3
3
  class TokenResource < BaseResource
4
4
  # Create a new token for an item
5
5
  #
6
- # @see http://docs.promisepay.com/v2.2/docs/request_session_token
6
+ # @see https://reference.promisepay.com/#generate-card-token
7
7
  #
8
8
  # @param attributes [Hash] Token's attributes.
9
9
  #
10
10
  # @return [Hash]
11
11
  def create(type = :session, attributes)
12
12
  case type
13
- when :session
14
- if attributes && attributes[:fee_ids] && attributes[:fee_ids].is_a?(Array)
15
- attributes[:fee_ids] = attributes[:fee_ids].join(',')
16
- end
17
- response = @client.get('request_session_token', attributes)
18
- JSON.parse(response.body)
13
+ when :session
14
+ if attributes && attributes[:fee_ids] && attributes[:fee_ids].is_a?(Array)
15
+ attributes[:fee_ids] = attributes[:fee_ids].join(',')
16
+ end
17
+ response = @client.get('request_session_token', attributes)
18
+ JSON.parse(response.body)
19
+ when :eui
20
+ attributes[:token_type] = 'eui'
21
+ response = @client.post('token_auths/', attributes)
22
+ JSON.parse(response.body)
23
+ when :card
24
+ attributes[:token_type] = 'card'
25
+ response = @client.post('token_auths/', attributes)
26
+ JSON.parse(response.body)
27
+ when :approve
28
+ attributes[:token_type] = '4'
29
+ response = @client.post('token_auths/', attributes)
30
+ JSON.parse(response.body)
19
31
  end
20
32
  end
21
33
  end
@@ -7,7 +7,7 @@ module Promisepay
7
7
 
8
8
  # List all transactions for a marketplace
9
9
  #
10
- # @see http://docs.promisepay.com/v2.2/docs/transactions
10
+ # @see https://reference.promisepay.com/#list-transactions
11
11
  #
12
12
  # @param options [Hash] Optional options.
13
13
  # @option options [Integer] :limit Can ask for up to 200 transactions. default: 10
@@ -22,7 +22,7 @@ module Promisepay
22
22
 
23
23
  # Get a single transaction for a marketplace
24
24
  #
25
- # @see http://docs.promisepay.com/v2.2/docs/transactionsid
25
+ # @see https://reference.promisepay.com/#show-transaction
26
26
  #
27
27
  # @param id [String] transaction ID.
28
28
  #
@@ -7,7 +7,7 @@ module Promisepay
7
7
 
8
8
  # List all users for a marketplace
9
9
  #
10
- # @see http://docs.promisepay.com/v2.2/docs/users
10
+ # @see https://reference.promisepay.com/#list-users
11
11
  #
12
12
  # @param options [Hash] Optional options.
13
13
  # @option options [Integer] :limit Can ask for up to 200 users. default: 10
@@ -22,7 +22,7 @@ module Promisepay
22
22
 
23
23
  # Get a single user
24
24
  #
25
- # @see http://docs.promisepay.com/v2.2/docs/usersid
25
+ # @see https://reference.promisepay.com/#show-user
26
26
  #
27
27
  # @param id [String] Marketplace user ID.
28
28
  #
@@ -34,7 +34,7 @@ module Promisepay
34
34
 
35
35
  # Create a new user for a marketplace
36
36
  #
37
- # @see http://docs.promisepay.com/v2.2/docs/users-1
37
+ # @see https://reference.promisepay.com/#create-user
38
38
  #
39
39
  # @param attributes [Hash] User's attributes.
40
40
  #
@@ -46,7 +46,7 @@ module Promisepay
46
46
 
47
47
  # Update a user for a marketplace
48
48
  #
49
- # @see http://docs.promisepay.com/v2.2/docs/users-1
49
+ # @see https://reference.promisepay.com/#update-user
50
50
  #
51
51
  # @param attributes [Hash] User's attributes.
52
52
  #
@@ -1,4 +1,4 @@
1
1
  # Gem version
2
2
  module Promisepay
3
- VERSION = '0.0.5'
3
+ VERSION = '1.0.0'
4
4
  end
data/promisepay.gemspec CHANGED
@@ -5,7 +5,7 @@ require 'promisepay/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'promisepay'
8
- spec.version = Promisepay::VERSION
8
+ spec.version = '0.0.6'
9
9
  spec.authors = ['Romain Vigo Benia']
10
10
  spec.email = ['romain.vigobenia@gmail.com']
11
11
  spec.summary = 'Gem to wrap promisepay.com API.'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: promisepay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Romain Vigo Benia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-30 00:00:00.000000000 Z
11
+ date: 2016-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -85,6 +85,7 @@ files:
85
85
  - lib/promisepay/models/bank_account.rb
86
86
  - lib/promisepay/models/base_model.rb
87
87
  - lib/promisepay/models/card_account.rb
88
+ - lib/promisepay/models/company.rb
88
89
  - lib/promisepay/models/fee.rb
89
90
  - lib/promisepay/models/item.rb
90
91
  - lib/promisepay/models/paypal_account.rb
@@ -94,6 +95,7 @@ files:
94
95
  - lib/promisepay/resources/bank_account_resource.rb
95
96
  - lib/promisepay/resources/base_resource.rb
96
97
  - lib/promisepay/resources/card_account_resource.rb
98
+ - lib/promisepay/resources/company_resource.rb
97
99
  - lib/promisepay/resources/fee_resource.rb
98
100
  - lib/promisepay/resources/item_resource.rb
99
101
  - lib/promisepay/resources/paypal_account_resource.rb
@@ -122,9 +124,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
124
  version: '0'
123
125
  requirements: []
124
126
  rubyforge_project:
125
- rubygems_version: 2.4.5
127
+ rubygems_version: 2.5.1
126
128
  signing_key:
127
129
  specification_version: 4
128
130
  summary: Gem to wrap promisepay.com API.
129
131
  test_files: []
130
- has_rdoc: