bloom_remit_client 0.15.0 → 0.16.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.
- checksums.yaml +5 -5
- data/.github/workflows/push.yml +27 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +8 -0
- data/Gemfile +2 -1
- data/README.md +61 -0
- data/bloom_remit_client.gemspec +5 -5
- data/lib/bloom_remit_client.rb +40 -50
- data/lib/bloom_remit_client/client.rb +6 -133
- data/lib/bloom_remit_client/models/txn.rb +39 -0
- data/lib/bloom_remit_client/models/txn_preview.rb +15 -0
- data/lib/bloom_remit_client/requests/base_request.rb +18 -0
- data/lib/bloom_remit_client/requests/create_txn_preview_request.rb +24 -0
- data/lib/bloom_remit_client/requests/create_txn_request.rb +79 -0
- data/lib/bloom_remit_client/responses/base_response.rb +18 -0
- data/lib/bloom_remit_client/responses/create_txn_preview_response.rb +16 -0
- data/lib/bloom_remit_client/responses/create_txn_response.rb +11 -0
- data/lib/bloom_remit_client/version.rb +1 -1
- metadata +23 -50
- data/.travis.yml +0 -9
- data/lib/bloom_remit_client/coercers/path.rb +0 -11
- data/lib/bloom_remit_client/concerns/has_base_authentification.rb +0 -16
- data/lib/bloom_remit_client/models/biller.rb +0 -16
- data/lib/bloom_remit_client/models/credit.rb +0 -12
- data/lib/bloom_remit_client/models/deposit_strategy.rb +0 -11
- data/lib/bloom_remit_client/models/payment.rb +0 -23
- data/lib/bloom_remit_client/models/recipient.rb +0 -18
- data/lib/bloom_remit_client/models/remittance.rb +0 -22
- data/lib/bloom_remit_client/models/user.rb +0 -21
- data/lib/bloom_remit_client/requests/base.rb +0 -55
- data/lib/bloom_remit_client/requests/billers/list.rb +0 -23
- data/lib/bloom_remit_client/requests/credit/history.rb +0 -20
- data/lib/bloom_remit_client/requests/credit/list.rb +0 -20
- data/lib/bloom_remit_client/requests/deposit_strategies/list.rb +0 -21
- data/lib/bloom_remit_client/requests/payments/create.rb +0 -31
- data/lib/bloom_remit_client/requests/rate/show.rb +0 -29
- data/lib/bloom_remit_client/requests/recipients/create.rb +0 -32
- data/lib/bloom_remit_client/requests/recipients/list.rb +0 -34
- data/lib/bloom_remit_client/requests/remittances/calculate.rb +0 -33
- data/lib/bloom_remit_client/requests/remittances/create.rb +0 -30
- data/lib/bloom_remit_client/requests/requests_sender.rb +0 -35
- data/lib/bloom_remit_client/requests/senders/create.rb +0 -30
- data/lib/bloom_remit_client/requests/txns/create.rb +0 -30
- data/lib/bloom_remit_client/requests/url_builder.rb +0 -51
- data/lib/bloom_remit_client/responses/base.rb +0 -31
- data/lib/bloom_remit_client/responses/billers/list.rb +0 -17
- data/lib/bloom_remit_client/responses/deposit_strategies/list.rb +0 -20
- data/lib/bloom_remit_client/responses/payments/create.rb +0 -17
- data/lib/bloom_remit_client/responses/recipients/create.rb +0 -20
- data/lib/bloom_remit_client/responses/recipients/list.rb +0 -20
- data/lib/bloom_remit_client/responses/remittances/calculate.rb +0 -69
- data/lib/bloom_remit_client/responses/remittances/create.rb +0 -20
- data/lib/bloom_remit_client/responses/senders/create.rb +0 -21
- data/lib/bloom_remit_client/responses/txns/create.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b61eba110a32fa17832fef1ca95d88379e2af7752207e2d706fd6f037e93a3d6
|
4
|
+
data.tar.gz: a83918d0ef84ca6cf531d5e6c4f2906d22bdadc44105cd5a272d31a11976eb3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96f507bb34b114baae330c80a4bf3ceab1b0ccab8dc1916eeda552641bc9462c1baea3ef8bae77671219ee630a0bb54337da0d393ce26a72c520317a401d7e02
|
7
|
+
data.tar.gz: 892dc312204c002d9c8fd26dd7b50975fb334e9fc3071fbd4d914f0362a6c3efcb7d4b53f68f10f022bbd1faf61a15f05b53c6b95252b6237ab067b17a58082a
|
@@ -0,0 +1,27 @@
|
|
1
|
+
name: Ruby Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- master
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
test:
|
13
|
+
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
|
16
|
+
steps:
|
17
|
+
- uses: actions/checkout@v2
|
18
|
+
- name: Set up Ruby
|
19
|
+
uses: ruby/setup-ruby@v1
|
20
|
+
with:
|
21
|
+
ruby-version: 2.7.2
|
22
|
+
- name: Bundle install
|
23
|
+
run: bundle install
|
24
|
+
- name: Copy spec config
|
25
|
+
run: cp spec/config.yml{.sample,}
|
26
|
+
- name: Run tests
|
27
|
+
run: bundle exec rspec
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.7.2
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
+
## [0.16.0] - 2020-01-18
|
6
|
+
### Changed
|
7
|
+
- Removed all API methods (complete overhaul)
|
8
|
+
|
9
|
+
### Added
|
10
|
+
- `#create_txn` to create transactions
|
11
|
+
- `#create_txn_preview` to determine fees, eta, and max amount of a transaction
|
12
|
+
|
5
13
|
## [0.15.0] - 2017-04-26
|
6
14
|
### Changed
|
7
15
|
- Production domain is now `www.bloomremit.net`
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -22,6 +22,67 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
See `spec/functional` for examples.
|
24
24
|
|
25
|
+
To subscribe to transaction updates, configure the following (in an initializer if you're using Rails):
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
MessageBusClientWorker.configure do |c|
|
29
|
+
c.subscriptions = {
|
30
|
+
"https://bloomremit.net" => {
|
31
|
+
headers: {
|
32
|
+
# TOKEN here is a Base64.strict_encode64 string composed of
|
33
|
+
# your PARTNER_ID and API_SECRET joined by a colon character
|
34
|
+
"Authorization" => "Basic #{TOKEN}"
|
35
|
+
},
|
36
|
+
channels: {
|
37
|
+
"/v2/txns" => { processor: "ProcessBloomRemitTxnUpdate" },
|
38
|
+
}
|
39
|
+
},
|
40
|
+
}
|
41
|
+
|
42
|
+
# Consider changing MessageBusClientWorker to incrementally add subscriptions
|
43
|
+
# and not overwrite like above. Warn if a host is already defined.
|
44
|
+
# If we do this, then we can add a helper method to this gem, that adds the sub:
|
45
|
+
# BloomRemitClient.configure do |c|
|
46
|
+
# c.partner_id = ENV["BLOOM_REMIT_PARTNER_ID"]
|
47
|
+
# c.api_secret = ENV["BLOOM_REMIT_API_SECRET"]
|
48
|
+
# c.on_txn_update = "ProcessBloomRemitTxnUpdate" # setting this will trigger the MBCW subscription
|
49
|
+
# end
|
50
|
+
c.subscribe(
|
51
|
+
"https://bloomremit.net" => {
|
52
|
+
headers: { "Authorization" => "Basic #{TOKEN}" },
|
53
|
+
channels: {
|
54
|
+
"/v2/txns" => { processor: "ProcessBloomRemitTxnUpdate" },
|
55
|
+
}
|
56
|
+
},
|
57
|
+
)
|
58
|
+
end
|
59
|
+
```
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
BloomRemitClient.configure do |c|
|
63
|
+
c.partner_id = ENV["BLOOM_REMIT_PARTNER_ID"]
|
64
|
+
c.api_secret = ENV["BLOOM_REMIT_API_SECRET"]
|
65
|
+
c.on_txn_update = "ProcessBloomRemitTxnUpdate"
|
66
|
+
end
|
67
|
+
|
68
|
+
BloomRemitClient.configure_message_bus_client_worker!
|
69
|
+
```
|
70
|
+
|
71
|
+
Make sure `MessageBusClientWorker` (the gem used underneath this gem) is enqueued at an interval, so your app will continually fetch updates. See [Staying subscribed](https://github.com/bloom-solutions/message_bus_client_worker#staying-subscribed) in MessageBusClientWorker. Note that you will need to have Sidekiq for `MessageBusClientWorker` to function.
|
72
|
+
|
73
|
+
Somewhere in your app, define `ProcessBloomRemitTxnUpdates` to update your own database:
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
class ProcessBloomRemitTxnUpdates
|
77
|
+
def self.call(remote_txn)
|
78
|
+
# remote_txn passed to you is an instance of BloomRemitClient::Txn model
|
79
|
+
if withdrawal = Withdrawal.find_by(id: remote_txn.client_external_id)
|
80
|
+
withdrawal.update(status: remote_txn.status)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
```
|
85
|
+
|
25
86
|
## Factories
|
26
87
|
|
27
88
|
To make testing easier, you may `require 'bloom_remit_client/factories'` in your app.
|
data/bloom_remit_client.gemspec
CHANGED
@@ -26,17 +26,17 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
|
29
|
-
spec.add_dependency "activemodel"
|
30
29
|
spec.add_dependency "activesupport"
|
31
|
-
spec.add_dependency "
|
32
|
-
spec.add_dependency "
|
30
|
+
spec.add_dependency "api_client_base"
|
31
|
+
spec.add_dependency "typhoeus"
|
32
|
+
spec.add_dependency "message_bus_client_worker"
|
33
33
|
|
34
|
-
spec.add_development_dependency "bundler", "~>
|
34
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
35
35
|
spec.add_development_dependency "rake", "~> 10.0"
|
36
36
|
spec.add_development_dependency "rspec", "~> 3.0"
|
37
37
|
spec.add_development_dependency "vcr"
|
38
38
|
spec.add_development_dependency 'faker'
|
39
39
|
spec.add_development_dependency "webmock"
|
40
40
|
spec.add_development_dependency "dotenv"
|
41
|
-
spec.add_development_dependency "
|
41
|
+
spec.add_development_dependency "virtus-matchers"
|
42
42
|
end
|
data/lib/bloom_remit_client.rb
CHANGED
@@ -1,66 +1,56 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require
|
3
|
-
require 'httparty'
|
4
|
-
require 'active_model'
|
2
|
+
require "api_client_base"
|
5
3
|
require 'active_support/core_ext/hash/indifferent_access'
|
6
4
|
require 'active_support/core_ext/object/try'
|
5
|
+
require "message_bus_client_worker"
|
7
6
|
require 'bloom_remit_client/coercers/indifferent_hash'
|
8
|
-
require 'bloom_remit_client/coercers/path'
|
9
|
-
require 'bloom_remit_client/concerns/has_base_authentification'
|
10
7
|
require "bloom_remit_client/version"
|
11
8
|
require "bloom_remit_client/client"
|
12
|
-
require "bloom_remit_client/models/
|
13
|
-
require "bloom_remit_client/models/
|
14
|
-
require "bloom_remit_client/models/user"
|
15
|
-
require "bloom_remit_client/models/payment"
|
16
|
-
require "bloom_remit_client/models/remittance"
|
17
|
-
require "bloom_remit_client/models/credit"
|
18
|
-
require "bloom_remit_client/models/recipient"
|
9
|
+
require "bloom_remit_client/models/txn"
|
10
|
+
require "bloom_remit_client/models/txn_preview"
|
19
11
|
require "bloom_remit_client/requests"
|
20
|
-
require "bloom_remit_client/requests/
|
21
|
-
require "bloom_remit_client/requests/
|
22
|
-
require "bloom_remit_client/requests/
|
23
|
-
require "bloom_remit_client/
|
24
|
-
require "bloom_remit_client/
|
25
|
-
require "bloom_remit_client/
|
26
|
-
require "bloom_remit_client/requests/billers/list"
|
27
|
-
require "bloom_remit_client/requests/deposit_strategies/list"
|
28
|
-
require "bloom_remit_client/requests/senders/create"
|
29
|
-
require "bloom_remit_client/requests/payments/create"
|
30
|
-
require "bloom_remit_client/requests/remittances/create"
|
31
|
-
require "bloom_remit_client/requests/recipients/create"
|
32
|
-
require "bloom_remit_client/requests/recipients/list"
|
33
|
-
require "bloom_remit_client/requests/remittances/calculate"
|
34
|
-
require "bloom_remit_client/requests/txns/create"
|
35
|
-
require "bloom_remit_client/responses/base"
|
36
|
-
require "bloom_remit_client/responses/billers/list"
|
37
|
-
require "bloom_remit_client/responses/deposit_strategies/list"
|
38
|
-
require "bloom_remit_client/responses/senders/create"
|
39
|
-
require "bloom_remit_client/responses/payments/create"
|
40
|
-
require "bloom_remit_client/responses/remittances/create"
|
41
|
-
require "bloom_remit_client/responses/recipients/create"
|
42
|
-
require "bloom_remit_client/responses/recipients/list"
|
43
|
-
require "bloom_remit_client/responses/remittances/calculate"
|
44
|
-
require "bloom_remit_client/responses/txns/create"
|
12
|
+
require "bloom_remit_client/requests/base_request"
|
13
|
+
require "bloom_remit_client/requests/create_txn_request"
|
14
|
+
require "bloom_remit_client/requests/create_txn_preview_request"
|
15
|
+
require "bloom_remit_client/responses/base_response"
|
16
|
+
require "bloom_remit_client/responses/create_txn_response"
|
17
|
+
require "bloom_remit_client/responses/create_txn_preview_response"
|
45
18
|
|
46
19
|
module BloomRemitClient
|
47
|
-
PRODUCTION = 'www.bloomremit.net'
|
48
|
-
STAGING = 'staging.bloomremit.net'
|
49
20
|
|
50
|
-
|
51
|
-
|
52
|
-
attr_accessor :sandbox
|
21
|
+
PRODUCTION = 'https://www.bloomremit.net'
|
22
|
+
STAGING = 'https://staging.bloomremit.net'
|
53
23
|
|
54
|
-
|
55
|
-
client_args = {}
|
56
|
-
client_args[:host] = self.host if self.host.present?
|
57
|
-
client_args[:sandbox] = self.sandbox if self.sandbox.present?
|
58
|
-
client_args.merge!(args)
|
24
|
+
include APIClientBase::Base.module
|
59
25
|
|
60
|
-
|
61
|
-
|
62
|
-
|
26
|
+
TXN_UPDATES_CHANNEL = "/v2/txns".freeze
|
27
|
+
|
28
|
+
with_configuration do
|
29
|
+
has :host, classes: String, default: STAGING
|
30
|
+
has :partner_id, classes: String
|
31
|
+
has :api_secret, classes: String
|
32
|
+
has :on_txn_update, classes: [String, NilClass]
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.configure_message_bus_client_worker!
|
36
|
+
if configuration.on_txn_update.blank?
|
37
|
+
fail "`on_txn_update` must be defined"
|
63
38
|
end
|
64
39
|
|
40
|
+
token = [
|
41
|
+
configuration.partner_id,
|
42
|
+
configuration.api_secret,
|
43
|
+
].join(":")
|
44
|
+
token = Base64.strict_encode64(token)
|
45
|
+
|
46
|
+
MessageBusClientWorker.subscribe(configuration.host, {
|
47
|
+
headers: {
|
48
|
+
"HTTP_AUTHORIZATION" => "Basic #{token}"
|
49
|
+
},
|
50
|
+
channels: {
|
51
|
+
TXN_UPDATES_CHANNEL => { processor: configuration.on_txn_update },
|
52
|
+
}
|
53
|
+
})
|
65
54
|
end
|
55
|
+
|
66
56
|
end
|
@@ -1,144 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module BloomRemitClient
|
3
3
|
class Client
|
4
|
-
include
|
5
|
-
include ActiveModel::Validations
|
4
|
+
include APIClientBase::Client.module(default_opts: :default_opts)
|
6
5
|
|
7
|
-
attribute :
|
6
|
+
attribute :partner_id, String
|
8
7
|
attribute :api_secret, String
|
9
|
-
attribute :agent_id, String
|
10
8
|
attribute :host, String, lazy: true, default: :default_host
|
11
|
-
attribute :sandbox, Boolean, default: true
|
12
9
|
|
13
|
-
|
14
|
-
|
10
|
+
api_action :create_txn
|
11
|
+
api_action :create_txn_preview
|
15
12
|
|
16
|
-
|
17
|
-
|
18
|
-
# Parameters: none
|
19
|
-
def credits(params = {})
|
20
|
-
request_params = params.merge(access_params)
|
21
|
-
request = Requests::Credit::List.new(request_params)
|
22
|
-
request.call!
|
23
|
-
end
|
24
|
-
|
25
|
-
# GET
|
26
|
-
# /api/v1/partners/:api_token/credits/history
|
27
|
-
# Parameters: none
|
28
|
-
def credits_history(params = {})
|
29
|
-
request_params = params.merge(access_params)
|
30
|
-
request = Requests::Credit::History.new(request_params)
|
31
|
-
request.call!
|
32
|
-
end
|
33
|
-
|
34
|
-
# GET
|
35
|
-
# /api/v1/rates
|
36
|
-
# Parameters:
|
37
|
-
# partner_id:
|
38
|
-
# String, required
|
39
|
-
# API token
|
40
|
-
# api_secret:
|
41
|
-
# String, required
|
42
|
-
# currency:
|
43
|
-
# One of: [USDPHP, USDUSD, USDKRW, USDAUD, USDCAD, USDJPY, USDNZD, USDSGD, USDHKD,
|
44
|
-
# USDCNY, USDEUR, USDVND, USDSAR, USDTWD, USDQAR, USDKWD, USDAED, USDGBP,
|
45
|
-
# USDMYR, USDINR, USDIDR, USDBTC],
|
46
|
-
# optional
|
47
|
-
def rates(params = {})
|
48
|
-
request_params = params.merge(access_params)
|
49
|
-
request = Requests::Rate::Show.new(request_params)
|
50
|
-
request.call!
|
51
|
-
end
|
52
|
-
|
53
|
-
def billers(params={})
|
54
|
-
request_params = params.merge(access_params)
|
55
|
-
request = Requests::Billers::List.new(request_params)
|
56
|
-
raw_response = request.call!
|
57
|
-
Responses::Billers::List.new(raw_response: raw_response)
|
58
|
-
end
|
59
|
-
|
60
|
-
def create_sender(sender_params={})
|
61
|
-
params = {sender: sender_params}
|
62
|
-
request_params = params.merge(default_params).merge(access_params)
|
63
|
-
request = Requests::Senders::Create.new(request_params)
|
64
|
-
raw_response = request.call!
|
65
|
-
Responses::Senders::Create.new(raw_response: raw_response)
|
66
|
-
end
|
67
|
-
|
68
|
-
def create_payment(payment_params={})
|
69
|
-
params = {payment: payment_params}.
|
70
|
-
merge(sender_id: payment_params[:sender_id])
|
71
|
-
request_params = params.merge(default_params).merge(access_params)
|
72
|
-
request = Requests::Payments::Create.new(request_params)
|
73
|
-
raw_response = request.call!
|
74
|
-
Responses::Payments::Create.new(raw_response: raw_response)
|
75
|
-
end
|
76
|
-
|
77
|
-
def create_recipient(recipient_params={})
|
78
|
-
params = {recipient: recipient_params}.
|
79
|
-
merge(sender_id: recipient_params[:sender_id])
|
80
|
-
request_params = params.merge(default_params).merge(access_params)
|
81
|
-
request = Requests::Recipients::Create.new(request_params)
|
82
|
-
raw_response = request.call!
|
83
|
-
Responses::Recipients::Create.new(raw_response: raw_response)
|
84
|
-
end
|
85
|
-
|
86
|
-
def recipient_list(recipient_params={})
|
87
|
-
request_params = recipient_params.merge(access_params)
|
88
|
-
request = Requests::Recipients::List.new(request_params)
|
89
|
-
raw_response = request.call!
|
90
|
-
Responses::Recipients::List.new(raw_response: raw_response)
|
91
|
-
end
|
92
|
-
|
93
|
-
def create_remittance(remittance_params={})
|
94
|
-
params = {remittance: remittance_params}.
|
95
|
-
merge(sender_id: remittance_params[:sender_id]).
|
96
|
-
merge(recipient_id: remittance_params[:recipient_id])
|
97
|
-
request_params = params.merge(default_params).merge(access_params)
|
98
|
-
request = Requests::Remittances::Create.new(request_params)
|
99
|
-
raw_response = request.call!
|
100
|
-
Responses::Remittances::Create.new(raw_response: raw_response)
|
101
|
-
end
|
102
|
-
|
103
|
-
def calculate_remittance(calculate_params={})
|
104
|
-
params = access_params.merge(calculate_params)
|
105
|
-
request = Requests::Remittances::Calculate.new(params)
|
106
|
-
raw_response = request.call!
|
107
|
-
Responses::Remittances::Calculate.new(raw_response: raw_response)
|
108
|
-
end
|
109
|
-
|
110
|
-
def deposit_strategies_list
|
111
|
-
request_params = access_params
|
112
|
-
request = Requests::DepositStrategies::List.new(request_params)
|
113
|
-
raw_response = request.call!
|
114
|
-
Responses::DepositStrategies::List.new(raw_response: raw_response)
|
115
|
-
end
|
116
|
-
|
117
|
-
def create_txn(txn_params={})
|
118
|
-
params = {txn: txn_params}.merge(
|
119
|
-
sender_id: txn_params[:sender_id],
|
120
|
-
recipient_id: txn_params[:recipient_id],
|
121
|
-
)
|
122
|
-
request_params = params.merge(default_params).merge(access_params)
|
123
|
-
request = Requests::Txns::Create.new(request_params)
|
124
|
-
raw_response = request.call!
|
125
|
-
Responses::Txns::Create.new(raw_response: raw_response)
|
126
|
-
end
|
127
|
-
|
128
|
-
private
|
129
|
-
|
130
|
-
# Should overwrite any other `:api_token`, `:api_secret`
|
131
|
-
def access_params
|
132
|
-
@access_params ||= attributes.slice(:host, :api_token, :api_secret)
|
133
|
-
end
|
134
|
-
|
135
|
-
def default_params
|
136
|
-
@default_params ||= attributes.slice(:agent_id)
|
137
|
-
end
|
138
|
-
|
139
|
-
def default_host
|
140
|
-
return BloomRemitClient::STAGING if self.sandbox.nil? || self.sandbox
|
141
|
-
BloomRemitClient::PRODUCTION
|
13
|
+
def default_opts
|
14
|
+
{ host: host, partner_id: partner_id, api_secret: api_secret }
|
142
15
|
end
|
143
16
|
|
144
17
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module BloomRemitClient
|
2
|
+
class Txn
|
3
|
+
|
4
|
+
include Virtus.model
|
5
|
+
|
6
|
+
attribute :id, String
|
7
|
+
attribute :recipient_id, String
|
8
|
+
attribute :dest_currency, String
|
9
|
+
attribute :receivable_in_dest_currency, BigDecimal
|
10
|
+
attribute :payout_method, String
|
11
|
+
attribute :status, String
|
12
|
+
attribute :account_name, String
|
13
|
+
attribute :account_number, String
|
14
|
+
attribute :tracking_sender, String
|
15
|
+
attribute :tracking_number, String
|
16
|
+
attribute :client_external_id, String
|
17
|
+
attribute :purpose, String
|
18
|
+
attribute :sender_first_name, String
|
19
|
+
attribute :sender_last_name, String
|
20
|
+
attribute :sender_email, String
|
21
|
+
attribute :sender_address, String
|
22
|
+
attribute :sender_city, String
|
23
|
+
attribute :sender_state, String
|
24
|
+
attribute :sender_zip_code, String
|
25
|
+
attribute :sender_country, String
|
26
|
+
attribute :sender_occupation, String
|
27
|
+
attribute :recipient_first_name, String
|
28
|
+
attribute :recipient_last_name, String
|
29
|
+
attribute :recipient_mobile, String
|
30
|
+
attribute :recipient_address, String
|
31
|
+
attribute :recipient_city, String
|
32
|
+
attribute :recipient_state, String
|
33
|
+
attribute :recipient_zip_code, String
|
34
|
+
attribute :recipient_country, String
|
35
|
+
attribute :recipient_occupation, String
|
36
|
+
attribute :recipient_relationship_to_sender, String
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|