k2-connect-ruby 3.0.0 → 4.0.0
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/.github/pull_request_template.md +31 -0
- data/.gitignore +2 -0
- data/Gemfile.lock +38 -5
- data/README.md +499 -198
- data/k2-connect-ruby.gemspec +39 -35
- data/lib/k2-connect-ruby/entity.rb +39 -9
- data/lib/k2-connect-ruby/http_client.rb +43 -0
- data/lib/k2-connect-ruby/k2_entity/k2_entity.rb +12 -11
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/destination/destination_request.rb +27 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/destination/external_bank_account.rb +32 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/destination/external_mpesa_wallet.rb +38 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/destination/external_paybill.rb +31 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/destination/external_till.rb +30 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/destination/merchant_bank_account.rb +27 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/destination/merchant_mpesa_wallet.rb +27 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/external_recipient/bank_account.rb +17 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/external_recipient/mobile_wallet.rb +24 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/external_recipient/paybill.rb +17 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/external_recipient/recipient_request.rb +32 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/external_recipient/till.rb +17 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/external_recipient.rb +54 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_stk.rb +14 -31
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/payment_link.rb +53 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/payment_links/payment_link_request.rb +43 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/reversal.rb +39 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/reversals/reversal_request.rb +39 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/send_money/send_money_request.rb +53 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/send_money.rb +73 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/stk_push/stk_push_request.rb +51 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/transfer_account/merchant_bank_account.rb +35 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/transfer_account/merchant_mpesa_wallet.rb +38 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/transfer_account/transfer_account_request.rb +25 -0
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/transfer_account.rb +49 -0
- data/lib/k2-connect-ruby/k2_entity/k2_polling.rb +16 -13
- data/lib/k2-connect-ruby/k2_entity/k2_subscribe.rb +16 -14
- data/lib/k2-connect-ruby/k2_entity/k2_token.rb +14 -39
- data/lib/k2-connect-ruby/k2_entity/polling/polling_request.rb +48 -0
- data/lib/k2-connect-ruby/k2_entity/webhook/webhook_subscription_request.rb +66 -0
- data/lib/k2-connect-ruby/k2_errors.rb +15 -71
- data/lib/k2-connect-ruby/k2_services/base_service.rb +25 -0
- data/lib/k2-connect-ruby/k2_services/k2_client.rb +7 -6
- data/lib/k2-connect-ruby/k2_services/payloads/daraja_webhooks.rb +43 -0
- data/lib/k2-connect-ruby/k2_services/payloads/k2_transaction.rb +20 -18
- data/lib/k2-connect-ruby/k2_services/payloads/k2_webhooks.rb +36 -32
- data/lib/k2-connect-ruby/k2_services/payloads/transactions/incoming_payment.rb +31 -29
- data/lib/k2-connect-ruby/k2_services/payloads/transactions/outgoing_payment.rb +3 -1
- data/lib/k2-connect-ruby/k2_services/payloads/transactions/payment_link.rb +38 -0
- data/lib/k2-connect-ruby/k2_services/payloads/transactions/reversal.rb +35 -0
- data/lib/k2-connect-ruby/k2_services/payloads/transactions/send_money_payment.rb +25 -0
- data/lib/k2-connect-ruby/k2_services/payloads/transactions/transfer.rb +2 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/b2b_transaction_received.rb +9 -3
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/b2b_transaction_reversed.rb +22 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/buygoods_transaction_received.rb +6 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/buygoods_transaction_reversed.rb +4 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/card_transaction_received.rb +18 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/card_transaction_reversed.rb +17 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/card_transaction_voided.rb +17 -0
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/customer_created.rb +11 -7
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/transfer_webhook.rb +50 -0
- data/lib/k2-connect-ruby/k2_services/send_introspect_token_request_service.rb +56 -0
- data/lib/k2-connect-ruby/k2_services/send_k2_connect_get_request_service.rb +42 -0
- data/lib/k2-connect-ruby/k2_services/send_k2_connect_post_request_service.rb +44 -0
- data/lib/k2-connect-ruby/k2_services/send_request_token_request_service.rb +55 -0
- data/lib/k2-connect-ruby/k2_services/send_revoke_token_request_service.rb +56 -0
- data/lib/k2-connect-ruby/k2_services/send_token_info_request_service.rb +44 -0
- data/lib/k2-connect-ruby/k2_services.rb +29 -0
- data/lib/k2-connect-ruby/k2_utilities/config/k2_config.rb +18 -26
- data/lib/k2-connect-ruby/k2_utilities/config/k2_config.yml +9 -10
- data/lib/k2-connect-ruby/k2_utilities/k2_authenticator.rb +12 -5
- data/lib/k2-connect-ruby/k2_utilities/k2_connection.rb +0 -48
- data/lib/k2-connect-ruby/k2_utilities/k2_connection_helper.rb +21 -0
- data/lib/k2-connect-ruby/k2_utilities/k2_process_result.rb +16 -15
- data/lib/k2-connect-ruby/k2_utilities/k2_process_webhook.rb +34 -21
- data/lib/k2-connect-ruby/k2_utilities/k2_url_parse.rb +3 -1
- data/lib/k2-connect-ruby/k2_utilities/phone_number_validator.rb +15 -0
- data/lib/k2-connect-ruby/k2_utilities.rb +9 -20
- data/lib/k2-connect-ruby/version.rb +1 -1
- data/lib/k2-connect-ruby.rb +14 -13
- metadata +119 -36
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb +0 -98
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_settlement.rb +0 -48
- data/lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_transfer.rb +0 -44
- data/lib/k2-connect-ruby/k2_entity/k2_notification.rb +0 -40
- data/lib/k2-connect-ruby/k2_services/payload_process.rb +0 -19
- data/lib/k2-connect-ruby/k2_services/payloads/webhooks/settlement_webhook.rb +0 -44
- data/lib/k2-connect-ruby/k2_utilities/k2_validation.rb +0 -128
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module K2ConnectRuby
|
|
2
4
|
module K2Services
|
|
3
5
|
module Payloads
|
|
4
6
|
module Transactions
|
|
5
7
|
class OutgoingPayment < OutgoingTransaction
|
|
6
8
|
attr_reader :transaction_reference,
|
|
7
|
-
|
|
9
|
+
:destination
|
|
8
10
|
|
|
9
11
|
def initialize(payload)
|
|
10
12
|
super
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
module Payloads
|
|
6
|
+
module Transactions
|
|
7
|
+
# Parsed attributes of payment link result callback
|
|
8
|
+
class PaymentLink
|
|
9
|
+
include ActiveModel::Validations
|
|
10
|
+
|
|
11
|
+
attr_reader :id, :type, :status, :created_at, :till_name, :currency, :amount, :payment_reference, :note,
|
|
12
|
+
:payment_link, :request_errors, :metadata, :callback_url, :links_self
|
|
13
|
+
|
|
14
|
+
validates :id, :type, :status, :created_at, :till_name, :currency, :amount, :callback_url, :links_self,
|
|
15
|
+
presence: :true
|
|
16
|
+
validates :type, comparison: { equal_to: "payment_link" }
|
|
17
|
+
|
|
18
|
+
def initialize(payload)
|
|
19
|
+
@id = payload.dig("data", "id")
|
|
20
|
+
@type = payload.dig("data", "type")
|
|
21
|
+
@status = payload.dig("data", "attributes", "status")
|
|
22
|
+
@created_at = payload.dig("data", "attributes", "created_at")
|
|
23
|
+
@till_name = payload.dig("data", "attributes", "till_name")
|
|
24
|
+
@currency = payload.dig("data", "attributes", "currency")
|
|
25
|
+
@amount = payload.dig("data", "attributes", "amount")
|
|
26
|
+
@payment_reference = payload.dig("data", "attributes", "payment_reference")
|
|
27
|
+
@note = payload.dig("data", "attributes", "note")
|
|
28
|
+
@payment_link = payload.dig("data", "attributes", "payment_link")&.deep_symbolize_keys
|
|
29
|
+
@metadata = payload.dig("data", "attributes", "metadata")&.deep_symbolize_keys
|
|
30
|
+
@request_errors = payload.dig("data", "attributes", "errors")
|
|
31
|
+
@callback_url = payload.dig("data", "attributes", "_links", "callback_url")
|
|
32
|
+
@links_self = payload.dig("data", "attributes", "_links", "self")
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
module Payloads
|
|
6
|
+
module Transactions
|
|
7
|
+
# Parsed attributes of reversal result callback
|
|
8
|
+
class Reversal
|
|
9
|
+
include ActiveModel::Validations
|
|
10
|
+
|
|
11
|
+
attr_reader :id, :type, :transaction_reference, :reason, :status, :created_at, :reversal_bulk_payment,
|
|
12
|
+
:request_errors, :metadata, :callback_url, :links_self
|
|
13
|
+
|
|
14
|
+
validates :id, :type, :transaction_reference, :reason, :status, :created_at, :callback_url, :links_self,
|
|
15
|
+
presence: true
|
|
16
|
+
validates :type, comparison: { equal_to: "reversal" }
|
|
17
|
+
|
|
18
|
+
def initialize(payload)
|
|
19
|
+
@id = payload.dig("data", "id")
|
|
20
|
+
@type = payload.dig("data", "type")
|
|
21
|
+
@transaction_reference = payload.dig("data", "attributes", "transaction_reference")
|
|
22
|
+
@status = payload.dig("data", "attributes", "status")
|
|
23
|
+
@created_at = payload.dig("data", "attributes", "created_at")
|
|
24
|
+
@reason = payload.dig("data", "attributes", "reason")
|
|
25
|
+
@reversal_bulk_payment = payload.dig("data", "attributes", "reversal_bulk_payment")&.deep_symbolize_keys
|
|
26
|
+
@metadata = payload.dig("data", "attributes", "metadata")&.deep_symbolize_keys
|
|
27
|
+
@request_errors = payload.dig("data", "attributes", "errors")
|
|
28
|
+
@links_self = payload.dig("data", "attributes", "_links", "self")
|
|
29
|
+
@callback_url = payload.dig("data", "attributes", "_links", "callback_url")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
module Payloads
|
|
6
|
+
module Transactions
|
|
7
|
+
class SendMoneyPayment < OutgoingTransaction
|
|
8
|
+
attr_reader :transaction_reference,
|
|
9
|
+
:destination
|
|
10
|
+
|
|
11
|
+
def initialize(payload)
|
|
12
|
+
super
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def valid_payment_type
|
|
18
|
+
raise ArgumentError, "Wrong Payment Type" unless @type.eql?("send_money")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module K2ConnectRuby
|
|
2
4
|
module K2Services
|
|
3
5
|
module Payloads
|
|
4
6
|
module Webhooks
|
|
5
7
|
class B2bTransactionReceived < K2CommonEvents
|
|
8
|
+
include ActiveModel::Validations
|
|
9
|
+
|
|
10
|
+
validates :topic, comparison: { equal_to: "b2b_transaction_received" }
|
|
11
|
+
|
|
6
12
|
attr_reader :sending_till,
|
|
7
|
-
|
|
13
|
+
:till_number
|
|
8
14
|
|
|
9
15
|
def initialize(payload)
|
|
10
16
|
super
|
|
11
|
-
@till_number = payload.dig(
|
|
12
|
-
@sending_till = payload.dig(
|
|
17
|
+
@till_number = payload.dig("event", "resource", "till_number")
|
|
18
|
+
@sending_till = payload.dig("event", "resource", "sending_till")
|
|
13
19
|
end
|
|
14
20
|
end
|
|
15
21
|
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module K2ConnectRuby
|
|
2
|
+
module K2Services
|
|
3
|
+
module Payloads
|
|
4
|
+
module Webhooks
|
|
5
|
+
class B2bTransactionReversed < K2CommonEvents
|
|
6
|
+
include ActiveModel::Validations
|
|
7
|
+
|
|
8
|
+
validates :topic, comparison: { equal_to: "b2b_transaction_reversed" }
|
|
9
|
+
|
|
10
|
+
attr_reader :sending_till,
|
|
11
|
+
:till_number
|
|
12
|
+
|
|
13
|
+
def initialize(payload)
|
|
14
|
+
super
|
|
15
|
+
@till_number = payload.dig("event", "resource", "till_number")
|
|
16
|
+
@sending_till = payload.dig("event", "resource", "sending_till")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module K2ConnectRuby
|
|
2
4
|
module K2Services
|
|
3
5
|
module Payloads
|
|
4
6
|
module Webhooks
|
|
5
7
|
class BuygoodsTransactionReceived < Buygoods
|
|
8
|
+
include ActiveModel::Validations
|
|
9
|
+
|
|
10
|
+
validates :topic, comparison: { equal_to: "buygoods_transaction_received" }
|
|
11
|
+
|
|
6
12
|
def initialize(payload)
|
|
7
13
|
super
|
|
8
14
|
end
|
|
@@ -3,6 +3,10 @@ module K2ConnectRuby
|
|
|
3
3
|
module Payloads
|
|
4
4
|
module Webhooks
|
|
5
5
|
class BuygoodsTransactionReversed < Buygoods
|
|
6
|
+
include ActiveModel::Validations
|
|
7
|
+
|
|
8
|
+
validates :topic, comparison: { equal_to: "buygoods_transaction_reversed" }
|
|
9
|
+
|
|
6
10
|
def initialize(payload)
|
|
7
11
|
super
|
|
8
12
|
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module K2ConnectRuby
|
|
2
|
+
module K2Services
|
|
3
|
+
module Payloads
|
|
4
|
+
module Webhooks
|
|
5
|
+
class CardTransactionReceived < K2CommonEvents
|
|
6
|
+
attr_reader :settled, :till_number, :customer_cc_number
|
|
7
|
+
|
|
8
|
+
def initialize(payload)
|
|
9
|
+
super
|
|
10
|
+
@customer_cc_number = payload.dig("event", "resource", "customer_cc_number")
|
|
11
|
+
@till_number = payload.dig("event", "resource", "till_number")
|
|
12
|
+
@settled = payload.dig("event", "resource", "settled")
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module K2ConnectRuby
|
|
2
|
+
module K2Services
|
|
3
|
+
module Payloads
|
|
4
|
+
module Webhooks
|
|
5
|
+
class CardTransactionReversed < K2CommonEvents
|
|
6
|
+
attr_reader :till_number, :customer_cc_number
|
|
7
|
+
|
|
8
|
+
def initialize(payload)
|
|
9
|
+
super
|
|
10
|
+
@customer_cc_number = payload.dig("event", "resource", "customer_cc_number")
|
|
11
|
+
@till_number = payload.dig("event", "resource", "till_number")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module K2ConnectRuby
|
|
2
|
+
module K2Services
|
|
3
|
+
module Payloads
|
|
4
|
+
module Webhooks
|
|
5
|
+
class CardTransactionVoided < K2CommonEvents
|
|
6
|
+
attr_reader :till_number, :customer_cc_number
|
|
7
|
+
|
|
8
|
+
def initialize(payload)
|
|
9
|
+
super
|
|
10
|
+
@customer_cc_number = payload.dig("event", "resource", "customer_cc_number")
|
|
11
|
+
@till_number = payload.dig("event", "resource", "till_number")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -3,17 +3,21 @@ module K2ConnectRuby
|
|
|
3
3
|
module Payloads
|
|
4
4
|
module Webhooks
|
|
5
5
|
class CustomerCreated < K2Webhooks
|
|
6
|
+
include ActiveModel::Validations
|
|
7
|
+
|
|
8
|
+
validates :topic, comparison: { equal_to: "customer_created" }
|
|
9
|
+
|
|
6
10
|
attr_reader :resource_first_name,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
:resource_middle_name,
|
|
12
|
+
:resource_last_name,
|
|
13
|
+
:resource_phone_number
|
|
10
14
|
|
|
11
15
|
def initialize(payload)
|
|
12
16
|
super
|
|
13
|
-
@resource_first_name = payload.dig(
|
|
14
|
-
@resource_middle_name = payload.dig(
|
|
15
|
-
@resource_last_name = payload.dig(
|
|
16
|
-
@resource_phone_number = payload.dig(
|
|
17
|
+
@resource_first_name = payload.dig("event", "resource", "first_name")
|
|
18
|
+
@resource_middle_name = payload.dig("event", "resource", "middle_name")
|
|
19
|
+
@resource_last_name = payload.dig("event", "resource", "last_name")
|
|
20
|
+
@resource_phone_number = payload.dig("event", "resource", "phone_number")
|
|
17
21
|
end
|
|
18
22
|
end
|
|
19
23
|
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
module Payloads
|
|
6
|
+
module Webhooks
|
|
7
|
+
class TransferWebhook < K2CommonEvents
|
|
8
|
+
include ActiveModel::Validations
|
|
9
|
+
|
|
10
|
+
validates :topic, comparison: { equal_to: "settlement_transfer_completed" }
|
|
11
|
+
|
|
12
|
+
attr_reader :disbursements,
|
|
13
|
+
:destination_type,
|
|
14
|
+
:destination_network,
|
|
15
|
+
:destination_reference,
|
|
16
|
+
:destination_last_name,
|
|
17
|
+
:destination_first_name,
|
|
18
|
+
:destination_account_name,
|
|
19
|
+
:destination_phone_number,
|
|
20
|
+
:destination_account_number,
|
|
21
|
+
:destination_bank_branch_ref,
|
|
22
|
+
:destination_transfer_method
|
|
23
|
+
|
|
24
|
+
def initialize(payload)
|
|
25
|
+
super
|
|
26
|
+
# Destination
|
|
27
|
+
@disbursements = payload.dig("event", "resource", "disbursements")
|
|
28
|
+
@destination_type = payload.dig("event", "resource", "destination", "type")
|
|
29
|
+
@destination_reference = payload.dig("event", "resource", "destination", "resource", "reference")
|
|
30
|
+
destination_assets(payload)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def destination_assets(payload)
|
|
34
|
+
if @destination_type.eql?("Mobile Wallet")
|
|
35
|
+
@destination_network = payload.dig("event", "resource", "destination", "resource", "network")
|
|
36
|
+
@destination_last_name = payload.dig("event", "resource", "destination", "resource", "last_name")
|
|
37
|
+
@destination_first_name = payload.dig("event", "resource", "destination", "resource", "first_name")
|
|
38
|
+
@destination_phone_number = payload.dig("event", "resource", "destination", "resource", "phone_number")
|
|
39
|
+
elsif @destination_type.eql?("Bank Account")
|
|
40
|
+
@destination_account_name = payload.dig("event", "resource", "destination", "resource", "account_name")
|
|
41
|
+
@destination_account_number = payload.dig("event", "resource", "destination", "resource", "account_number")
|
|
42
|
+
@destination_bank_branch_ref = payload.dig("event", "resource", "destination", "resource", "bank_branch_ref")
|
|
43
|
+
@destination_transfer_method = payload.dig("event", "resource", "destination", "resource", "transfer_method")
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
class SendIntrospectTokenRequestService < BaseService
|
|
6
|
+
include K2ConnectRuby::K2Utilities::K2ConnectionHelper
|
|
7
|
+
|
|
8
|
+
attr_reader :client_id, :client_secret, :access_token
|
|
9
|
+
|
|
10
|
+
def initialize(client_id, client_secret, access_token)
|
|
11
|
+
super()
|
|
12
|
+
@client_id = client_id
|
|
13
|
+
@client_secret = client_secret
|
|
14
|
+
@access_token = access_token
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def execute
|
|
18
|
+
send_request
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def send_request
|
|
24
|
+
response = K2ConnectRuby::HttpClient.post(
|
|
25
|
+
endpoint,
|
|
26
|
+
payload: params.to_json,
|
|
27
|
+
headers: request_headers
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
CallResult.success(
|
|
31
|
+
{
|
|
32
|
+
response_code: response.code,
|
|
33
|
+
response_headers: response_headers(response.headers),
|
|
34
|
+
response_body: response_body(response.body),
|
|
35
|
+
},
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def endpoint
|
|
40
|
+
K2ConnectRuby::K2Utilities::Config::K2Config.endpoint("introspect_token")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def params
|
|
44
|
+
{
|
|
45
|
+
client_id: client_id,
|
|
46
|
+
client_secret: client_secret,
|
|
47
|
+
token: access_token,
|
|
48
|
+
}
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def request_headers
|
|
52
|
+
{ "Content-Type" => "application/json", "Accept" => "application/json", "User-Agent" => "Kopokopo-Ruby-SDK" }
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
class SendK2ConnectGetRequestService < BaseService
|
|
6
|
+
include K2ConnectRuby::K2Utilities::K2ConnectionHelper
|
|
7
|
+
|
|
8
|
+
attr_reader :access_token, :endpoint, :request_body
|
|
9
|
+
|
|
10
|
+
def initialize(access_token, endpoint)
|
|
11
|
+
super()
|
|
12
|
+
@access_token = access_token
|
|
13
|
+
@endpoint = endpoint
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def execute
|
|
17
|
+
send_request
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def send_request
|
|
23
|
+
response = K2ConnectRuby::HttpClient.get(
|
|
24
|
+
endpoint,
|
|
25
|
+
headers: request_headers
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
CallResult.success(
|
|
29
|
+
{
|
|
30
|
+
response_code: response.code,
|
|
31
|
+
response_headers: response_headers(response.headers),
|
|
32
|
+
response_body: response_body(response.body),
|
|
33
|
+
},
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def request_headers
|
|
38
|
+
{ "Content-Type" => "application/json", "Accept" => "application/json", Authorization: "Bearer #{access_token}", "User-Agent" => "Kopokopo-Ruby-SDK" }
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
class SendK2ConnectPostRequestService < BaseService
|
|
6
|
+
include K2ConnectRuby::K2Utilities::K2ConnectionHelper
|
|
7
|
+
|
|
8
|
+
attr_reader :access_token, :endpoint, :request_body
|
|
9
|
+
|
|
10
|
+
def initialize(access_token, endpoint, request_body)
|
|
11
|
+
super()
|
|
12
|
+
@access_token = access_token
|
|
13
|
+
@endpoint = endpoint
|
|
14
|
+
@request_body = request_body
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def execute
|
|
18
|
+
send_request
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def send_request
|
|
24
|
+
response = K2ConnectRuby::HttpClient.post(
|
|
25
|
+
endpoint,
|
|
26
|
+
payload: request_body.to_json,
|
|
27
|
+
headers: request_headers
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
CallResult.success(
|
|
31
|
+
{
|
|
32
|
+
response_code: response.code,
|
|
33
|
+
response_headers: response_headers(response.headers),
|
|
34
|
+
response_body: response_body(response.body),
|
|
35
|
+
},
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def request_headers
|
|
40
|
+
{ "Content-Type" => "application/json", "Accept" => "application/json", Authorization: "Bearer #{access_token}", "User-Agent" => "Kopokopo-Ruby-SDK" }
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
class SendRequestTokenRequestService < BaseService
|
|
6
|
+
include K2ConnectRuby::K2Utilities::K2ConnectionHelper
|
|
7
|
+
|
|
8
|
+
attr_reader :client_id, :client_secret
|
|
9
|
+
|
|
10
|
+
def initialize(client_id, client_secret)
|
|
11
|
+
super()
|
|
12
|
+
@client_id = client_id
|
|
13
|
+
@client_secret = client_secret
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def execute
|
|
17
|
+
send_request
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def send_request
|
|
23
|
+
response = K2ConnectRuby::HttpClient.post(
|
|
24
|
+
endpoint,
|
|
25
|
+
payload: request_body_json,
|
|
26
|
+
headers: request_headers
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
CallResult.success(
|
|
30
|
+
{
|
|
31
|
+
response_code: response.code,
|
|
32
|
+
response_headers: response_headers(response.headers),
|
|
33
|
+
response_body: response_body(response.body),
|
|
34
|
+
},
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def endpoint
|
|
39
|
+
K2ConnectRuby::K2Utilities::Config::K2Config.endpoint("oauth_token")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def request_headers
|
|
43
|
+
{ "Content-Type" => "application/json", "Accept" => "application/json", "User-Agent" => "Kopokopo-Ruby-SDK" }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def request_body_json
|
|
47
|
+
{
|
|
48
|
+
client_id: client_id,
|
|
49
|
+
client_secret: client_secret,
|
|
50
|
+
grant_type: "client_credentials",
|
|
51
|
+
}.to_json
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
class SendRevokeTokenRequestService < BaseService
|
|
6
|
+
include K2ConnectRuby::K2Utilities::K2ConnectionHelper
|
|
7
|
+
|
|
8
|
+
attr_reader :client_id, :client_secret, :access_token
|
|
9
|
+
|
|
10
|
+
def initialize(client_id, client_secret, access_token)
|
|
11
|
+
super()
|
|
12
|
+
@client_id = client_id
|
|
13
|
+
@client_secret = client_secret
|
|
14
|
+
@access_token = access_token
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def execute
|
|
18
|
+
send_request
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def send_request
|
|
24
|
+
response = K2ConnectRuby::HttpClient.post(
|
|
25
|
+
endpoint,
|
|
26
|
+
payload: params.to_json,
|
|
27
|
+
headers: request_headers
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
CallResult.success(
|
|
31
|
+
{
|
|
32
|
+
response_code: response.code,
|
|
33
|
+
response_headers: response_headers(response.headers),
|
|
34
|
+
response_body: response_body(response.body),
|
|
35
|
+
},
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def endpoint
|
|
40
|
+
K2ConnectRuby::K2Utilities::Config::K2Config.endpoint("revoke_token")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def params
|
|
44
|
+
{
|
|
45
|
+
client_id: client_id,
|
|
46
|
+
client_secret: client_secret,
|
|
47
|
+
token: access_token,
|
|
48
|
+
}
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def request_headers
|
|
52
|
+
{ "Content-Type" => "application/json", "Accept" => "application/json", "User-Agent" => "Kopokopo-Ruby-SDK" }
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module K2ConnectRuby
|
|
4
|
+
module K2Services
|
|
5
|
+
class SendTokenInfoRequestService < BaseService
|
|
6
|
+
include K2ConnectRuby::K2Utilities::K2ConnectionHelper
|
|
7
|
+
|
|
8
|
+
attr_reader :access_token
|
|
9
|
+
|
|
10
|
+
def initialize(access_token)
|
|
11
|
+
super()
|
|
12
|
+
@access_token = access_token
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def execute
|
|
16
|
+
send_request
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def send_request
|
|
22
|
+
response = K2ConnectRuby::HttpClient.get(
|
|
23
|
+
endpoint,
|
|
24
|
+
headers: request_headers
|
|
25
|
+
)
|
|
26
|
+
CallResult.success(
|
|
27
|
+
{
|
|
28
|
+
response_code: response.code,
|
|
29
|
+
response_headers: response_headers(response.headers),
|
|
30
|
+
response_body: response_body(response.body),
|
|
31
|
+
},
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def endpoint
|
|
36
|
+
K2ConnectRuby::K2Utilities::Config::K2Config.endpoint("token_info")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def request_headers
|
|
40
|
+
{ "Content-Type" => "application/json", "Accept" => "application/json", "Authorization" => "Bearer #{access_token}", "User-Agent" => "Kopokopo-Ruby-SDK" }
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "k2-connect-ruby/k2_services/k2_client"
|
|
2
|
+
require "k2-connect-ruby/k2_services/base_service"
|
|
3
|
+
require "k2-connect-ruby/k2_services/send_k2_connect_get_request_service"
|
|
4
|
+
require "k2-connect-ruby/k2_services/send_k2_connect_post_request_service"
|
|
5
|
+
require "k2-connect-ruby/k2_services/send_request_token_request_service"
|
|
6
|
+
require "k2-connect-ruby/k2_services/send_revoke_token_request_service"
|
|
7
|
+
require "k2-connect-ruby/k2_services/send_introspect_token_request_service"
|
|
8
|
+
require "k2-connect-ruby/k2_services/send_token_info_request_service"
|
|
9
|
+
|
|
10
|
+
require "k2-connect-ruby/k2_services/payloads/k2_webhooks"
|
|
11
|
+
require "k2-connect-ruby/k2_services/payloads/webhooks/b2b_transaction_received"
|
|
12
|
+
require "k2-connect-ruby/k2_services/payloads/webhooks/b2b_transaction_reversed"
|
|
13
|
+
require "k2-connect-ruby/k2_services/payloads/webhooks/customer_created"
|
|
14
|
+
require "k2-connect-ruby/k2_services/payloads/webhooks/buygoods_transaction_received"
|
|
15
|
+
require "k2-connect-ruby/k2_services/payloads/webhooks/buygoods_transaction_reversed"
|
|
16
|
+
require "k2-connect-ruby/k2_services/payloads/webhooks/transfer_webhook"
|
|
17
|
+
require "k2-connect-ruby/k2_services/payloads/daraja_webhooks"
|
|
18
|
+
|
|
19
|
+
require "k2-connect-ruby/k2_services/payloads/k2_transaction"
|
|
20
|
+
require "k2-connect-ruby/k2_services/payloads/transactions/transfer"
|
|
21
|
+
require "k2-connect-ruby/k2_services/payloads/transactions/incoming_payment"
|
|
22
|
+
require "k2-connect-ruby/k2_services/payloads/transactions/outgoing_payment"
|
|
23
|
+
require "k2-connect-ruby/k2_services/payloads/transactions/send_money_payment"
|
|
24
|
+
require "k2-connect-ruby/k2_services/payloads/transactions/reversal"
|
|
25
|
+
require "k2-connect-ruby/k2_services/payloads/transactions/payment_link"
|
|
26
|
+
|
|
27
|
+
module K2ConnectRuby
|
|
28
|
+
module K2Services; end
|
|
29
|
+
end
|