paystack 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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