flutterwave_sdk 0.1.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.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +32 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/Gemfile.lock +34 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +1282 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/flutterwave_sdk.gemspec +28 -0
  14. data/lib/flutterwave_sdk/error.rb +15 -0
  15. data/lib/flutterwave_sdk/flutterwave_modules/base_endpoints.rb +5 -0
  16. data/lib/flutterwave_sdk/flutterwave_modules/util.rb +26 -0
  17. data/lib/flutterwave_sdk/flutterwave_objects/account_payment.rb +55 -0
  18. data/lib/flutterwave_sdk/flutterwave_objects/bank.rb +17 -0
  19. data/lib/flutterwave_sdk/flutterwave_objects/bank_transfer.rb +30 -0
  20. data/lib/flutterwave_sdk/flutterwave_objects/base/base.rb +109 -0
  21. data/lib/flutterwave_sdk/flutterwave_objects/base/card_base.rb +49 -0
  22. data/lib/flutterwave_sdk/flutterwave_objects/beneficiaries.rb +34 -0
  23. data/lib/flutterwave_sdk/flutterwave_objects/bills.rb +86 -0
  24. data/lib/flutterwave_sdk/flutterwave_objects/card.rb +55 -0
  25. data/lib/flutterwave_sdk/flutterwave_objects/misc.rb +37 -0
  26. data/lib/flutterwave_sdk/flutterwave_objects/mobile_money.rb +49 -0
  27. data/lib/flutterwave_sdk/flutterwave_objects/otp.rb +22 -0
  28. data/lib/flutterwave_sdk/flutterwave_objects/payment_plan.rb +42 -0
  29. data/lib/flutterwave_sdk/flutterwave_objects/preauthorise.rb +26 -0
  30. data/lib/flutterwave_sdk/flutterwave_objects/qr.rb +28 -0
  31. data/lib/flutterwave_sdk/flutterwave_objects/settlements.rb +17 -0
  32. data/lib/flutterwave_sdk/flutterwave_objects/subaccount.rb +40 -0
  33. data/lib/flutterwave_sdk/flutterwave_objects/subscriptions.rb +25 -0
  34. data/lib/flutterwave_sdk/flutterwave_objects/tokenized_charge.rb +61 -0
  35. data/lib/flutterwave_sdk/flutterwave_objects/transactions.rb +47 -0
  36. data/lib/flutterwave_sdk/flutterwave_objects/transfer.rb +46 -0
  37. data/lib/flutterwave_sdk/flutterwave_objects/ussd_payment.rb +27 -0
  38. data/lib/flutterwave_sdk/flutterwave_objects/virtual_account_number.rb +34 -0
  39. data/lib/flutterwave_sdk/flutterwave_objects/virtual_card.rb +66 -0
  40. data/lib/flutterwave_sdk/version.rb +3 -0
  41. data/lib/flutterwave_sdk.rb +126 -0
  42. metadata +88 -0
@@ -0,0 +1,42 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class PaymentPlan < Base
5
+
6
+ # method to create a payment plan
7
+ def create_payment_plan(data)
8
+ base_url = flutterwave_object.base_url
9
+ required_parameters = ["amount", "name", "interval"]
10
+ check_passed_parameters(required_parameters, data)
11
+ payload = data.to_json
12
+ response = post_request("#{base_url}/payment-plans", payload)
13
+ return response
14
+ end
15
+
16
+ def get_payment_plans
17
+ base_url = flutterwave_object.base_url
18
+ response = get_request("#{base_url}/payment-plans")
19
+ return response
20
+ end
21
+
22
+ def get_a_payment_plan(id)
23
+ base_url = flutterwave_object.base_url
24
+ response = get_request("#{base_url}/payment-plans/#{id}")
25
+ return response
26
+ end
27
+
28
+ def update_payment_plan(id, data)
29
+ base_url = flutterwave_object.base_url
30
+ payload = data.to_json
31
+ response = put_request("#{base_url}/payment-plans/#{id}",payload)
32
+ return response
33
+ end
34
+
35
+ def cancel_payment_plan(id)
36
+ base_url = flutterwave_object.base_url
37
+ payload = {}
38
+ payload = payload.to_json
39
+ response = put_request("#{base_url}/payment-plans/#{id}/cancel",payload)
40
+ return response
41
+ end
42
+ end
@@ -0,0 +1,26 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class Preauth < Base
5
+
6
+ def capture_preauth(flw_ref, data)
7
+ base_url = flutterwave_object.base_url
8
+ payload = data.to_json
9
+ response = post_request("#{base_url}/charges/#{flw_ref}/capture", payload)
10
+ return response
11
+ end
12
+
13
+ def void_preauth(flw_ref)
14
+ base_url = flutterwave_object.base_url
15
+ payload = payload.to_json
16
+ response = post_request("#{base_url}/charges/#{flw_ref}/void", payload)
17
+ return response
18
+ end
19
+
20
+ def refund_preauth(flw_ref, data)
21
+ base_url = flutterwave_object.base_url
22
+ payload = data.to_json
23
+ response = post_request("#{base_url}/charges/#{flw_ref}/refund", payload)
24
+ return response
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class QR < Base
5
+ def initiate_charge(data)
6
+ base_url = flutterwave_object.base_url
7
+ # only update the payload with the transaction reference if it isn't already added to the payload
8
+ if !data.key?("tx_ref")
9
+ data.merge!({"tx_ref" => Util.transaction_reference_generator})
10
+ end
11
+ # check the currency to determine the type and the required parameters
12
+ required_parameters = ["amount", "fullname", "email", "phone_number", "tx_ref", "currency"]
13
+
14
+ check_passed_parameters(required_parameters, data)
15
+ type = "qr"
16
+ payload = data.to_json
17
+
18
+ response = post_request("#{base_url}#{BASE_ENDPOINTS::CHARGE_ENDPOINT}?type=#{type}", payload)
19
+ return response
20
+ end
21
+
22
+ # mthod to verify transaction
23
+ def verify_charge(id)
24
+ base_url = flutterwave_object.base_url
25
+ response = get_request("#{base_url}/transactions/#{id}/verify")
26
+ return response
27
+ end
28
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class Settlements < Base
5
+
6
+ def get_settlements
7
+ base_url = flutterwave_object.base_url
8
+ response = get_request("#{base_url}/settlements")
9
+ return response
10
+ end
11
+
12
+ def get_settlement(id)
13
+ base_url = flutterwave_object.base_url
14
+ response = get_request("#{base_url}/settlements/#{id}")
15
+ return response
16
+ end
17
+ end
@@ -0,0 +1,40 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class Subaccount < Base
5
+ def create_subaccount(data)
6
+ base_url = flutterwave_object.base_url
7
+ required_parameters = ["account_bank", "account_number", "business_name", "business_contact", "country", "split_value", "business_mobile"]
8
+ check_passed_parameters(required_parameters, data)
9
+ payload = data.to_json
10
+ response = post_request("#{base_url}/subaccounts", payload)
11
+ return response
12
+ end
13
+
14
+ def fetch_subaccounts
15
+ base_url = flutterwave_object.base_url
16
+ response = get_request("#{base_url}/subaccounts")
17
+ return response
18
+ end
19
+
20
+ def fetch_subaccount(id)
21
+ base_url = flutterwave_object.base_url
22
+ response = get_request("#{base_url}/subaccounts/#{id}")
23
+ return response
24
+ end
25
+
26
+ def update_subaccount(id, data)
27
+ base_url = flutterwave_object.base_url
28
+ payload = data.to_json
29
+ response = put_request("#{base_url}/subaccounts/#{id}", payload)
30
+ return response
31
+ end
32
+
33
+ def delete_subaccount(id)
34
+ base_url = flutterwave_object.base_url
35
+ payload = {}
36
+ payload = payload.to_json
37
+ response = delete_request("#{base_url}/subaccounts/#{id}", payload)
38
+ return response
39
+ end
40
+ end
@@ -0,0 +1,25 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class Subscriptions < Base
5
+
6
+ def get_all_subscriptions
7
+ base_url = flutterwave_object.base_url
8
+ response = get_request("#{base_url}/subscriptions")
9
+ return response
10
+ end
11
+
12
+ def cancel_subscription(id)
13
+ base_url = flutterwave_object.base_url
14
+ payload = {}
15
+ payload = payload.to_json
16
+ response = put_request("#{base_url}/subscriptions/#{id}/cancel", payload)
17
+ end
18
+
19
+ def activate_subscription(id)
20
+ base_url = flutterwave_object.base_url
21
+ payload = {}
22
+ payload = payload.to_json
23
+ response = put_request("#{base_url}/subscriptions/#{id}/activate", payload)
24
+ end
25
+ end
@@ -0,0 +1,61 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class TokenizedCharge < Base
5
+
6
+ # method to charge with token
7
+ def tokenized_charge(data)
8
+ base_url = flutterwave_object.base_url
9
+ # only update the payload with the transaction reference if it isn't already added to the payload
10
+ if !data.key?("tx_ref")
11
+ data.merge!({"tx_ref" => Util.transaction_reference_generator})
12
+ end
13
+
14
+ required_parameters = [ "token", "currency", "country", "amount", "tx_ref", "email"]
15
+ check_passed_parameters(required_parameters, data)
16
+
17
+ response = post_request("#{base_url}/tokenized-charges", data.to_json)
18
+
19
+ return response
20
+
21
+ end
22
+
23
+ def verify_tokenized_charge(id)
24
+ base_url = flutterwave_object.base_url
25
+ response = get_request("#{base_url}/transactions/#{id}/verify")
26
+ return response
27
+ end
28
+
29
+ # method for updating token detials
30
+ def update_token(data, token)
31
+ base_url = flutterwave_object.base_url
32
+ response = put_request("#{base_url}/tokens/#{token}", data.to_json)
33
+ return response
34
+ end
35
+
36
+ # method to create bulk tokenized charges
37
+ def bulk_tokenized_charge(data)
38
+ base_url = flutterwave_object.base_url
39
+ required_parameters = ["title", "retry_strategy", "bulk_data"]
40
+ check_passed_parameters(required_parameters, data)
41
+
42
+ payload = data.to_json
43
+
44
+ response = post_request("#{base_url}/bulk-tokenized-charges/", payload)
45
+ return response
46
+ end
47
+
48
+ #method to get status of a bulk tokenized charges
49
+ def bulk_tokenized_charge_status(bulk_id)
50
+ base_url = flutterwave_object.base_url
51
+ response = get_request("#{base_url}/bulk-tokenized-charges/#{bulk_id}")
52
+ return response
53
+ end
54
+
55
+ #method to get all the bulk tokenized transactions
56
+ def bulk_tokenized_charge_transactions(bulk_id)
57
+ base_url = flutterwave_object.base_url
58
+ response = get_request("#{base_url}/bulk-tokenized-charges/#{bulk_id}/transactions")
59
+ return response
60
+ end
61
+ end
@@ -0,0 +1,47 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class Transactions < Base
5
+ def transaction_fee(currency, amount)
6
+ base_url = flutterwave_object.base_url
7
+ required_parameters = ["amount", "currency"]
8
+ check_passed_parameters(required_parameters, data)
9
+ response = get_request("#{base_url}/transactions/fee?&amount=#{amount}&currency=#{currency}")
10
+ return response
11
+ end
12
+
13
+ def get_transactions
14
+ base_url = flutterwave_object.base_url
15
+ response = get_request("#{base_url}/transactions")
16
+ return response
17
+
18
+ end
19
+
20
+ def verify_transaction(id)
21
+ base_url = flutterwave_object.base_url
22
+ response = get_request("#{base_url}/transactions/#{id}/verify")
23
+ return response
24
+ end
25
+
26
+ def transactions_events(id)
27
+ base_url = flutterwave_object.base_url
28
+ response = get_request("#{base_url}/transactions/#{id}/events")
29
+ return response
30
+ end
31
+
32
+ def initiate_a_refund(data, id)
33
+ base_url = flutterwave_object.base_url
34
+ payload = data.to_json
35
+ response = post_request("#{base_url}/transactions/#{id}/refund", payload)
36
+ return response
37
+ end
38
+
39
+ #resend transaction webhook
40
+
41
+ def resend_transaction_webhook(payload)
42
+ base_url = flutterwave_object.base_url
43
+ response = post_request("#{base_url}/transactions/resend-hook", payload.to_json)
44
+ return response
45
+ end
46
+
47
+ end
@@ -0,0 +1,46 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class Transfer < Base
5
+
6
+ def transfer_fee(currency,amount)
7
+ base_url = flutterwave_object.base_url
8
+ response = get_request("#{base_url}/transfers/fee?currency=#{currency}&amount=#{amount}")
9
+ return response
10
+ end
11
+
12
+ def initiate_transfer(data)
13
+ base_url = flutterwave_object.base_url
14
+ # only update the payload with the transaction reference if it isn't already added to the payload
15
+ if !data.key?("tx_ref")
16
+ data.merge!({"tx_ref" => Util.transaction_reference_generator})
17
+ end
18
+
19
+ required_parameters = ["amount", "currency", "account_bank", "account_number"]
20
+ check_passed_parameters(required_parameters, data)
21
+ payload = data.to_json
22
+ response = post_request("#{base_url}/transfers", payload)
23
+ return response
24
+ end
25
+
26
+ def initiate_bulk_transfer(data)
27
+ base_url = flutterwave_object.base_url
28
+ required_parameters = ["title", "bulk_data"]
29
+ check_passed_parameters(required_parameters, data)
30
+ payload = data.to_json
31
+ response = post_request("#{base_url}/bulk-transfers", payload)
32
+ return response
33
+ end
34
+
35
+ def get_all_transfers
36
+ base_url = flutterwave_object.base_url
37
+ response = get_request("#{base_url}/transfers")
38
+ return response
39
+ end
40
+
41
+ def get_a_transfer(id)
42
+ base_url = flutterwave_object.base_url
43
+ response = get_request("#{base_url}/transfers/#{id}")
44
+ return response
45
+ end
46
+ end
@@ -0,0 +1,27 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class USSD < Base
5
+ def initiate_charge(data)
6
+ base_url = flutterwave_object.base_url
7
+ # only update the payload with the transaction reference if it isn't already added to the payload
8
+ if !data.key?("tx_ref")
9
+ data.merge!({"tx_ref" => Util.transaction_reference_generator})
10
+ end
11
+ # check the currency to determine the type and the required parameters
12
+ required_parameters = ["amount", "account_bank", "email", "phone_number", "tx_ref", "currency"]
13
+
14
+ check_passed_parameters(required_parameters, data)
15
+ type = "ussd"
16
+ payload = data.to_json
17
+ response = post_request("#{base_url}#{BASE_ENDPOINTS::CHARGE_ENDPOINT}?type=#{type}", payload)
18
+ return response
19
+ end
20
+
21
+ # mthod to verify transaction
22
+ def verify_charge(id)
23
+ base_url = flutterwave_object.base_url
24
+ response = get_request("#{base_url}/transactions/#{id}/verify")
25
+ return response
26
+ end
27
+ end
@@ -0,0 +1,34 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class VirtualAccountNumber < Base
5
+
6
+ def create_virtual_account_number(data)
7
+ base_url = flutterwave_object.base_url
8
+ required_parameters = ["email", "duration", "frequency", "tx_ref"]
9
+ check_passed_parameters(required_parameters, data)
10
+ payload = data.to_json
11
+ response = post_request("#{base_url}/virtual-account-numbers", payload)
12
+ return response
13
+ end
14
+
15
+ def create_bulk_virtual_account_number(data)
16
+ base_url = flutterwave_object.base_url
17
+ payload = data.to_json
18
+ response = post_request("#{base_url}/bulk-virtual-account-numbers", payload)
19
+ return response
20
+ end
21
+
22
+ def get_bulk_virtual_account_number(batch_id)
23
+ base_url = flutterwave_object.base_url
24
+ response = get_request("#{base_url}/bulk-virtual-account-numbers/#{batch_id}")
25
+ return response
26
+ end
27
+
28
+ def get_virtual_account_number(order_ref)
29
+ base_url = flutterwave_object.base_url
30
+ response = get_request("#{base_url}/virtual-account-numbers/#{order_ref}")
31
+ return response
32
+ end
33
+
34
+ end
@@ -0,0 +1,66 @@
1
+ require_relative "base/base.rb"
2
+ require 'json'
3
+
4
+ class VirtualCard < Base
5
+
6
+ def create_virtual_card(data)
7
+ base_url = flutterwave_object.base_url
8
+ required_parameters = ["currency", "amount", "billing_name"]
9
+ check_passed_parameters(required_parameters, data)
10
+ payload = data.to_json
11
+ response = post_request("#{base_url}/virtual-cards", payload)
12
+ return response
13
+ end
14
+
15
+ def get_all_virtual_cards
16
+ base_url = flutterwave_object.base_url
17
+ response = get_request("#{base_url}/virtual-cards")
18
+ return response
19
+ end
20
+
21
+ def get_virtual_card(id)
22
+ base_url = flutterwave_object.base_url
23
+ response = get_request("#{base_url}/virtual-cards/#{id}")
24
+ return response
25
+ end
26
+
27
+ def fund_virtual_card(id, data)
28
+ base_url = flutterwave_object.base_url
29
+ required_parameters = [ "amount"]
30
+ check_passed_parameters(required_parameters, data)
31
+ payload = data.to_json
32
+ response = post_request("#{base_url}/virtual-cards/#{id}/fund", payload)
33
+ return response
34
+ end
35
+
36
+ def terminate_virtual_card(id)
37
+ base_url = flutterwave_object.base_url
38
+ payload = {}
39
+ payload = payload.to_json
40
+ response = put_request("#{base_url}/virtual-cards/#{id}/terminate", payload)
41
+ return response
42
+ end
43
+
44
+ def get_virtual_card_transactions(id, from, to, index, size)
45
+ base_url = flutterwave_object.base_url
46
+ response = get_request("#{base_url}/virtual-cards/#{id}/transactions", {"from" => from, "to" => to, "index" => index, "size" => size})
47
+ return response
48
+ end
49
+
50
+ def withdraw_from_virtual_card(id, data)
51
+ base_url = flutterwave_object.base_url
52
+ required_parameters = [ "amount"]
53
+ check_passed_parameters(required_parameters, data)
54
+ payload = data.to_json
55
+ response = post_request("#{base_url}/virtual-cards/#{id}/withdraw", payload)
56
+ return response
57
+ end
58
+
59
+ def block_unblock_virtual_card(id, status_action)
60
+ base_url = flutterwave_object.base_url
61
+ payload = {}
62
+ payload = payload.to_json
63
+ response = put_request("#{base_url}/virtual-cards/#{id}/status/#{status_action}", payload)
64
+ return response
65
+ end
66
+ end
@@ -0,0 +1,3 @@
1
+ module FlutterwaveSdk
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,126 @@
1
+ require_relative "flutterwave_sdk/version"
2
+ require_relative "flutterwave_sdk/flutterwave_modules/base_endpoints"
3
+ require_relative "flutterwave_sdk/flutterwave_objects/base/base"
4
+ require_relative "flutterwave_sdk/flutterwave_modules/util"
5
+ require_relative "flutterwave_sdk/flutterwave_objects/card"
6
+ require_relative "flutterwave_sdk/flutterwave_objects/mobile_money"
7
+ require_relative "flutterwave_sdk/flutterwave_objects/account_payment"
8
+ require_relative "flutterwave_sdk/flutterwave_objects/bank_transfer"
9
+ require_relative "flutterwave_sdk/flutterwave_objects/ussd_payment"
10
+ require_relative "flutterwave_sdk/flutterwave_objects/qr"
11
+ require_relative "flutterwave_sdk/flutterwave_objects/tokenized_charge"
12
+ require_relative "flutterwave_sdk/flutterwave_objects/transactions"
13
+ require_relative "flutterwave_sdk/flutterwave_objects/transfer"
14
+ require_relative "flutterwave_sdk/flutterwave_objects/bank"
15
+ require_relative "flutterwave_sdk/flutterwave_objects/misc"
16
+ require_relative "flutterwave_sdk/flutterwave_objects/payment_plan"
17
+ require_relative "flutterwave_sdk/flutterwave_objects/beneficiaries"
18
+ require_relative "flutterwave_sdk/flutterwave_objects/subscriptions"
19
+ require_relative "flutterwave_sdk/flutterwave_objects/virtual_card"
20
+ require_relative "flutterwave_sdk/flutterwave_objects/subaccount"
21
+ require_relative "flutterwave_sdk/flutterwave_objects/settlements"
22
+ require_relative "flutterwave_sdk/flutterwave_objects/otp"
23
+ require_relative "flutterwave_sdk/flutterwave_objects/virtual_account_number"
24
+ require_relative "flutterwave_sdk/flutterwave_objects/bills"
25
+ require_relative "flutterwave_sdk/flutterwave_objects/preauthorise"
26
+ require_relative "flutterwave_sdk/error"
27
+
28
+ class Flutterwave
29
+
30
+ attr_accessor :public_key, :secret_key, :encryption_key, :production, :url
31
+
32
+ # method to initialize flutterwave object
33
+ def initialize(public_key=nil, secret_key=nil, encryption_key=nil, production=false)
34
+ @public_key = public_key
35
+ @secret_key = secret_key
36
+ @production = production
37
+ @encryption_key = encryption_key
38
+ flutterwave_sandbox_url = BASE_ENDPOINTS::FLUTTERWAVE_SANDBOX_URL
39
+ flutterwave_live_url = BASE_ENDPOINTS::FLUTTERWAVE_LIVE_URL
40
+
41
+ # set rave url to sandbox or live if we are in production or development
42
+ if production == false
43
+ @url = flutterwave_sandbox_url
44
+ else
45
+ @url = flutterwave_live_url
46
+ end
47
+
48
+ def base_url
49
+ return url
50
+ end
51
+
52
+ # check if we set our public , secret and encryption keys to the environment variable
53
+ if (public_key.nil?)
54
+ @public_key = ENV['FLUTTERWAVE_PUBLIC_KEY']
55
+ else
56
+ @public_key = public_key
57
+ end
58
+
59
+ if (secret_key.nil?)
60
+ @secret_key = ENV['FLUTTERWAVE_SECRET_KEY']
61
+ else
62
+ @secret_key = secret_key
63
+ end
64
+
65
+ if (encryption_key.nil?)
66
+ @encryption_key = ENV['FLUTTERWAVE_ENCRYPTION_KEY']
67
+ else
68
+ @encryption_key = encryption_key
69
+ end
70
+ warn "Warning: To ensure your rave account api keys are safe, It is best to always set your keys in the environment variable"
71
+
72
+ # raise this error if no public key is passed
73
+ unless !@public_key.nil?
74
+ raise FlutterwaveBadKeyError, "No public key supplied and couldn't find any in environment variables. Make sure to set public key as an environment variable FLUTTERWAVE_PUBLIC_KEY"
75
+ end
76
+ # raise this error if invalid public key is passed
77
+ unless @public_key[0..7] == 'FLWPUBK-' || @public_key[0..11] == 'FLWPUBK_TEST'
78
+ raise FlutterwaveBadKeyError, "Invalid public key #{@public_key}"
79
+ end
80
+
81
+ # raise this error if no secret key is passed
82
+ unless !@secret_key.nil?
83
+ raise FlutterwaveBadKeyError, "No secret key supplied and couldn't find any in environment variables. Make sure to set secret key as an environment variable FLUTTERWAVE_SECRET_KEY"
84
+ end
85
+ # raise this error if invalid secret key is passed
86
+ unless @secret_key[0..7] == 'FLWSECK-' || @secret_key[0..11] == 'FLWSECK_TEST'
87
+ raise FlutterwaveBadKeyError, "Invalid secret key #{@secret_key}"
88
+ end
89
+
90
+ # raise this error if no encryption key is passed
91
+ unless !@encryption_key.nil?
92
+ raise FlutterwaveBadKeyError, "No encryption key supplied and couldn't find any in environment variables. Make sure to set encryption key as an environment variable FLUTTERWAVE_ENCRYPTION_KEY"
93
+ end
94
+ end
95
+
96
+ #tracking activities
97
+ def flutterwave_tracking
98
+ endpoint = "https://kgelfdz7mf.execute-api.us-east-1.amazonaws.com/staging/sendevent"
99
+ public_key = @public_key
100
+
101
+
102
+ payload = {
103
+ "PBFPubKey" => public_key,
104
+ "language" => "Ruby",
105
+ "version" => "1.0",
106
+ "title" => "test message",
107
+ "message" => "test is done"
108
+ }
109
+ data = payload.to_json
110
+
111
+ response = HTTParty.post(endpoint, {
112
+ body: data,
113
+ headers: {
114
+ 'Content-Type' => 'application/json'
115
+ }
116
+ })
117
+
118
+ unless (response.code == 200 || response.code == 201)
119
+ raise RaveServerError.new(response), "HTTP Code #{response.code}: #{response.body}"
120
+ end
121
+ return response
122
+ end
123
+
124
+ end
125
+
126
+