regaliator 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Guardfile +36 -0
- data/LICENSE.txt +22 -0
- data/README.md +116 -0
- data/Rakefile +11 -0
- data/lib/regaliator/api_version_error.rb +7 -0
- data/lib/regaliator/client.rb +9 -0
- data/lib/regaliator/configuration.rb +25 -0
- data/lib/regaliator/endpoint.rb +17 -0
- data/lib/regaliator/request.rb +100 -0
- data/lib/regaliator/response.rb +40 -0
- data/lib/regaliator/v15/account.rb +11 -0
- data/lib/regaliator/v15/bill.rb +23 -0
- data/lib/regaliator/v15/biller.rb +15 -0
- data/lib/regaliator/v15/client.rb +32 -0
- data/lib/regaliator/v15/rate.rb +15 -0
- data/lib/regaliator/v15/transaction.rb +23 -0
- data/lib/regaliator/v15.rb +7 -0
- data/lib/regaliator/v30/account.rb +11 -0
- data/lib/regaliator/v30/bill.rb +35 -0
- data/lib/regaliator/v30/biller.rb +19 -0
- data/lib/regaliator/v30/client.rb +32 -0
- data/lib/regaliator/v30/rate.rb +15 -0
- data/lib/regaliator/v30/transaction.rb +11 -0
- data/lib/regaliator/v30.rb +7 -0
- data/lib/regaliator/v31.rb +14 -0
- data/lib/regaliator/version.rb +3 -0
- data/lib/regaliator.rb +59 -0
- data/regaliator.gemspec +34 -0
- data/test/fixtures/vcr_cassettes/V31/account/failed_info.yml +48 -0
- data/test/fixtures/vcr_cassettes/V31/account/successful_info.yml +50 -0
- data/test/fixtures/vcr_cassettes/V31/bill/create.yml +52 -0
- data/test/fixtures/vcr_cassettes/V31/bill/list.yml +71 -0
- data/test/fixtures/vcr_cassettes/V31/bill/pay.yml +52 -0
- data/test/fixtures/vcr_cassettes/V31/bill/refresh.yml +52 -0
- data/test/fixtures/vcr_cassettes/V31/bill/show.yml +51 -0
- data/test/fixtures/vcr_cassettes/V31/bill/update.yml +53 -0
- data/test/fixtures/vcr_cassettes/V31/bill/xdata.yml +51 -0
- data/test/fixtures/vcr_cassettes/V31/biller/credentials.yml +256 -0
- data/test/fixtures/vcr_cassettes/V31/biller/topups.yml +209 -0
- data/test/fixtures/vcr_cassettes/V31/biller/utilities.yml +611 -0
- data/test/fixtures/vcr_cassettes/V31/rate/history.yml +50 -0
- data/test/fixtures/vcr_cassettes/V31/rate/list.yml +50 -0
- data/test/fixtures/vcr_cassettes/V31/transaction/list.yml +52 -0
- data/test/fixtures/vcr_cassettes/V31/transaction/search.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/account/failed_info.yml +50 -0
- data/test/fixtures/vcr_cassettes/v15/account/successful_info.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/bill/check.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/bill/consult.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/bill/index.yml +176 -0
- data/test/fixtures/vcr_cassettes/v15/bill/pay.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/biller/topups.yml +212 -0
- data/test/fixtures/vcr_cassettes/v15/biller/utilities.yml +611 -0
- data/test/fixtures/vcr_cassettes/v15/rate/history.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/rate/list.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/transaction/cancel.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/transaction/list.yml +54 -0
- data/test/fixtures/vcr_cassettes/v15/transaction/pay.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/transaction/reverse.yml +52 -0
- data/test/fixtures/vcr_cassettes/v15/transaction/search.yml +54 -0
- data/test/fixtures/vcr_cassettes/v30/account/failed_info.yml +48 -0
- data/test/fixtures/vcr_cassettes/v30/account/successful_info.yml +50 -0
- data/test/fixtures/vcr_cassettes/v30/bill/create.yml +56 -0
- data/test/fixtures/vcr_cassettes/v30/bill/list.yml +54 -0
- data/test/fixtures/vcr_cassettes/v30/bill/pay.yml +56 -0
- data/test/fixtures/vcr_cassettes/v30/bill/refresh.yml +56 -0
- data/test/fixtures/vcr_cassettes/v30/bill/show.yml +55 -0
- data/test/fixtures/vcr_cassettes/v30/bill/update.yml +57 -0
- data/test/fixtures/vcr_cassettes/v30/bill/xdata.yml +50 -0
- data/test/fixtures/vcr_cassettes/v30/biller/credentials.yml +54 -0
- data/test/fixtures/vcr_cassettes/v30/biller/topups.yml +54 -0
- data/test/fixtures/vcr_cassettes/v30/biller/utilities.yml +54 -0
- data/test/fixtures/vcr_cassettes/v30/rate/history.yml +54 -0
- data/test/fixtures/vcr_cassettes/v30/rate/list.yml +54 -0
- data/test/fixtures/vcr_cassettes/v30/transaction/list.yml +56 -0
- data/test/fixtures/vcr_cassettes/v30/transaction/search.yml +56 -0
- data/test/regaliator/api_version_error_test.rb +14 -0
- data/test/regaliator/client_test.rb +19 -0
- data/test/regaliator/configuration_test.rb +115 -0
- data/test/regaliator/endpoint_test.rb +19 -0
- data/test/regaliator/v15/account_test.rb +37 -0
- data/test/regaliator/v15/bill_test.rb +67 -0
- data/test/regaliator/v15/biller_test.rb +35 -0
- data/test/regaliator/v15/client_test.rb +23 -0
- data/test/regaliator/v15/rate_test.rb +35 -0
- data/test/regaliator/v15/transaction_test.rb +62 -0
- data/test/regaliator/v15_test.rb +10 -0
- data/test/regaliator/v30/account_test.rb +37 -0
- data/test/regaliator/v30/bill_test.rb +80 -0
- data/test/regaliator/v30/biller_test.rb +44 -0
- data/test/regaliator/v30/client_test.rb +23 -0
- data/test/regaliator/v30/rate_test.rb +35 -0
- data/test/regaliator/v30/transaction_test.rb +35 -0
- data/test/regaliator/v30_test.rb +10 -0
- data/test/regaliator/v31/account_test.rb +37 -0
- data/test/regaliator/v31/bill_test.rb +84 -0
- data/test/regaliator/v31/biller_test.rb +44 -0
- data/test/regaliator/v31/client_test.rb +23 -0
- data/test/regaliator/v31/rate_test.rb +35 -0
- data/test/regaliator/v31/transaction_test.rb +35 -0
- data/test/regaliator/v31_test.rb +10 -0
- data/test/regaliator/version_test.rb +10 -0
- data/test/regaliator_test.rb +66 -0
- data/test/test_helper.rb +26 -0
- metadata +394 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: efcf64f576bc7a9431e43534c2f9198c77fbb485
|
4
|
+
data.tar.gz: bc6e231c1cba489c8eeef2dbd7fc3a829a867463
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c3275c4f56fb2a72c00d5d0574c7143cd98a3409d34b264ea6ea2d6b60c1ec8eea002dc4c298f9cce0e9c755fd3b39b754a450b282d02fa654fc3b0a151add50
|
7
|
+
data.tar.gz: b5b4a82649400cc05219c00152d89e5d23d07c20d3318afe1f218318148dfd1bd5bb97fb9081efc4f70652a33e68b6a268c5603325a8bde676922d8b245d83d2
|
data/.gitignore
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.10
|
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
## Uncomment and set this to only include directories you want to watch
|
5
|
+
directories %w(lib test)
|
6
|
+
|
7
|
+
## Uncomment to clear the screen before every task
|
8
|
+
clearing :on
|
9
|
+
|
10
|
+
## Guard internally checks for changes in the Guardfile and exits.
|
11
|
+
## If you want Guard to automatically start up again, run guard in a
|
12
|
+
## shell loop, e.g.:
|
13
|
+
##
|
14
|
+
## $ while bundle exec guard; do echo "Restarting Guard..."; done
|
15
|
+
##
|
16
|
+
## Note: if you are using the `directories` clause above and you are not
|
17
|
+
## watching the project directory ('.'), the you will want to move the Guardfile
|
18
|
+
## to a watched dir and symlink it back, e.g.
|
19
|
+
#
|
20
|
+
# $ mkdir config
|
21
|
+
# $ mv Guardfile config/
|
22
|
+
# $ ln -s config/Guardfile .
|
23
|
+
#
|
24
|
+
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
|
25
|
+
|
26
|
+
guard :minitest do
|
27
|
+
# with Minitest::Unit
|
28
|
+
watch(%r{^test/(.*)\/?(.*)_test\.rb$})
|
29
|
+
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}#{m[2]}_test.rb" }
|
30
|
+
watch(%r{^test/test_helper\.rb$}) { 'test' }
|
31
|
+
|
32
|
+
# with Minitest::Spec
|
33
|
+
# watch(%r{^spec/(.*)_spec\.rb$})
|
34
|
+
# watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
35
|
+
# watch(%r{^spec/spec_helper\.rb$}) { 'spec' }
|
36
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Hesham
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
# Regaliator
|
2
|
+
|
3
|
+
Ruby wrapper for Regalii's API. The full API docs:
|
4
|
+
* Version 3.1 (recommended): https://www.regalii.com/api/v3/overview ;
|
5
|
+
* Version 3.0 : https://www.regalii.com/api/v3/overview ;
|
6
|
+
* Version 1.5 : https://www.regalii.com/api/v1/overview
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add this line to your application's Gemfile:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem 'regaliator', github: 'regalii/regaliator'
|
14
|
+
```
|
15
|
+
|
16
|
+
And then execute:
|
17
|
+
|
18
|
+
```
|
19
|
+
$ bundle
|
20
|
+
```
|
21
|
+
|
22
|
+
## Configuration
|
23
|
+
|
24
|
+
Add the following to config/initializers/regaliator.rb:
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
Regaliator.configure do |config|
|
28
|
+
# Version target
|
29
|
+
config.version = '3.1'
|
30
|
+
|
31
|
+
# Authentication settings
|
32
|
+
config.api_key = 'your-api-key'
|
33
|
+
config.secret_key = 'your-secret-key'
|
34
|
+
|
35
|
+
# API host settings
|
36
|
+
config.host = 'api.casiregalii.com'
|
37
|
+
config.open_timeout = 5
|
38
|
+
config.read_timeout = 10
|
39
|
+
config.use_ssl = true
|
40
|
+
|
41
|
+
# Proxy settings
|
42
|
+
config.proxy_host = nil
|
43
|
+
config.proxy_port = nil
|
44
|
+
config.proxy_user = nil
|
45
|
+
config.proxy_pass = nil
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
49
|
+
## Versions
|
50
|
+
|
51
|
+
To switch the version API, you have just to set the version in the configuration,
|
52
|
+
for instance, the version `1.5`:
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
Regaliator.configure do |config|
|
56
|
+
# Version target
|
57
|
+
config.version = '1.5'
|
58
|
+
|
59
|
+
# ...
|
60
|
+
end
|
61
|
+
```
|
62
|
+
|
63
|
+
The available versions are: `1.5`, `3.0` and `3.1` (recommended).
|
64
|
+
|
65
|
+
## Requests
|
66
|
+
|
67
|
+
**Success:**
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
> response = Regaliator.new.bill.show(1)
|
71
|
+
> response.success?
|
72
|
+
=> true
|
73
|
+
> response.data
|
74
|
+
=> {...}
|
75
|
+
```
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
> response = Regaliator.new.bill.pay(1, amount: 13.0, currency: 'MXN')
|
79
|
+
> response.success?
|
80
|
+
=> true
|
81
|
+
> response.data
|
82
|
+
=> {...}
|
83
|
+
```
|
84
|
+
|
85
|
+
**Failure:**
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
> response = Regaliator.new.bill.pay(biller_id: 1, account_number: '12345', amount: 0.0, currency: 'MXN')
|
89
|
+
> response.success?
|
90
|
+
=> false
|
91
|
+
> response.data
|
92
|
+
=> {"code" => "R3", "message" => "Invalid Payment Amount"}
|
93
|
+
```
|
94
|
+
|
95
|
+
## Examples
|
96
|
+
|
97
|
+
The following examples will show how to use the Regaliator gem to connect to the different Regalii API endpoints.
|
98
|
+
|
99
|
+
### Billers List
|
100
|
+
https://www.regalii.com/billers
|
101
|
+
```ruby
|
102
|
+
response = Regaliator.new.biller.utilities
|
103
|
+
```
|
104
|
+
|
105
|
+
## Tests
|
106
|
+
|
107
|
+
To run the tests, run:
|
108
|
+
```
|
109
|
+
$ bundle exec rake test
|
110
|
+
```
|
111
|
+
|
112
|
+
To test on each file change, run:
|
113
|
+
|
114
|
+
```
|
115
|
+
$ bundle exec guard
|
116
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Regaliator
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :api_key, :secret_key, :host, :open_timeout, :read_timeout,
|
4
|
+
:use_ssl, :proxy_host, :proxy_port, :proxy_user, :proxy_pass, :version
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@api_key = nil
|
8
|
+
@secret_key = nil
|
9
|
+
@host = nil
|
10
|
+
@version = nil
|
11
|
+
@open_timeout = 10
|
12
|
+
@read_timeout = 60
|
13
|
+
@use_ssl = true
|
14
|
+
|
15
|
+
@proxy_host = nil
|
16
|
+
@proxy_port = nil
|
17
|
+
@proxy_user = nil
|
18
|
+
@proxy_pass = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def secure?
|
22
|
+
use_ssl == true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'digest'
|
3
|
+
require 'net/http'
|
4
|
+
require 'openssl'
|
5
|
+
require 'uri'
|
6
|
+
require 'regaliator/response'
|
7
|
+
require 'regaliator/version'
|
8
|
+
|
9
|
+
module Regaliator
|
10
|
+
class Request
|
11
|
+
CONTENT_TYPE = 'application/json'.freeze
|
12
|
+
|
13
|
+
attr_reader :config, :http, :http_request, :uri, :endpoint, :params, :timestamp
|
14
|
+
|
15
|
+
def initialize(config, endpoint, params = {})
|
16
|
+
@config = config
|
17
|
+
@timestamp = Time.now.utc.httpdate.to_s
|
18
|
+
@endpoint = endpoint
|
19
|
+
@params = params
|
20
|
+
@uri = build_uri
|
21
|
+
@http = build_http
|
22
|
+
end
|
23
|
+
|
24
|
+
def post
|
25
|
+
@http_request = Net::HTTP::Post.new(uri.request_uri)
|
26
|
+
@http_request.body = params.to_json
|
27
|
+
|
28
|
+
send_request
|
29
|
+
end
|
30
|
+
|
31
|
+
def get
|
32
|
+
uri.query = URI.encode_www_form(params) if !params.empty?
|
33
|
+
@http_request = Net::HTTP::Get.new(uri.request_uri)
|
34
|
+
|
35
|
+
send_request
|
36
|
+
end
|
37
|
+
|
38
|
+
def patch
|
39
|
+
@http_request = Net::HTTP::Patch.new(uri.request_uri)
|
40
|
+
@http_request.body = params.to_json
|
41
|
+
|
42
|
+
send_request
|
43
|
+
end
|
44
|
+
|
45
|
+
def send_request
|
46
|
+
apply_headers
|
47
|
+
|
48
|
+
response = http.request(http_request)
|
49
|
+
Regaliator::Response.new(response)
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def build_uri
|
55
|
+
protocol = config.secure? ? 'https' : 'http'
|
56
|
+
url = ["#{protocol}://#{config.host}", endpoint].join
|
57
|
+
URI.parse(url)
|
58
|
+
end
|
59
|
+
|
60
|
+
def build_http
|
61
|
+
http = Net::HTTP::Proxy(config.proxy_host,
|
62
|
+
config.proxy_port,
|
63
|
+
config.proxy_user,
|
64
|
+
config.proxy_pass).new(uri.host, uri.port)
|
65
|
+
|
66
|
+
http.read_timeout = config.read_timeout
|
67
|
+
http.open_timeout = config.open_timeout
|
68
|
+
http.use_ssl = config.secure?
|
69
|
+
http.ssl_version = :TLSv1
|
70
|
+
|
71
|
+
http
|
72
|
+
end
|
73
|
+
|
74
|
+
def apply_headers
|
75
|
+
{
|
76
|
+
'User-Agent' => "Regaliator gem v#{Regaliator::VERSION}",
|
77
|
+
'Accept' => "application/vnd.regalii.v#{config.version}+json",
|
78
|
+
'Content-Type' => CONTENT_TYPE,
|
79
|
+
'Date' => timestamp,
|
80
|
+
'Content-MD5' => content_md5,
|
81
|
+
'Authorization' => authorization
|
82
|
+
}.each { |k,v| http_request[k] = v }
|
83
|
+
end
|
84
|
+
|
85
|
+
def authorization
|
86
|
+
digest = OpenSSL::Digest.new('sha1')
|
87
|
+
auth = Base64.strict_encode64(OpenSSL::HMAC.digest(digest, config.secret_key, canonical_string))
|
88
|
+
|
89
|
+
"APIAuth #{config.api_key}:#{auth}"
|
90
|
+
end
|
91
|
+
|
92
|
+
def canonical_string
|
93
|
+
[CONTENT_TYPE, content_md5, http_request.path, timestamp].join(',')
|
94
|
+
end
|
95
|
+
|
96
|
+
def content_md5
|
97
|
+
Digest::MD5.base64digest(http_request.body) if http_request.body
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'net/http'
|
3
|
+
|
4
|
+
module Regaliator
|
5
|
+
class Response
|
6
|
+
PAGINATION_HEADER = 'X-Pagination'.freeze
|
7
|
+
|
8
|
+
attr_reader :http_response
|
9
|
+
|
10
|
+
def initialize(http_response)
|
11
|
+
@http_response = http_response
|
12
|
+
end
|
13
|
+
|
14
|
+
def data
|
15
|
+
@data ||= begin
|
16
|
+
JSON::parse(http_response.body).tap do |hsh|
|
17
|
+
hsh.merge!('pagination' => pagination) if paginated?
|
18
|
+
end
|
19
|
+
rescue
|
20
|
+
{ message: 'Server returned a non-json error' }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def success?
|
25
|
+
@success ||= http_response.kind_of?(Net::HTTPSuccess)
|
26
|
+
end
|
27
|
+
|
28
|
+
def fail?
|
29
|
+
!success?
|
30
|
+
end
|
31
|
+
|
32
|
+
def paginated?
|
33
|
+
http_response.key?(PAGINATION_HEADER)
|
34
|
+
end
|
35
|
+
|
36
|
+
def pagination
|
37
|
+
@pagination ||= JSON::parse(http_response[PAGINATION_HEADER])
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'regaliator/endpoint'
|
2
|
+
|
3
|
+
module Regaliator
|
4
|
+
module V15
|
5
|
+
class Bill < Endpoint
|
6
|
+
def index(params = {})
|
7
|
+
request('/bills', params).post
|
8
|
+
end
|
9
|
+
|
10
|
+
def consult(params = {})
|
11
|
+
request('/bill/consult', params).post
|
12
|
+
end
|
13
|
+
|
14
|
+
def pay(params = {})
|
15
|
+
request('/bill/pay', params).post
|
16
|
+
end
|
17
|
+
|
18
|
+
def check(params = {})
|
19
|
+
request('/bill/check', params).post
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'regaliator/endpoint'
|
2
|
+
|
3
|
+
module Regaliator
|
4
|
+
module V15
|
5
|
+
class Biller < Endpoint
|
6
|
+
def topups(params = {})
|
7
|
+
request('/billers/topups', params).post
|
8
|
+
end
|
9
|
+
|
10
|
+
def utilities(params = {})
|
11
|
+
request('/billers/utilities', params).post
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'regaliator/client'
|
2
|
+
require 'regaliator/v15/account'
|
3
|
+
require 'regaliator/v15/bill'
|
4
|
+
require 'regaliator/v15/biller'
|
5
|
+
require 'regaliator/v15/rate'
|
6
|
+
require 'regaliator/v15/transaction'
|
7
|
+
|
8
|
+
module Regaliator
|
9
|
+
module V15
|
10
|
+
class Client < Client
|
11
|
+
def account
|
12
|
+
Account.new(config)
|
13
|
+
end
|
14
|
+
|
15
|
+
def bill
|
16
|
+
Bill.new(config)
|
17
|
+
end
|
18
|
+
|
19
|
+
def biller
|
20
|
+
Biller.new(config)
|
21
|
+
end
|
22
|
+
|
23
|
+
def rate
|
24
|
+
Rate.new(config)
|
25
|
+
end
|
26
|
+
|
27
|
+
def transaction
|
28
|
+
Transaction.new(config)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'regaliator/endpoint'
|
2
|
+
|
3
|
+
module Regaliator
|
4
|
+
module V15
|
5
|
+
class Transaction < Endpoint
|
6
|
+
def list(params = {})
|
7
|
+
request('/transactions', params).post
|
8
|
+
end
|
9
|
+
|
10
|
+
def pay(params = {})
|
11
|
+
request('/transaction/pay', params).post
|
12
|
+
end
|
13
|
+
|
14
|
+
def reverse(params = {})
|
15
|
+
request('/transaction/reverse', params).post
|
16
|
+
end
|
17
|
+
|
18
|
+
def cancel(params = {})
|
19
|
+
request('/transaction/cancel', params).post
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'regaliator/endpoint'
|
2
|
+
|
3
|
+
module Regaliator
|
4
|
+
module V30
|
5
|
+
class Bill < Endpoint
|
6
|
+
def create(params = {})
|
7
|
+
request('/bills', params).post
|
8
|
+
end
|
9
|
+
|
10
|
+
def show(id)
|
11
|
+
request("/bills/#{id}").get
|
12
|
+
end
|
13
|
+
|
14
|
+
def update(id, params = {})
|
15
|
+
request("/bills/#{id}", params).patch
|
16
|
+
end
|
17
|
+
|
18
|
+
def refresh(id)
|
19
|
+
request("/bills/#{id}/refresh").post
|
20
|
+
end
|
21
|
+
|
22
|
+
def pay(id, params = {})
|
23
|
+
request("/bills/#{id}/pay", params).post
|
24
|
+
end
|
25
|
+
|
26
|
+
def xdata(id)
|
27
|
+
request("/bills/#{id}/xdata").get
|
28
|
+
end
|
29
|
+
|
30
|
+
def list(params = {})
|
31
|
+
request('/bills', params).get
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'regaliator/endpoint'
|
2
|
+
|
3
|
+
module Regaliator
|
4
|
+
module V30
|
5
|
+
class Biller < Endpoint
|
6
|
+
def credentials(params = {})
|
7
|
+
request('/billers/credentials', params).get
|
8
|
+
end
|
9
|
+
|
10
|
+
def topups(params = {})
|
11
|
+
request('/billers/topups', params).get
|
12
|
+
end
|
13
|
+
|
14
|
+
def utilities(params = {})
|
15
|
+
request('/billers/utilities', params).get
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'regaliator/client'
|
2
|
+
require 'regaliator/v30/account'
|
3
|
+
require 'regaliator/v30/bill'
|
4
|
+
require 'regaliator/v30/biller'
|
5
|
+
require 'regaliator/v30/rate'
|
6
|
+
require 'regaliator/v30/transaction'
|
7
|
+
|
8
|
+
module Regaliator
|
9
|
+
module V30
|
10
|
+
class Client < Client
|
11
|
+
def account
|
12
|
+
Account.new(config)
|
13
|
+
end
|
14
|
+
|
15
|
+
def bill
|
16
|
+
Bill.new(config)
|
17
|
+
end
|
18
|
+
|
19
|
+
def biller
|
20
|
+
Biller.new(config)
|
21
|
+
end
|
22
|
+
|
23
|
+
def rate
|
24
|
+
Rate.new(config)
|
25
|
+
end
|
26
|
+
|
27
|
+
def transaction
|
28
|
+
Transaction.new(config)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|