paystack_sdk 0.0.6 → 0.0.8
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 +4 -4
- data/CHANGELOG.md +31 -0
- data/lib/paystack_sdk/client.rb +45 -0
- data/lib/paystack_sdk/resources/banks.rb +21 -0
- data/lib/paystack_sdk/resources/transfer_recipients.rb +47 -0
- data/lib/paystack_sdk/resources/transfers.rb +47 -0
- data/lib/paystack_sdk/response.rb +4 -0
- data/lib/paystack_sdk/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1161ca83326adeace91da47a17f4c078cee7f6073b4efda0d0d0e707b9744928
|
4
|
+
data.tar.gz: 44a2b6e56897e8e3f020705f2b836f6a6172599f43b1c976144a2cab9165616d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59fc459f0ca4b103c4815c6523d6a6f6b7bf8088ef391c3d980b829f512aab9e66081796e2713d93d09cfeadb73c6069101ca91ce3b993ccf47389e0d8404df4
|
7
|
+
data.tar.gz: c4cc838ad71d8a8860b037096db5cf3c8cc55ed73a735eb405b4e81bd065a935de1529aa7e31876c64901c3f8fe973c9b2e7294924c7fd36881668a14297056a
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,36 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [0.0.8] - 2025-06-26
|
4
|
+
|
5
|
+
### Added
|
6
|
+
|
7
|
+
- Banks resource with support for listing banks and currency validation
|
8
|
+
- Regression tests for Banks resource, including validation for allowed currencies
|
9
|
+
- Registered `banks` resource in the main client for easy access
|
10
|
+
|
11
|
+
### Improved
|
12
|
+
|
13
|
+
- Validation for allowed currency values in Banks resource for safer API usage
|
14
|
+
|
15
|
+
## [0.0.7] - 2025-06-25
|
16
|
+
|
17
|
+
### Added
|
18
|
+
|
19
|
+
- Transfer Recipients resource with full CRUD operations (create, list, fetch, update, delete)
|
20
|
+
- Transfers resource with full API support (create/initiate, list, fetch, finalize, verify)
|
21
|
+
- All resource methods now use `handle_response` for consistent response handling
|
22
|
+
- Regression tests for Transfer Recipients and Transfers resources, ensuring response wrapping and validation
|
23
|
+
|
24
|
+
### Changed
|
25
|
+
|
26
|
+
- Registered `transfer_recipients` and `transfers` resources in the main client for easy access
|
27
|
+
- Updated specs to verify that all resource methods wrap responses using `PaystackSdk::Response`
|
28
|
+
|
29
|
+
### Improved
|
30
|
+
|
31
|
+
- Enhanced test coverage for new resources and response handling
|
32
|
+
- Improved code consistency by enforcing response wrapping and validation patterns across all new resources
|
33
|
+
|
3
34
|
## [0.0.6] - 2025-06-10
|
4
35
|
|
5
36
|
### Added
|
data/lib/paystack_sdk/client.rb
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
require_relative "resources/transactions"
|
4
4
|
require_relative "resources/customers"
|
5
|
+
require_relative "resources/transfer_recipients"
|
6
|
+
require_relative "resources/transfers"
|
7
|
+
require_relative "resources/banks"
|
5
8
|
require_relative "utils/connection_utils"
|
6
9
|
|
7
10
|
module PaystackSdk
|
@@ -61,5 +64,47 @@ module PaystackSdk
|
|
61
64
|
def customers
|
62
65
|
@customers ||= Resources::Customers.new(@connection)
|
63
66
|
end
|
67
|
+
|
68
|
+
# Provides access to the `TransferRecipients` resource.
|
69
|
+
#
|
70
|
+
# @return [PaystackSdk::Resources::TransferRecipients] An instance of the
|
71
|
+
# `TransferRecipients` resource.
|
72
|
+
#
|
73
|
+
# @example
|
74
|
+
# ```ruby
|
75
|
+
# recipients = client.transfer_recipients
|
76
|
+
# response = recipients.create(params)
|
77
|
+
# ```
|
78
|
+
def transfer_recipients
|
79
|
+
@transfer_recipients ||= Resources::TransferRecipients.new(@connection)
|
80
|
+
end
|
81
|
+
|
82
|
+
# Provides access to the `Transfers` resource.
|
83
|
+
#
|
84
|
+
# @return [PaystackSdk::Resources::Transfers] An instance of the
|
85
|
+
# `Transfers` resource.
|
86
|
+
#
|
87
|
+
# @example
|
88
|
+
# ```ruby
|
89
|
+
# transfers = client.transfers
|
90
|
+
# response = transfers.create(params)
|
91
|
+
# ```
|
92
|
+
def transfers
|
93
|
+
@transfers ||= Resources::Transfers.new(@connection)
|
94
|
+
end
|
95
|
+
|
96
|
+
# Provides access to the `Banks` resource.
|
97
|
+
#
|
98
|
+
# @return [PaystackSdk::Resources::Banks] An instance of the
|
99
|
+
# `Banks` resource.
|
100
|
+
#
|
101
|
+
# @example
|
102
|
+
# ```ruby
|
103
|
+
# banks = client.banks
|
104
|
+
# response = banks.list
|
105
|
+
# ```
|
106
|
+
def banks
|
107
|
+
@banks ||= Resources::Banks.new(@connection)
|
108
|
+
end
|
64
109
|
end
|
65
110
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "../validations"
|
2
|
+
|
3
|
+
module PaystackSdk
|
4
|
+
module Resources
|
5
|
+
class Banks < Base
|
6
|
+
# List banks
|
7
|
+
# @see https://paystack.com/docs/api/bank/#list
|
8
|
+
def list(query = {})
|
9
|
+
if query.key?(:currency)
|
10
|
+
validate_allowed_values!(
|
11
|
+
value: query[:currency],
|
12
|
+
name: "currency",
|
13
|
+
allowed_values: %w[NGN GHS ZAR KES USD]
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
handle_response(@connection.get("/bank", query))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative "../validations"
|
2
|
+
|
3
|
+
module PaystackSdk
|
4
|
+
module Resources
|
5
|
+
class TransferRecipients < Base
|
6
|
+
# Create a transfer recipient
|
7
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#create
|
8
|
+
def create(params)
|
9
|
+
validate_hash!(input: params, name: "TransferRecipient params")
|
10
|
+
validate_required_params!(
|
11
|
+
payload: params,
|
12
|
+
required_params: %i[type name account_number bank_code],
|
13
|
+
operation_name: "Create Transfer Recipient"
|
14
|
+
)
|
15
|
+
handle_response(@connection.post("/transferrecipient", params))
|
16
|
+
end
|
17
|
+
|
18
|
+
# List transfer recipients
|
19
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#list
|
20
|
+
def list(query = {})
|
21
|
+
handle_response(@connection.get("/transferrecipient", query))
|
22
|
+
end
|
23
|
+
|
24
|
+
# Fetch a transfer recipient
|
25
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#fetch
|
26
|
+
def fetch(recipient_code:)
|
27
|
+
validate_presence!(value: recipient_code, name: "recipient_code")
|
28
|
+
handle_response(@connection.get("/transferrecipient/#{recipient_code}"))
|
29
|
+
end
|
30
|
+
|
31
|
+
# Update a transfer recipient
|
32
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#update
|
33
|
+
def update(recipient_code:, params:)
|
34
|
+
validate_presence!(value: recipient_code, name: "recipient_code")
|
35
|
+
validate_hash!(input: params, name: "Update TransferRecipient params")
|
36
|
+
handle_response(@connection.put("/transferrecipient/#{recipient_code}", params))
|
37
|
+
end
|
38
|
+
|
39
|
+
# Delete a transfer recipient
|
40
|
+
# @see https://paystack.com/docs/api/transfer-recipient/#delete
|
41
|
+
def delete(recipient_code:)
|
42
|
+
validate_presence!(value: recipient_code, name: "recipient_code")
|
43
|
+
handle_response(@connection.delete("/transferrecipient/#{recipient_code}"))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require_relative "../validations"
|
2
|
+
|
3
|
+
module PaystackSdk
|
4
|
+
module Resources
|
5
|
+
class Transfers < Base
|
6
|
+
# Create a transfer
|
7
|
+
# @see https://paystack.com/docs/api/transfer/#initiate
|
8
|
+
def create(params)
|
9
|
+
validate_hash!(input: params, name: "Transfer params")
|
10
|
+
validate_required_params!(
|
11
|
+
payload: params,
|
12
|
+
required_params: %i[source amount recipient],
|
13
|
+
operation_name: "Create Transfer"
|
14
|
+
)
|
15
|
+
handle_response(@connection.post("/transfer", params))
|
16
|
+
end
|
17
|
+
|
18
|
+
# List transfers
|
19
|
+
# @see https://paystack.com/docs/api/transfer/#list
|
20
|
+
def list(query = {})
|
21
|
+
handle_response(@connection.get("/transfer", query))
|
22
|
+
end
|
23
|
+
|
24
|
+
# Fetch a transfer
|
25
|
+
# @see https://paystack.com/docs/api/transfer/#fetch
|
26
|
+
def fetch(id:)
|
27
|
+
validate_presence!(value: id, name: "transfer id")
|
28
|
+
handle_response(@connection.get("/transfer/#{id}"))
|
29
|
+
end
|
30
|
+
|
31
|
+
# Finalize a transfer (OTP)
|
32
|
+
# @see https://paystack.com/docs/api/transfer/#finalize
|
33
|
+
def finalize(transfer_code:, otp:)
|
34
|
+
validate_presence!(value: transfer_code, name: "transfer_code")
|
35
|
+
validate_presence!(value: otp, name: "otp")
|
36
|
+
handle_response(@connection.post("/transfer/finalize_transfer", {transfer_code: transfer_code, otp: otp}))
|
37
|
+
end
|
38
|
+
|
39
|
+
# Verify a transfer
|
40
|
+
# @see https://paystack.com/docs/api/transfer/#verify
|
41
|
+
def verify(reference:)
|
42
|
+
validate_presence!(value: reference, name: "reference")
|
43
|
+
handle_response(@connection.get("/transfer/verify/#{reference}"))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -51,6 +51,9 @@ module PaystackSdk
|
|
51
51
|
# @return [String, nil] API message from the response
|
52
52
|
attr_reader :api_message
|
53
53
|
|
54
|
+
# @return [String, nil] API message from the response, if available
|
55
|
+
attr_reader :message
|
56
|
+
|
54
57
|
# @return [Hash, Array, Object] The underlying data
|
55
58
|
attr_reader :raw_data
|
56
59
|
|
@@ -70,6 +73,7 @@ module PaystackSdk
|
|
70
73
|
@status_code = response.status
|
71
74
|
@body = response.body
|
72
75
|
@api_message = extract_api_message(@body)
|
76
|
+
@message = @api_message
|
73
77
|
@raw_data = extract_data_from_body(@body)
|
74
78
|
|
75
79
|
case @status_code
|
data/lib/paystack_sdk/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paystack_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maxwell Nana Forson (theLazyProgrammer)
|
@@ -29,14 +29,14 @@ dependencies:
|
|
29
29
|
requirements:
|
30
30
|
- - "~>"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '3.
|
32
|
+
version: '3.13'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '3.
|
39
|
+
version: '3.13'
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: standard
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,9 +115,12 @@ files:
|
|
115
115
|
- Rakefile
|
116
116
|
- lib/paystack_sdk.rb
|
117
117
|
- lib/paystack_sdk/client.rb
|
118
|
+
- lib/paystack_sdk/resources/banks.rb
|
118
119
|
- lib/paystack_sdk/resources/base.rb
|
119
120
|
- lib/paystack_sdk/resources/customers.rb
|
120
121
|
- lib/paystack_sdk/resources/transactions.rb
|
122
|
+
- lib/paystack_sdk/resources/transfer_recipients.rb
|
123
|
+
- lib/paystack_sdk/resources/transfers.rb
|
121
124
|
- lib/paystack_sdk/response.rb
|
122
125
|
- lib/paystack_sdk/utils/connection_utils.rb
|
123
126
|
- lib/paystack_sdk/validations.rb
|