MVola 0.1.0.pre.alpha
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/.idea/workspace.xml +525 -0
- data/.overcommit.yml +20 -0
- data/.rspec +3 -0
- data/.standard.yml +3 -0
- data/CHANGELOG.md +6 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/LICENSE.txt +21 -0
- data/README.md +78 -0
- data/Rakefile +10 -0
- data/lib/mvola/client/token.rb +22 -0
- data/lib/mvola/client.rb +113 -0
- data/lib/mvola/errors.rb +9 -0
- data/lib/mvola/request.rb +80 -0
- data/lib/mvola/transaction/payment_status.rb +48 -0
- data/lib/mvola/transaction.rb +105 -0
- data/lib/mvola/version.rb +5 -0
- data/lib/mvola.rb +20 -0
- data/sig/lib/mvola/client/token.rbs +21 -0
- data/sig/lib/mvola/client.rbs +56 -0
- data/sig/lib/mvola/request.rbs +13 -0
- data/sig/lib/mvola/transaction/payment_status.rbs +46 -0
- data/sig/mvola.rbs +5 -0
- metadata +65 -0
@@ -0,0 +1,56 @@
|
|
1
|
+
module MVola
|
2
|
+
class Client
|
3
|
+
type token_data = Token
|
4
|
+
| { access_token: String, token_type: String, expires_at: DateTime, scope: String }
|
5
|
+
| { access_token: String, token_type: String, expires_in: String, scope: String }
|
6
|
+
|
7
|
+
type user_language = :fr | :mg | 'fr' | 'mg'
|
8
|
+
|
9
|
+
include Request
|
10
|
+
|
11
|
+
SANDBOX_URL: String
|
12
|
+
PRODUCTION_URL: String
|
13
|
+
SANDBOX_PARTNER_PHONE_NUMBER: String
|
14
|
+
USER_LANGUAGES: Hash[Symbol, String]
|
15
|
+
|
16
|
+
@consumer_key: String
|
17
|
+
@consumer_secret: String
|
18
|
+
@partner_name: String
|
19
|
+
@partner_phone_number: String
|
20
|
+
@sandbox: bool
|
21
|
+
@token: String?
|
22
|
+
@user_language: user_language
|
23
|
+
@mutex: Mutex
|
24
|
+
|
25
|
+
attr_reader consumer_key: String
|
26
|
+
attr_reader consumer_secret: String
|
27
|
+
attr_reader partner_name: String
|
28
|
+
attr_reader partner_phone_number: String
|
29
|
+
attr_reader sandbox: bool
|
30
|
+
attr_reader user_language: user_language
|
31
|
+
|
32
|
+
alias sandbox? sandbox
|
33
|
+
|
34
|
+
def initialize: (?consumer_key: String,
|
35
|
+
?consumer_secret: String,
|
36
|
+
?partner_name: String,
|
37
|
+
?partner_phone_number: String,
|
38
|
+
?user_language: user_language,
|
39
|
+
?sandbox: bool,
|
40
|
+
?token: token_data?) -> void
|
41
|
+
|
42
|
+
def token: () -> Token
|
43
|
+
|
44
|
+
def token!: () -> Token
|
45
|
+
|
46
|
+
def base_url: () -> String
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def build_token_from: (token_data) -> Token
|
51
|
+
|
52
|
+
def headers: () -> Hash[String, String]
|
53
|
+
|
54
|
+
def fetch_token: () -> Hash[Symbol, String]
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module MVola
|
2
|
+
module Request
|
3
|
+
def get: (String url, ?::Hash[untyped, untyped] args) -> Net::HTTPResponse
|
4
|
+
|
5
|
+
def post: (String url, ?::Hash[untyped, untyped] args) -> Net::HTTPResponse
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def build_http: (URI uri, Hash[untyped, untyped] args) -> Net::HTTP
|
10
|
+
|
11
|
+
def handle_error: (Net::HTTPResponse response) -> void
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module MVola
|
2
|
+
class Transaction
|
3
|
+
class PaymentStatus
|
4
|
+
extend Forwardable
|
5
|
+
|
6
|
+
type t_status = 'pending' | 'completed' | 'failed'
|
7
|
+
type t_notification_method = 'polling' | 'callback'
|
8
|
+
|
9
|
+
type init_payment_response = {
|
10
|
+
"status" => t_status,
|
11
|
+
"serverCorrelationId" => String,
|
12
|
+
"notificationMethod" => t_notification_method
|
13
|
+
}
|
14
|
+
|
15
|
+
type status_response = init_payment_response & {
|
16
|
+
"objectReference" => String
|
17
|
+
}
|
18
|
+
|
19
|
+
type t_raw_response = init_payment_response | status_response
|
20
|
+
|
21
|
+
@raw_response: t_raw_response
|
22
|
+
|
23
|
+
@client_correlation_id: String
|
24
|
+
|
25
|
+
attr_reader raw_response: t_raw_response
|
26
|
+
|
27
|
+
attr_reader client_correlation_id: String
|
28
|
+
|
29
|
+
def initialize: (t_raw_response raw_response, client_correlation_id: String) -> void
|
30
|
+
|
31
|
+
def status: () -> t_status
|
32
|
+
|
33
|
+
def server_correlation_id: () -> String
|
34
|
+
|
35
|
+
def notification_method: () -> t_notification_method
|
36
|
+
|
37
|
+
def transaction_reference: () -> String?
|
38
|
+
|
39
|
+
def pending?: () -> bool
|
40
|
+
|
41
|
+
def completed?: () -> bool
|
42
|
+
|
43
|
+
def failed?: () -> bool
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/sig/mvola.rbs
ADDED
metadata
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: MVola
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0.pre.alpha
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kassam
|
8
|
+
bindir: exe
|
9
|
+
cert_chain: []
|
10
|
+
date: 2025-01-03 00:00:00.000000000 Z
|
11
|
+
dependencies: []
|
12
|
+
description: Library for MVola payment provider integration
|
13
|
+
email:
|
14
|
+
- kassam.housseny@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- ".idea/workspace.xml"
|
20
|
+
- ".overcommit.yml"
|
21
|
+
- ".rspec"
|
22
|
+
- ".standard.yml"
|
23
|
+
- CHANGELOG.md
|
24
|
+
- CODE_OF_CONDUCT.md
|
25
|
+
- LICENSE.txt
|
26
|
+
- README.md
|
27
|
+
- Rakefile
|
28
|
+
- lib/mvola.rb
|
29
|
+
- lib/mvola/client.rb
|
30
|
+
- lib/mvola/client/token.rb
|
31
|
+
- lib/mvola/errors.rb
|
32
|
+
- lib/mvola/request.rb
|
33
|
+
- lib/mvola/transaction.rb
|
34
|
+
- lib/mvola/transaction/payment_status.rb
|
35
|
+
- lib/mvola/version.rb
|
36
|
+
- sig/lib/mvola/client.rbs
|
37
|
+
- sig/lib/mvola/client/token.rbs
|
38
|
+
- sig/lib/mvola/request.rbs
|
39
|
+
- sig/lib/mvola/transaction/payment_status.rbs
|
40
|
+
- sig/mvola.rbs
|
41
|
+
homepage: https://github.com/Ksm125/mvola
|
42
|
+
licenses:
|
43
|
+
- MIT
|
44
|
+
metadata:
|
45
|
+
homepage_uri: https://github.com/Ksm125/mvola
|
46
|
+
source_code_uri: https://github.com/Ksm125/mvola
|
47
|
+
changelog_uri: https://github.com/Ksm125/mvola/blob/main/CHANGELOG.md
|
48
|
+
rdoc_options: []
|
49
|
+
require_paths:
|
50
|
+
- lib
|
51
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '2.5'
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
requirements: []
|
62
|
+
rubygems_version: 3.6.2
|
63
|
+
specification_version: 4
|
64
|
+
summary: Library for MVola payment provider integration
|
65
|
+
test_files: []
|