rave_ruby 0.1.1
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 +7 -0
- data/.gitignore +23 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +1743 -0
- data/Rakefile +2 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/rave_ruby/error.rb +48 -0
- data/lib/rave_ruby/rave_modules/base_endpoints.rb +21 -0
- data/lib/rave_ruby/rave_modules/util.rb +46 -0
- data/lib/rave_ruby/rave_objects/account.rb +68 -0
- data/lib/rave_ruby/rave_objects/base/base.rb +106 -0
- data/lib/rave_ruby/rave_objects/base/charge_base.rb +154 -0
- data/lib/rave_ruby/rave_objects/base/mobile_money_base.rb +44 -0
- data/lib/rave_ruby/rave_objects/base/mpesa_base.rb +41 -0
- data/lib/rave_ruby/rave_objects/base/payment_plan_base.rb +86 -0
- data/lib/rave_ruby/rave_objects/base/preauth_base.rb +84 -0
- data/lib/rave_ruby/rave_objects/base/sub_account_base.rb +34 -0
- data/lib/rave_ruby/rave_objects/base/subscription_base.rb +78 -0
- data/lib/rave_ruby/rave_objects/base/transfer_base.rb +80 -0
- data/lib/rave_ruby/rave_objects/base/ussd_base.rb +60 -0
- data/lib/rave_ruby/rave_objects/card.rb +91 -0
- data/lib/rave_ruby/rave_objects/list_banks.rb +18 -0
- data/lib/rave_ruby/rave_objects/mobile_money.rb +58 -0
- data/lib/rave_ruby/rave_objects/mpesa.rb +59 -0
- data/lib/rave_ruby/rave_objects/payment_plan.rb +61 -0
- data/lib/rave_ruby/rave_objects/preauth.rb +111 -0
- data/lib/rave_ruby/rave_objects/sub_account.rb +55 -0
- data/lib/rave_ruby/rave_objects/subscription.rb +51 -0
- data/lib/rave_ruby/rave_objects/transactions.rb +24 -0
- data/lib/rave_ruby/rave_objects/transfer.rb +79 -0
- data/lib/rave_ruby/rave_objects/uganda_mobile_money.rb +58 -0
- data/lib/rave_ruby/rave_objects/ussd.rb +59 -0
- data/lib/rave_ruby/version.rb +3 -0
- data/lib/rave_ruby.rb +74 -0
- data/rave_ruby.gemspec +46 -0
- metadata +144 -0
@@ -0,0 +1,111 @@
|
|
1
|
+
require_relative "base/preauth_base.rb"
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class Preauth < PreauthBase
|
5
|
+
|
6
|
+
# method to initiate preauth transaction
|
7
|
+
def initiate_charge(data)
|
8
|
+
|
9
|
+
base_url = rave_object.base_url
|
10
|
+
secret_key = rave_object.secret_key.dup
|
11
|
+
hashed_secret_key = get_hashed_key
|
12
|
+
public_key = rave_object.public_key
|
13
|
+
|
14
|
+
required_parameters = ["country", "amount", "currency", "email"]
|
15
|
+
check_passed_parameters(required_parameters, data)
|
16
|
+
|
17
|
+
|
18
|
+
# only update the payload with the transaction reference if it isn't already added to the payload
|
19
|
+
if !data.key?("txRef")
|
20
|
+
data.merge!({"txRef" => Util.transaction_reference_generator})
|
21
|
+
end
|
22
|
+
|
23
|
+
data.merge!({"PBFPubKey" => public_key, "charge_type" => "preauth"})
|
24
|
+
|
25
|
+
# only update the payload with the transaction reference if it isn't already added to the payload
|
26
|
+
if data.key?("token")
|
27
|
+
data.merge!({"SECKEY" => secret_key})
|
28
|
+
payload = data.to_json
|
29
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::PREAUTH_CHARGE_ENDPOINT}", payload)
|
30
|
+
return handle_charge_response(response)
|
31
|
+
else
|
32
|
+
encrypt_data = Util.encrypt(hashed_secret_key, data)
|
33
|
+
|
34
|
+
payload = {
|
35
|
+
"PBFPubKey" => public_key,
|
36
|
+
"client" => encrypt_data,
|
37
|
+
"alg" => "3DES-24"
|
38
|
+
}
|
39
|
+
|
40
|
+
payload = payload.to_json
|
41
|
+
|
42
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::CHARGE_ENDPOINT}", payload)
|
43
|
+
|
44
|
+
return handle_charge_response(response)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# method to capture transaction
|
49
|
+
def capture(flwRef, amount=nil)
|
50
|
+
base_url = rave_object.base_url
|
51
|
+
|
52
|
+
payload = {
|
53
|
+
"flwRef" => flwRef,
|
54
|
+
"SECKEY" => rave_object.secret_key.dup,
|
55
|
+
"amount" => amount
|
56
|
+
}
|
57
|
+
|
58
|
+
payload = payload.to_json
|
59
|
+
|
60
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::CAPTURE_ENDPOINT}", payload)
|
61
|
+
return handle_capture_response(response)
|
62
|
+
end
|
63
|
+
|
64
|
+
# method to refund a transaction
|
65
|
+
def refund(flwRef)
|
66
|
+
base_url = rave_object.base_url
|
67
|
+
|
68
|
+
payload = {
|
69
|
+
"ref" => flwRef,
|
70
|
+
"action" => "refund",
|
71
|
+
"SECKEY" => rave_object.secret_key.dup,
|
72
|
+
}
|
73
|
+
|
74
|
+
payload = payload.to_json
|
75
|
+
|
76
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::REFUND_VOID_ENDPOINT}", payload)
|
77
|
+
return handle_refund_void_response(response)
|
78
|
+
end
|
79
|
+
|
80
|
+
# method to void a transaction
|
81
|
+
def void(flwRef)
|
82
|
+
base_url = rave_object.base_url
|
83
|
+
|
84
|
+
payload = {
|
85
|
+
"ref" => flwRef,
|
86
|
+
"action" => "void",
|
87
|
+
"SECKEY" => rave_object.secret_key.dup,
|
88
|
+
}
|
89
|
+
|
90
|
+
payload = payload.to_json
|
91
|
+
|
92
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::REFUND_VOID_ENDPOINT}", payload)
|
93
|
+
return handle_refund_void_response(response)
|
94
|
+
end
|
95
|
+
|
96
|
+
# method to verify preauth transaction
|
97
|
+
def verify_preauth(txRef)
|
98
|
+
base_url = rave_object.base_url
|
99
|
+
|
100
|
+
payload = {
|
101
|
+
"txref" => txRef,
|
102
|
+
"SECKEY" => rave_object.secret_key.dup,
|
103
|
+
}
|
104
|
+
|
105
|
+
payload = payload.to_json
|
106
|
+
|
107
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::VERIFY_ENDPOINT}", payload)
|
108
|
+
return handle_verify_response(response)
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative "base/sub_account_base.rb"
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class SubAccount < SubAccountBase
|
5
|
+
|
6
|
+
# method to create subaccount
|
7
|
+
def create_subaccount(data)
|
8
|
+
base_url = rave_object.base_url
|
9
|
+
|
10
|
+
data.merge!({"seckey" => rave_object.secret_key.dup})
|
11
|
+
|
12
|
+
required_parameters = ["account_bank", "account_number", "business_name", "business_email", "business_contact", "business_contact_mobile", "business_mobile", "split_type", "split_value"]
|
13
|
+
check_passed_parameters(required_parameters, data)
|
14
|
+
|
15
|
+
payload = data.to_json
|
16
|
+
|
17
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::SUBACCOUNT_ENDPOINT}/create", payload)
|
18
|
+
|
19
|
+
return handle_create_response(response)
|
20
|
+
end
|
21
|
+
|
22
|
+
# method to list all subaccounts
|
23
|
+
def list_subaccounts
|
24
|
+
base_url = rave_object.base_url
|
25
|
+
|
26
|
+
response = get_request("#{base_url}#{BASE_ENDPOINTS::SUBACCOUNT_ENDPOINT}", {"seckey" => rave_object.secret_key.dup})
|
27
|
+
|
28
|
+
return handle_subaccount_response(response)
|
29
|
+
end
|
30
|
+
|
31
|
+
# method to fetch a subaccount
|
32
|
+
def fetch_subaccount(subaccount_id)
|
33
|
+
base_url = rave_object.base_url
|
34
|
+
|
35
|
+
response = get_request("#{base_url}#{BASE_ENDPOINTS::SUBACCOUNT_ENDPOINT}/get/#{subaccount_id}", {"seckey" => rave_object.secret_key.dup})
|
36
|
+
|
37
|
+
return handle_subaccount_response(response)
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
# method to delete a subaccount
|
42
|
+
def delete_subaccount(subaccount_id)
|
43
|
+
base_url = rave_object.base_url
|
44
|
+
|
45
|
+
payload = {
|
46
|
+
"seckey" => rave_object.secret_key.dup,
|
47
|
+
"id" => subaccount_id
|
48
|
+
}
|
49
|
+
|
50
|
+
payload = payload.to_json
|
51
|
+
|
52
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::SUBACCOUNT_ENDPOINT}/delete", payload)
|
53
|
+
return handle_subaccount_response(response)
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require_relative "base/subscription_base.rb"
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class Subscription < SubscriptionBase
|
5
|
+
|
6
|
+
#method to list subscriptions
|
7
|
+
|
8
|
+
def list_all_subscription
|
9
|
+
base_url = rave_object.base_url
|
10
|
+
response = get_request("#{base_url}#{BASE_ENDPOINTS::SUBSCRIPTIONS_ENDPOINT}/query",{"seckey" => rave_object.secret_key.dup})
|
11
|
+
return handle_list_all_subscription(response)
|
12
|
+
end
|
13
|
+
|
14
|
+
#method to fetch a subscription
|
15
|
+
|
16
|
+
def fetch_subscription(id, email)
|
17
|
+
base_url = rave_object.base_url
|
18
|
+
secret_key = rave_object.secret_key.dup
|
19
|
+
|
20
|
+
response = get_request("#{base_url}#{BASE_ENDPOINTS::SUBSCRIPTIONS_ENDPOINT}/query",{"seckey" => rave_object.secret_key.dup, "id" => id, "email": email})
|
21
|
+
return handle_fetch_subscription_response(response)
|
22
|
+
end
|
23
|
+
|
24
|
+
def cancel_subscription(id)
|
25
|
+
base_url = rave_object.base_url
|
26
|
+
secret_key = rave_object.secret_key.dup
|
27
|
+
|
28
|
+
payload = {
|
29
|
+
"seckey" => secret_key,
|
30
|
+
}
|
31
|
+
|
32
|
+
payload = payload.to_json
|
33
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::SUBSCRIPTIONS_ENDPOINT}/#{id}/cancel",payload)
|
34
|
+
return handle_cancel_response(response)
|
35
|
+
end
|
36
|
+
|
37
|
+
def activate_subscription(id)
|
38
|
+
|
39
|
+
base_url = rave_object.base_url
|
40
|
+
secret_key = rave_object.secret_key.dup
|
41
|
+
|
42
|
+
# data.merge!({"seckey" => secret_key.dup})
|
43
|
+
|
44
|
+
payload = {
|
45
|
+
"seckey" => secret_key,
|
46
|
+
}
|
47
|
+
payload = payload.to_json
|
48
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::SUBSCRIPTIONS_ENDPOINT}/#{id}/activate",payload)
|
49
|
+
return handle_activate_subscription_response(response)
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require './rave_ruby/objects/base'
|
2
|
+
|
3
|
+
class RaveTransactions < RaveBaseObject
|
4
|
+
|
5
|
+
#encrpt the data
|
6
|
+
|
7
|
+
def encrypt(key, data)
|
8
|
+
key = key
|
9
|
+
data = data
|
10
|
+
client_data = encrypt(key, data)
|
11
|
+
end
|
12
|
+
|
13
|
+
#Card payment
|
14
|
+
def chargeCards(client_data )
|
15
|
+
payload = {
|
16
|
+
"PBFPubKey" => self.PBFPubKey,
|
17
|
+
"client" => client_data,
|
18
|
+
"alg" => "3DES-24"
|
19
|
+
}
|
20
|
+
perform_post("#{BASE::CHARGE_ENDPOINT}/charge", payload)
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require_relative "base/transfer_base.rb"
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class Transfer < TransferBase
|
5
|
+
|
6
|
+
# method to initiate single transfer
|
7
|
+
def initiate_transfer(data)
|
8
|
+
base_url = rave_object.base_url
|
9
|
+
|
10
|
+
# only update the payload with the transaction reference if it isn't already added to the payload
|
11
|
+
if !data.key?("reference")
|
12
|
+
data.merge!({"reference" => Util.transaction_reference_generator})
|
13
|
+
end
|
14
|
+
|
15
|
+
data.merge!({"seckey" => rave_object.secret_key.dup})
|
16
|
+
|
17
|
+
required_parameters = ["amount", "currency"]
|
18
|
+
check_passed_parameters(required_parameters, data)
|
19
|
+
|
20
|
+
payload = data.to_json
|
21
|
+
|
22
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::TRANSFER_ENDPOINT}/create", payload)
|
23
|
+
|
24
|
+
return handle_initiate_response(response)
|
25
|
+
end
|
26
|
+
|
27
|
+
# method to perform bulk transfer request
|
28
|
+
def bulk_transfer(data)
|
29
|
+
base_url = rave_object.base_url
|
30
|
+
|
31
|
+
data.merge!({"seckey" => rave_object.secret_key.dup})
|
32
|
+
|
33
|
+
required_parameters = ["title", "bulk_data"]
|
34
|
+
check_passed_parameters(required_parameters, data)
|
35
|
+
|
36
|
+
payload = data.to_json
|
37
|
+
|
38
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::TRANSFER_ENDPOINT}/create_bulk", payload)
|
39
|
+
|
40
|
+
return handle_bulk_response(response)
|
41
|
+
end
|
42
|
+
|
43
|
+
# method to perform get fee request
|
44
|
+
def get_fee(currency)
|
45
|
+
base_url = rave_object.base_url
|
46
|
+
response = get_request("#{base_url}#{BASE_ENDPOINTS::GET_FEE_ENDPOINT}", {"seckey" => rave_object.secret_key.dup, "currency" => currency})
|
47
|
+
return handle_transfer_status(response)
|
48
|
+
end
|
49
|
+
|
50
|
+
# method to perform get balance request
|
51
|
+
def get_balance(currency)
|
52
|
+
base_url = rave_object.base_url
|
53
|
+
|
54
|
+
payload = {
|
55
|
+
"seckey" => rave_object.secret_key.dup,
|
56
|
+
"currency" => currency
|
57
|
+
}
|
58
|
+
|
59
|
+
payload = payload.to_json
|
60
|
+
|
61
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::GET_BALANCE_ENDPOINT}", payload)
|
62
|
+
return handle_balance_status(response)
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
# method to fetch a single transfer
|
67
|
+
def fetch(reference)
|
68
|
+
base_url = rave_object.base_url
|
69
|
+
response = get_request("#{base_url}#{BASE_ENDPOINTS::FETCH_ENDPOINT}", {"seckey" => rave_object.secret_key.dup, "reference" => reference})
|
70
|
+
return handle_fetch_status(response)
|
71
|
+
end
|
72
|
+
|
73
|
+
# method to fetch all transfers
|
74
|
+
def fetch_all_transfers
|
75
|
+
base_url = rave_object.base_url
|
76
|
+
response = get_request("#{base_url}#{BASE_ENDPOINTS::FETCH_ENDPOINT}", {"seckey" => rave_object.secret_key.dup})
|
77
|
+
return handle_fetch_status(response)
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require_relative "base/mobile_money_base.rb"
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class UgandaMobileMoney < MobileMoneyBase
|
5
|
+
# method to initiate uganda mobile money transaction
|
6
|
+
def initiate_charge(data)
|
7
|
+
|
8
|
+
base_url = rave_object.base_url
|
9
|
+
hashed_secret_key = get_hashed_key
|
10
|
+
public_key = rave_object.public_key
|
11
|
+
|
12
|
+
|
13
|
+
# only update the payload with the transaction reference if it isn't already added to the payload
|
14
|
+
if !data.key?("txRef")
|
15
|
+
data.merge!({"txRef" => Util.transaction_reference_generator})
|
16
|
+
end
|
17
|
+
|
18
|
+
# only update the payload with the order reference if it isn't already added to the payload
|
19
|
+
if !data.key?("orderRef")
|
20
|
+
data.merge!({"orderRef" => Util.transaction_reference_generator})
|
21
|
+
end
|
22
|
+
|
23
|
+
data.merge!({"PBFPubKey" => public_key, "payment_type" => "mobilemoneyuganda", "country" => "NG", "is_mobile_money_ug"=> 1, "currency" => "UGX"})
|
24
|
+
|
25
|
+
required_parameters = ["amount", "email", "phonenumber", "network", "IP"]
|
26
|
+
check_passed_parameters(required_parameters, data)
|
27
|
+
|
28
|
+
encrypt_data = Util.encrypt(hashed_secret_key, data)
|
29
|
+
|
30
|
+
payload = {
|
31
|
+
"PBFPubKey" => public_key,
|
32
|
+
"client" => encrypt_data,
|
33
|
+
"alg" => "3DES-24"
|
34
|
+
}
|
35
|
+
|
36
|
+
payload = payload.to_json
|
37
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::CHARGE_ENDPOINT}", payload)
|
38
|
+
|
39
|
+
return handle_charge_response(response)
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
# method to verify uganda mobile money transaction
|
44
|
+
def verify_charge(txref)
|
45
|
+
base_url = rave_object.base_url
|
46
|
+
|
47
|
+
payload = {
|
48
|
+
"txref" => txref,
|
49
|
+
"SECKEY" => rave_object.secret_key.dup,
|
50
|
+
}
|
51
|
+
|
52
|
+
payload = payload.to_json
|
53
|
+
|
54
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::VERIFY_ENDPOINT}", payload)
|
55
|
+
return handle_verify_response(response)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require_relative "base/ussd_base.rb"
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class Ussd < UssdBase
|
5
|
+
|
6
|
+
# method to initiate ussd transaction
|
7
|
+
def initiate_charge(data)
|
8
|
+
|
9
|
+
base_url = rave_object.base_url
|
10
|
+
hashed_secret_key = get_hashed_key
|
11
|
+
public_key = rave_object.public_key
|
12
|
+
|
13
|
+
|
14
|
+
# only update the payload with the transaction reference if it isn't already added to the payload
|
15
|
+
if !data.key?("txRef")
|
16
|
+
data.merge!({"txRef" => Util.transaction_reference_generator})
|
17
|
+
end
|
18
|
+
|
19
|
+
# only update the payload with the order reference if it isn't already added to the payload
|
20
|
+
if !data.key?("orderRef")
|
21
|
+
data.merge!({"orderRef" => Util.transaction_reference_generator})
|
22
|
+
end
|
23
|
+
|
24
|
+
data.merge!({"PBFPubKey" => public_key, "is_ussd" => "1", "payment_type" => "ussd"})
|
25
|
+
|
26
|
+
required_parameters = ["accountbank", "accountnumber", "amount", "email", "phonenumber", "IP"]
|
27
|
+
check_passed_parameters(required_parameters, data)
|
28
|
+
|
29
|
+
encrypt_data = Util.encrypt(hashed_secret_key, data)
|
30
|
+
|
31
|
+
payload = {
|
32
|
+
"PBFPubKey" => public_key,
|
33
|
+
"client" => encrypt_data,
|
34
|
+
"alg" => "3DES-24"
|
35
|
+
}
|
36
|
+
|
37
|
+
payload = payload.to_json
|
38
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::CHARGE_ENDPOINT}", payload)
|
39
|
+
|
40
|
+
return handle_charge_response(response, data)
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
# method to verify ussd transaction
|
45
|
+
def verify_charge(txref)
|
46
|
+
base_url = rave_object.base_url
|
47
|
+
|
48
|
+
payload = {
|
49
|
+
"txref" => txref,
|
50
|
+
"SECKEY" => rave_object.secret_key.dup,
|
51
|
+
}
|
52
|
+
|
53
|
+
payload = payload.to_json
|
54
|
+
|
55
|
+
response = post_request("#{base_url}#{BASE_ENDPOINTS::VERIFY_ENDPOINT}", payload)
|
56
|
+
return handle_verify_response(response)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
data/lib/rave_ruby.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
require_relative "rave_ruby/rave_modules/base_endpoints"
|
2
|
+
require_relative "rave_ruby/rave_objects/base/base"
|
3
|
+
require_relative "rave_ruby/rave_modules/util"
|
4
|
+
require_relative "rave_ruby/rave_objects/list_banks"
|
5
|
+
require_relative "rave_ruby/rave_objects/card"
|
6
|
+
require_relative "rave_ruby/rave_objects/account"
|
7
|
+
require_relative "rave_ruby/rave_objects/transfer"
|
8
|
+
require_relative "rave_ruby/rave_objects/mpesa"
|
9
|
+
require_relative "rave_ruby/rave_objects/mobile_money"
|
10
|
+
require_relative "rave_ruby/rave_objects/uganda_mobile_money"
|
11
|
+
require_relative "rave_ruby/rave_objects/payment_plan"
|
12
|
+
require_relative "rave_ruby/rave_objects/subscription"
|
13
|
+
require_relative "rave_ruby/rave_objects/ussd"
|
14
|
+
require_relative "rave_ruby/rave_objects/preauth"
|
15
|
+
require_relative "rave_ruby/rave_objects/sub_account"
|
16
|
+
require_relative 'rave_ruby/error'
|
17
|
+
|
18
|
+
|
19
|
+
class RaveRuby
|
20
|
+
|
21
|
+
attr_accessor :public_key, :secret_key, :production, :url
|
22
|
+
|
23
|
+
# method to initialize rave object
|
24
|
+
|
25
|
+
def initialize(public_key=nil, secret_key=nil, production=false)
|
26
|
+
|
27
|
+
@public_key = public_key
|
28
|
+
@secret_key = secret_key
|
29
|
+
@production = production
|
30
|
+
rave_sandbox_url = BASE_ENDPOINTS::RAVE_SANDBOX_URL
|
31
|
+
rave_live_url = BASE_ENDPOINTS::RAVE_LIVE_URL
|
32
|
+
|
33
|
+
# set rave url to sandbox or live if we are in production or development
|
34
|
+
if production == false
|
35
|
+
@url = rave_sandbox_url
|
36
|
+
else
|
37
|
+
@url = rave_live_url
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
# check if we set our public and secret keys to the environment variable
|
42
|
+
if (public_key.nil? && secret_key.nil?)
|
43
|
+
@public_key = ENV['RAVE_PUBLIC_KEY']
|
44
|
+
@secret_key = ENV['RAVE_SECRET_KEY']
|
45
|
+
else
|
46
|
+
@public_key = public_key
|
47
|
+
@secret_key = secret_key
|
48
|
+
warn "Warning: To ensure your rave account api keys are safe, It is best to always set your keys in the environment variable"
|
49
|
+
end
|
50
|
+
|
51
|
+
# raise this error if no public key is passed
|
52
|
+
unless !@public_key.nil?
|
53
|
+
raise RaveBadKeyError, "No public key supplied and couldn't find any in environment variables. Make sure to set public key as an environment variable RAVE_PUBLIC_KEY"
|
54
|
+
end
|
55
|
+
# raise this error if invalid public key is passed
|
56
|
+
unless @public_key[0..7] == 'FLWPUBK-'
|
57
|
+
raise RaveBadKeyError, "Invalid public key #{@public_key}"
|
58
|
+
end
|
59
|
+
|
60
|
+
# raise this error if no secret key is passed
|
61
|
+
unless !@secret_key.nil?
|
62
|
+
raise RaveBadKeyError, "No secret key supplied and couldn't find any in environment variables. Make sure to set secret key as an environment variable RAVE_SECRET_KEY"
|
63
|
+
end
|
64
|
+
# raise this error if invalid secret key is passed
|
65
|
+
unless @secret_key[0..7] == 'FLWSECK-'
|
66
|
+
raise RaveBadKeyError, "Invalid secret key #{@secret_key}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# method to return the base url
|
71
|
+
def base_url
|
72
|
+
return url
|
73
|
+
end
|
74
|
+
end
|
data/rave_ruby.gemspec
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "rave_ruby/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "rave_ruby"
|
8
|
+
spec.version = RaveRuby::VERSION
|
9
|
+
spec.authors = ["MaestroJolly"]
|
10
|
+
spec.email = ["jolaosoyusuf@gmail.com"]
|
11
|
+
spec.date = '2019-01-19'
|
12
|
+
spec.summary = %q{Ruby Gem For Rave Payments By Flutterwave.}
|
13
|
+
spec.description = %q{This is the official Ruby Gem For Rave Payments which includes Card, Account, Transfer, Subaccount, Subscription, Mpesa, Ghana Mobile Money, Ussd, Payment Plans, and Transfer payment methods.}
|
14
|
+
spec.homepage = "https://github.com/MaestroJolly/rave-ruby"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
|
+
if spec.respond_to?(:metadata)
|
20
|
+
# spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
21
|
+
|
22
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
23
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
24
|
+
spec.metadata["changelog_uri"] = spec.homepage
|
25
|
+
else
|
26
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
27
|
+
"public gem pushes."
|
28
|
+
end
|
29
|
+
|
30
|
+
# Specify which files should be added to the gem when it is released.
|
31
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
32
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
33
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
34
|
+
end
|
35
|
+
spec.bindir = "exe"
|
36
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
37
|
+
spec.require_paths = ["lib"]
|
38
|
+
|
39
|
+
spec.add_development_dependency "bundler", "~> 1.17"
|
40
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
41
|
+
spec.add_development_dependency "rspec", "~> 3.2"
|
42
|
+
|
43
|
+
# Dependencies
|
44
|
+
spec.required_ruby_version = ">= 2.5.3"
|
45
|
+
spec.add_runtime_dependency 'httparty', '~> 0.16.3'
|
46
|
+
end
|