flutterwave_sdk 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +32 -0
- data/.rspec +3 -0
- data/.travis.yml +6 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +34 -0
- data/LICENSE.txt +21 -0
- data/README.md +1282 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/flutterwave_sdk.gemspec +28 -0
- data/lib/flutterwave_sdk/error.rb +15 -0
- data/lib/flutterwave_sdk/flutterwave_modules/base_endpoints.rb +5 -0
- data/lib/flutterwave_sdk/flutterwave_modules/util.rb +26 -0
- data/lib/flutterwave_sdk/flutterwave_objects/account_payment.rb +55 -0
- data/lib/flutterwave_sdk/flutterwave_objects/bank.rb +17 -0
- data/lib/flutterwave_sdk/flutterwave_objects/bank_transfer.rb +30 -0
- data/lib/flutterwave_sdk/flutterwave_objects/base/base.rb +109 -0
- data/lib/flutterwave_sdk/flutterwave_objects/base/card_base.rb +49 -0
- data/lib/flutterwave_sdk/flutterwave_objects/beneficiaries.rb +34 -0
- data/lib/flutterwave_sdk/flutterwave_objects/bills.rb +86 -0
- data/lib/flutterwave_sdk/flutterwave_objects/card.rb +55 -0
- data/lib/flutterwave_sdk/flutterwave_objects/misc.rb +37 -0
- data/lib/flutterwave_sdk/flutterwave_objects/mobile_money.rb +49 -0
- data/lib/flutterwave_sdk/flutterwave_objects/otp.rb +22 -0
- data/lib/flutterwave_sdk/flutterwave_objects/payment_plan.rb +42 -0
- data/lib/flutterwave_sdk/flutterwave_objects/preauthorise.rb +26 -0
- data/lib/flutterwave_sdk/flutterwave_objects/qr.rb +28 -0
- data/lib/flutterwave_sdk/flutterwave_objects/settlements.rb +17 -0
- data/lib/flutterwave_sdk/flutterwave_objects/subaccount.rb +40 -0
- data/lib/flutterwave_sdk/flutterwave_objects/subscriptions.rb +25 -0
- data/lib/flutterwave_sdk/flutterwave_objects/tokenized_charge.rb +61 -0
- data/lib/flutterwave_sdk/flutterwave_objects/transactions.rb +47 -0
- data/lib/flutterwave_sdk/flutterwave_objects/transfer.rb +46 -0
- data/lib/flutterwave_sdk/flutterwave_objects/ussd_payment.rb +27 -0
- data/lib/flutterwave_sdk/flutterwave_objects/virtual_account_number.rb +34 -0
- data/lib/flutterwave_sdk/flutterwave_objects/virtual_card.rb +66 -0
- data/lib/flutterwave_sdk/version.rb +3 -0
- data/lib/flutterwave_sdk.rb +126 -0
- 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}¤cy=#{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,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
|
+
|