paystack 0.1.6 → 0.1.7

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: bb366e37dbe506cf360fd40f6cb062d666ea7f2a
4
- data.tar.gz: 9dc2efb61e565d8b186bfb475e5c04fd8ff97b5f
3
+ metadata.gz: ca84ed9325f45d81dc3f39a20e84e36e22c90508
4
+ data.tar.gz: 4452868879b2ce83f18a7527b9a42c2f6521ec8a
5
5
  SHA512:
6
- metadata.gz: 5680617e95a07aa69db0285af5022a10f90ade70dd64eb6a33f3d98616d2ca7292b3a5bf7bbead4bde8a62f5d26104e26db9e2ffb7f1b87add86c9bbbfc76b5f
7
- data.tar.gz: cc8141ba0e7c4ea5e97de5fb1f869acd0bde317a1c0bb2a49d70490809890bf80bdc881305d280e1220237c534b76f471002d930a41185db7b7b9d4a81d558d6
6
+ metadata.gz: b28d0e7368e94554f9b475ee99c4958e73ecf7e2b935dba844de895de44061684aa82cc2b9bf7306af0f075f3e5c2849b5b2ba747107003a380415504c09bfeb
7
+ data.tar.gz: 47742d3ea7681517f016445cdd355700817232f92f37333515e29b0d48783e2c13290a9bc0ba8ce791a047b18c4dfb8420a10bd98e98750b87f3cc22aa9bac10
data/README.md CHANGED
@@ -44,7 +44,7 @@ It throws a `PaystackBadKeyError` when either of the keys are invalid or cannot
44
44
 
45
45
 
46
46
 
47
- ### Initialize transaction and get Authorization URL
47
+ ### Initialize transaction and get Authorization URL
48
48
 
49
49
  ```ruby
50
50
 
@@ -84,7 +84,7 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
84
84
 
85
85
  page_number = 1
86
86
  transactions = PaystackTransactions.new(paystackObj)
87
- result = transactions.list(page_number) #Optional `page_number` parameter
87
+ result = transactions.list(page_number) #Optional `page_number` parameter
88
88
 
89
89
  ```
90
90
 
@@ -94,7 +94,7 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
94
94
 
95
95
  transaction_id = "123456778"
96
96
  transactions = PaystackTransactions.new(paystackObj)
97
- result = transactions.get(transaction_id)
97
+ result = transactions.get(transaction_id)
98
98
 
99
99
  ```
100
100
 
@@ -104,7 +104,7 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
104
104
 
105
105
  transaction_reference = "blablablabla-YOUR-VALID-UNIQUE-REFERENCE-HERE"
106
106
  transactions = PaystackTransactions.new(paystackObj)
107
- result = transactions.verify(transaction_reference)
107
+ result = transactions.verify(transaction_reference)
108
108
 
109
109
  ```
110
110
 
@@ -114,7 +114,7 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
114
114
  ```ruby
115
115
 
116
116
  transactions = PaystackTransactions.new(paystackObj)
117
- result = transactions.totals()
117
+ result = transactions.totals()
118
118
 
119
119
  ```
120
120
 
@@ -128,7 +128,7 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
128
128
 
129
129
  page_number = 1
130
130
  customers = PaystackCustomers.new(paystackObj)
131
- result = customers.list(page_number) #Optional `page_number` parameter, 50 items per page
131
+ result = customers.list(page_number) #Optional `page_number` parameter, 50 items per page
132
132
  customers_list = result['data']
133
133
 
134
134
  ```
@@ -139,7 +139,7 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
139
139
 
140
140
  customer_id = "123456778"
141
141
  customers = PaystackCustomers.new(paystackObj)
142
- result = customers.get(customer_id)
142
+ result = customers.get(customer_id)
143
143
  customer = result['data']
144
144
 
145
145
  ```
@@ -169,7 +169,7 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
169
169
  customer_id,
170
170
  :last_name => "Ikorodu",
171
171
  :email => "xxxxx-modified@gmail.com"
172
- )
172
+ )
173
173
 
174
174
  ```
175
175
 
@@ -181,7 +181,7 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
181
181
 
182
182
  page_number = 1
183
183
  plans = PaystackPlans.new(paystackObj)
184
- result = plans.list(page_number) #Optional `page_number` parameter, 50 items per page
184
+ result = plans.list(page_number) #Optional `page_number` parameter, 50 items per page
185
185
  plans_list = result['data']
186
186
 
187
187
  ```
@@ -192,12 +192,12 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
192
192
 
193
193
  plan_id = "123456778"
194
194
  plans = PaystackPlans.new(paystackObj)
195
- result = plans.get(plan_id)
195
+ result = plans.get(plan_id)
196
196
  plan = result['data']
197
197
 
198
198
  ```
199
199
 
200
- ### Create new plan
200
+ ### Create new plan
201
201
 
202
202
  ```ruby
203
203
 
@@ -205,9 +205,9 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
205
205
  result = plans.create(
206
206
 
207
207
  :name => "Test Plan",
208
- :description => "Dev Test Plan",
208
+ :description => "Dev Test Plan",
209
209
  :amount => 30000, #in KOBO
210
- :interval => "monthly", #monthly, yearly, quarterly, weekly etc
210
+ :interval => "monthly", #monthly, yearly, quarterly, weekly etc
211
211
  :currency => "NGN"
212
212
  )
213
213
 
@@ -217,13 +217,13 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
217
217
 
218
218
  ```ruby
219
219
 
220
- plan_id = ""123456778"
220
+ plan_id = "123456778"
221
221
  plans = PaystackPlans.new(paystackObj)
222
222
  result = plans.update(
223
223
  plan_id,
224
224
  :name => "Test Plan Updated",
225
225
  :amount => 500000, #in KOBO
226
- :interval => "weekly"
226
+ :interval => "weekly"
227
227
  )
228
228
 
229
229
  ```
@@ -231,7 +231,7 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
231
231
 
232
232
  ## Subscriptions
233
233
 
234
- ### Create new subscription
234
+ ### Create new subscription
235
235
 
236
236
  ```ruby
237
237
 
@@ -248,10 +248,10 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
248
248
  ### Get subscription detail
249
249
 
250
250
  ```ruby
251
-
251
+
252
252
  subscription_id = "123456778"
253
253
  subscriptions = PaystackSubscriptions.new(paystackObj)
254
- result = subscriptions.get(subscription_id)
254
+ result = subscriptions.get(subscription_id)
255
255
  subscription = result['data']
256
256
 
257
257
  ```
@@ -281,8 +281,229 @@ NOTE: Amount is in kobo i.e. `100000 = 100000 kobo = 1000 naira`
281
281
  ```
282
282
 
283
283
 
284
+ ## Split Payments
285
+
286
+ This Gem is also aware of the API calls that allow you to perform split payments on Paystack. The [Paystack documentation on split payments](https://developers.paystack.co/docs/split-payments-overview) can get you started. Below are some sample calls for [subaccounts](https://developers.paystack.co/docs/create-subaccount) and [banks](https://developers.paystack.co/docs/list-banks).
287
+
288
+ ## Banks
289
+
290
+ ### List Banks
291
+
292
+ ```ruby
293
+
294
+ page_number = 1
295
+ banks = PaystackBanks.new(paystackObj)
296
+ result = banks.list(page_number) #Optional `page_number` parameter, 50 items per page
297
+ banks_list = result['data']
298
+
299
+ ```
300
+
301
+ ## Subaccounts
302
+
303
+ ### List Subaccounts
304
+
305
+ ```ruby
306
+
307
+ page_number = 1
308
+ subaccounts = PaystackSubaccounts.new(paystackObj)
309
+ result = subaccounts.list(page_number) #Optional `page_number` parameter, 50 items per page
310
+ subaccounts_list = result['data']
311
+
312
+ ```
313
+
314
+ ### Get a subaccount
315
+
316
+ ```ruby
317
+
318
+ subaccount_id = "123456778"
319
+ subaccounts = PaystackSubaccounts.new(paystackObj)
320
+ result = subaccounts.get(subaccount_id)
321
+ subaccount = result['data']
322
+
323
+ ```
324
+
325
+ ### Create new subaccount
326
+
327
+ ```ruby
328
+
329
+ subaccounts = PaystackSubaccounts.new(paystackObj)
330
+ result = subaccounts.create(
331
+ :business_name => "Madam Ikoro Holdings",
332
+ :settlement_bank => "Providus Bank",
333
+ :account_number => "1170766666"
334
+ :percentage_charge => 3.2
335
+ )
336
+
337
+ ```
338
+
339
+ ### Update subaccount details
340
+
341
+ ```ruby
342
+
343
+ subaccount_id = "123456778"
344
+ subaccounts = PaystackSubaccounts.new(paystackObj)
345
+ # Updating primary contact name and email of subaccount
346
+ result = subaccounts.update(
347
+ subaccount_id,
348
+ :primary_contact_name => "Victoria Ikorodu",
349
+ :primary_contact_email => "xxxxx-modified@gmail.com"
350
+ )
351
+
352
+ ```
353
+
354
+ ## Settlements
355
+ Fetch settlements made to your bank accounts and the bank accounts for your subaccounts
356
+
357
+ ### List settlements
358
+
359
+ ```ruby
360
+
361
+ settlements = PaystackSettlements.new(paystackObj)
362
+ results = settlements.list
363
+ settlements_list = result['data']
364
+
365
+ ```
366
+
367
+ ## Transfers
368
+
369
+ The funds transfers feature enables you send money directly from your paystack balance to any Nigerian Bank account. The [Paystack documentation on transfers](https://developers.paystack.co/docs/funds_transfers) can get you started.
370
+
371
+ ## Balance
372
+
373
+ ### Check Paystack Balance
374
+
375
+ ```ruby
376
+
377
+ balance = PaystackBalance.new(paystackObj)
378
+ result = balance.get
379
+ account_balance = result['data']
380
+
381
+ ```
382
+
383
+ ## Transfers
384
+
385
+ ### Initialize a transfer
386
+
387
+ ```ruby
388
+
389
+ transfer = PaystackTransfers.new(paystackObj)
390
+ results = transfers.initializeTransfer(
391
+ :source => "balance", # Must be balance
392
+ :reason => "Your reason",
393
+ :amount => 30000, # Amount in kobo
394
+ :recipient => recipient_code, # Unique recipient code
395
+ )
396
+
397
+ ```
398
+
399
+ ### List transfers
400
+
401
+ ```ruby
402
+
403
+ page_number = 1
404
+ transactions = PaystackTransfers.new(paystackObj)
405
+ result = transfers.list(page_number) #Optional `page_number` parameter
406
+
407
+ ```
408
+
409
+ ### Get a transfer
410
+
411
+ ```ruby
412
+
413
+ transfer_code = "TRF_uniquecode"
414
+ transactions = PaystackTransfers.new(paystackObj)
415
+ result = transactions.get(transaction_code)
416
+
417
+ ```
418
+
419
+ ### Finalize a transfer
420
+
421
+ ```ruby
422
+
423
+ transfer = PaystackTransfers.new(paystackObj)
424
+ results = transfer.authorize(
425
+ :transfer_code => "TRF_blablabla", # Must be balance
426
+ :otp => "12350",
427
+ )
428
+
429
+ ```
430
+
431
+
432
+ ## Transfer Recipients
433
+
434
+ ### Create new recipient
435
+
436
+ ```ruby
437
+
438
+ recipient = PaystackRecipients.new(paystackObj)
439
+ result = recipients.create(
440
+ :type => "nuban", #Must be nuban
441
+ :name => "Test Plan",
442
+ :description => "Bla-bla-bla",
443
+ :account_number => 0123456789, #10 digit account number
444
+ :bank_code => "044", #monthly, yearly, quarterly, weekly etc
445
+ :currency => "NGN",
446
+
447
+ )
448
+
449
+ ```
450
+
451
+ ### List transfer recipients
452
+
453
+ ```ruby
454
+ page_number = 1
455
+ recipients = PaystackRecipients.new(paystackObj)
456
+ result = recipients.list(page_number) #Optional `page_number` parameter, 50 items per page
457
+ recipients_list = result['data']
458
+
459
+ ```
460
+
461
+ ## Transfer Control
462
+
463
+ ### Resend OTP
464
+
465
+ ```ruby
466
+ transfer_code = "TRF_asdfghjkl" #A unique Transfer code is generated when transfer is created
467
+ transfer = PaystackTransfers.new(paystackObj)
468
+ result = transfer.resendOtp(transfer_code)
469
+
470
+
471
+ ```
472
+
473
+ ### Disable OTP for transfers
474
+
475
+ ```ruby
476
+
477
+ transfer = PaystackTransfers.new(paystackObj)
478
+ result = transfer.disableOtp
479
+ #OTP is sent to the registered phone number of the account
480
+
481
+ ```
482
+
483
+ ### Confirm disabling of OTP for transfers
484
+
485
+ ```ruby
486
+
487
+ otp = "12345"
488
+ transfer = PaystackTransfers.new(paystackObj)
489
+ # Updating primary contact name and email of subaccount
490
+ result = transfer.confirmDisableOtp(
491
+ :otp => otp, #Must be valid OTP sent to the registered phone number
492
+ )
493
+
494
+ ```
495
+
496
+ ### Enable OTP for transfers
497
+
498
+ ```ruby
499
+
500
+ transfer = PaystackTransfers.new(paystackObj)
501
+ result = transfer.enableOtp
502
+
503
+ ```
504
+
284
505
  ## Static methods
285
- `PaystackTransactions`, `PaystackCustomers`, `PaystackPlans` and `PaystackSubscriptions` methods can be called statically, You just need to pass the paystack object as the first parameter e.g. `verify` method in `PaystackTransactions` can be called like this
506
+ `PaystackTransactions`, `PaystackCustomers`, `PaystackPlans`, `PaystackSubaccounts`, `PaystackBanks` , `PaystackSubscriptions` , `PaystackSettlements`, `PaystackBalance`, and `PaystackTransfers` methods can be called statically, You just need to pass the paystack object as the first parameter e.g. `verify` method in `PaystackTransactions` can be called like this
286
507
 
287
508
 
288
509
  ```ruby
@@ -304,4 +525,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/IkoroV
304
525
  ## License
305
526
 
306
527
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
307
-
@@ -8,6 +8,10 @@ require 'paystack/objects/plans.rb'
8
8
  require 'paystack/objects/subscriptions.rb'
9
9
  require 'paystack/objects/transactions.rb'
10
10
  require 'paystack/objects/banks.rb'
11
+ require 'paystack/objects/balance.rb'
12
+ require 'paystack/objects/settlements.rb'
13
+ require 'paystack/objects/recipients.rb'
14
+ require 'paystack/objects/transfers.rb'
11
15
 
12
16
 
13
17
  class Paystack
@@ -39,8 +43,6 @@ class Paystack
39
43
  unless @private_key[0..2] == 'sk_'
40
44
  raise PaystackBadKeyError, "Invalid private key #{@private_key}"
41
45
  end
42
-
43
-
44
46
  end
45
47
 
46
48
  #TODO delete if not used
@@ -7,4 +7,8 @@ module API
7
7
  SUBSCRIPTION_PATH = "/subscription"
8
8
  BANK_PATH = "/bank"
9
9
  SUBACCOUNT_PATH = "/subaccount"
10
+ BALANCE_PATH = "/balance"
11
+ RECIPIENT_PATH = "/transferrecipient"
12
+ TRANSFER_PATH = "/transfer"
13
+ SETTLEMENT_PATH = "/settlement"
10
14
  end
@@ -0,0 +1,12 @@
1
+ require 'paystack/objects/base.rb'
2
+
3
+ class PaystackBalance < PaystackBaseObject
4
+ def get
5
+ return PaystackBalance.get(@paystack)
6
+ end
7
+
8
+
9
+ def PaystackBalance.get(paystackObj)
10
+ initGetRequest(paystackObj, "#{API::BALANCE_PATH}")
11
+ end
12
+ end
@@ -0,0 +1,26 @@
1
+ require 'paystack/objects/base.rb'
2
+
3
+
4
+ class PaystackRecipients < PaystackBaseObject
5
+
6
+ def create(data={})
7
+ return PaystackRecipients.create(@paystack, data)
8
+ end
9
+
10
+ def list(page=1)
11
+ return PaystackRecipients.list(@paystack, page)
12
+ end
13
+
14
+
15
+ def PaystackRecipients.create(paystackObj, data={})
16
+ initPostRequest(paystackObj, "#{API::RECIPIENT_PATH}", data, true)
17
+ end
18
+
19
+ def PaystackRecipients.list(paystackObj, page=1)
20
+ initGetRequest(paystackObj, "#{API::RECIPIENT_PATH}/?page=#{page}")
21
+ end
22
+
23
+
24
+
25
+
26
+ end
@@ -0,0 +1,12 @@
1
+ require 'paystack/objects/base.rb'
2
+
3
+ class PaystackSettlements < PaystackBaseObject
4
+ def list
5
+ return PaystackSettlements.list(@paystack)
6
+ end
7
+
8
+
9
+ def PaystackSettlements.list(paystackObj)
10
+ initGetRequest(paystackObj, "#{API::SETTLEMENT_PATH}")
11
+ end
12
+ end
@@ -0,0 +1,75 @@
1
+ require 'paystack/objects/base.rb'
2
+
3
+ class PaystackTransfers < PaystackBaseObject
4
+
5
+ def initializeTransfer(args={})
6
+ return PaystackTransfers.initializeTransfer(@paystack, args)
7
+ end
8
+
9
+ def list(page=1)
10
+ return PaystackTransfers.list(@paystack, page)
11
+ end
12
+
13
+ def get(transfer_code)
14
+ return PaystackTransfers.get(@paystack, transfer_code)
15
+ end
16
+
17
+ def authorize(data={})
18
+ return PaystackTransfers.authorize(@paystack,data)
19
+ end
20
+
21
+ def resendOtp(data={})
22
+ return PaystackTransfers.resendOtp(@paystack,data)
23
+ end
24
+
25
+ def disableOtp
26
+ return PaystackTransfers.disableOtp(@paystack)
27
+ end
28
+
29
+ def confirmDisableOtp(data={})
30
+ return PaystackTransfers.confirmDisableOTP(@paystack,otp)
31
+ end
32
+
33
+ def enableOtp
34
+ return PaystackTransfers.enableOtp(@paystack)
35
+ end
36
+
37
+ # => Public Static methods
38
+
39
+ def PaystackTransfers.initializeTransfer(paystackObj, args)
40
+ initPostRequest(paystackObj,"#{API::TRANSFER_PATH}", args,true)
41
+ end
42
+
43
+ def PaystackTransfers.list(paystackObj, page=1)
44
+ initGetRequest(paystackObj, "#{API::TRANSFER_PATH}?page=#{page}")
45
+ end
46
+
47
+ def PaystackTransfers.get(paystackObj, transfer_code)
48
+ initGetRequest(paystackObj, "#{API::TRANSFER_PATH}/#{transfer_code}")
49
+ end
50
+
51
+ def PaystackTransfers.authorize(paystackObj, data={})
52
+ initPostRequest(paystackObj, "#{API::TRANSFER_PATH}/finalize_transfer/",data)
53
+ end
54
+
55
+ def PaystackTransfers.resendOtp(paystackObj, data={})
56
+ initPostRequest(paystackObj, "#{API::TRANSFER_PATH}/resend_otp",data)
57
+ end
58
+
59
+ def PaystackTransfers.disableOtp(paystackObj)
60
+ initPostRequest(paystackObj, "#{API::TRANSFER_PATH}/disable_otp")
61
+ end
62
+
63
+ def PaystackTransfers.confirmDisableOtp(paystackObj, data={})
64
+ initPostRequest(paystackObj, "#{API::TRANSFER_PATH}/disable_otp_finalize",data)
65
+ end
66
+
67
+ def PaystackTransfers.enableOtp(paystackObj)
68
+ initPostRequest(paystackObj, "#{API::TRANSFER_PATH}/enable_otp")
69
+ end
70
+
71
+
72
+
73
+
74
+
75
+ end
@@ -1,3 +1,3 @@
1
- module Paystack
2
- VERSION = "0.1.6"
1
+ class Paystack
2
+ VERSION = "0.1.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paystack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Ikoro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-01 00:00:00.000000000 Z
11
+ date: 2017-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,14 +86,18 @@ files:
86
86
  - lib/paystack.rb
87
87
  - lib/paystack/error.rb
88
88
  - lib/paystack/modules/api.rb
89
+ - lib/paystack/objects/balance.rb
89
90
  - lib/paystack/objects/banks.rb
90
91
  - lib/paystack/objects/base.rb
91
92
  - lib/paystack/objects/card.rb
92
93
  - lib/paystack/objects/customers.rb
93
94
  - lib/paystack/objects/plans.rb
95
+ - lib/paystack/objects/recipients.rb
96
+ - lib/paystack/objects/settlements.rb
94
97
  - lib/paystack/objects/subaccounts.rb
95
98
  - lib/paystack/objects/subscriptions.rb
96
99
  - lib/paystack/objects/transactions.rb
100
+ - lib/paystack/objects/transfers.rb
97
101
  - lib/paystack/utils/utils.rb
98
102
  - lib/paystack/version.rb
99
103
  - paystack.gemspec
@@ -117,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
121
  version: '0'
118
122
  requirements: []
119
123
  rubyforge_project:
120
- rubygems_version: 2.6.6
124
+ rubygems_version: 2.6.11
121
125
  signing_key:
122
126
  specification_version: 4
123
127
  summary: PayStack.co gem for Ruby/Rails