xendit_api 0.2.0 → 0.3.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/.gitignore +1 -0
- data/.rspec +0 -0
- data/.travis.yml +0 -0
- data/Gemfile +0 -0
- data/LICENSE.txt +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/bin/console +3 -0
- data/bin/setup +0 -0
- data/lib/faraday_middleware/raise_http_exception.rb +6 -7
- data/lib/xendit_api.rb +1 -1
- data/lib/xendit_api/client.rb +25 -15
- data/lib/xendit_api/entities/bank.rb +10 -10
- data/lib/xendit_api/entities/base.rb +10 -10
- data/lib/xendit_api/entities/card_charge.rb +17 -17
- data/lib/xendit_api/entities/cash_account.rb +11 -11
- data/lib/xendit_api/entities/disbursement.rb +16 -16
- data/lib/xendit_api/entities/invoice.rb +26 -26
- data/lib/xendit_api/entities/virtual_account.rb +15 -15
- data/lib/xendit_api/error.rb +0 -0
- data/lib/xendit_api/version.rb +1 -1
- data/xendit_api.gemspec +10 -9
- metadata +29 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e0bf39618797a2008a3b33591ed56eb92cff05d7308425632bf8ad5e627325eb
|
4
|
+
data.tar.gz: 9002af7f6b81d700c0985fed584a28cb96fc64beb49e66620aaf3fb53c54546b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '00159c4445d6d4d85741ffa9e3d0692f34f0bc904e94ccc86dea92888c71892d6f6d458d62f700b8a1b3a4fd31c687f847e6fc3d519d103e0af8c4cb7afa9133'
|
7
|
+
data.tar.gz: 32a93994f21cbfbe604be160d8dc6819b69b5a12ba7cec69f87cec0e7bc9e2ade6987641356b32614b93cb21f5685037788bbd7697eafd43fdc4206583b89424
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
File without changes
|
data/.travis.yml
CHANGED
File without changes
|
data/Gemfile
CHANGED
File without changes
|
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
data/bin/console
CHANGED
data/bin/setup
CHANGED
File without changes
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'faraday'
|
2
2
|
|
3
|
-
# @private
|
4
3
|
module FaradayMiddleware
|
5
|
-
# @private
|
6
4
|
class RaiseHttpException < Faraday::Middleware
|
7
5
|
def call(env)
|
8
6
|
@app.call(env).on_complete do |response|
|
@@ -33,7 +31,7 @@ module FaradayMiddleware
|
|
33
31
|
private
|
34
32
|
|
35
33
|
def error_message_400(response)
|
36
|
-
"#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]}#{error_body(response[:body])}"
|
34
|
+
"#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]} | #{error_body(response[:body])}"
|
37
35
|
end
|
38
36
|
|
39
37
|
def error_body(body)
|
@@ -45,10 +43,11 @@ module FaradayMiddleware
|
|
45
43
|
|
46
44
|
if body.nil?
|
47
45
|
nil
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
else
|
47
|
+
errors = body["errors"]
|
48
|
+
return nil if errors.count.zero?
|
49
|
+
|
50
|
+
errors.map { |x| x["messages"] }.join(',')
|
52
51
|
end
|
53
52
|
end
|
54
53
|
|
data/lib/xendit_api.rb
CHANGED
data/lib/xendit_api/client.rb
CHANGED
@@ -4,23 +4,23 @@ require "faraday_middleware"
|
|
4
4
|
require "json"
|
5
5
|
|
6
6
|
module XenditApi
|
7
|
-
|
8
|
-
|
7
|
+
class Client
|
8
|
+
attr_reader :token, :error
|
9
9
|
|
10
10
|
def initialize(api_key:)
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
@api_key = api_key
|
12
|
+
# Xendit requires us to use token in every request
|
13
|
+
# This is how to get the token, appending colon at the end then encode it
|
14
14
|
@token = Base64.strict_encode64(api_key + ':')
|
15
15
|
setup_connection
|
16
16
|
end
|
17
17
|
|
18
18
|
def get_cash_balance
|
19
|
-
|
19
|
+
return nil if @api_key.empty?
|
20
20
|
|
21
|
-
|
21
|
+
response = make_request('balance', 'get', {})
|
22
22
|
|
23
|
-
|
23
|
+
attrs = JSON.parse(response.body)
|
24
24
|
XenditApi::Entities::CashAccount.new(attrs)
|
25
25
|
end
|
26
26
|
|
@@ -62,22 +62,32 @@ module XenditApi
|
|
62
62
|
XenditApi::Entities::Invoice.new(attrs)
|
63
63
|
end
|
64
64
|
|
65
|
-
def create_fixed_virtual_account(external_id:, bank_code:, name:, virtual_account_number:)
|
65
|
+
def create_fixed_virtual_account(external_id:, bank_code:, name:, virtual_account_number: nil)
|
66
66
|
return nil if @api_key.empty?
|
67
67
|
|
68
68
|
data = {
|
69
|
-
external_id:
|
70
|
-
bank_code:
|
71
|
-
name:
|
72
|
-
virtual_account_number: virtual_account_number
|
69
|
+
external_id: external_id,
|
70
|
+
bank_code: bank_code,
|
71
|
+
name: name
|
73
72
|
}
|
74
|
-
|
73
|
+
data[:virtual_account_number] = virtual_account_number unless virtual_account_number.nil?
|
74
|
+
|
75
75
|
response = make_request('callback_virtual_accounts', 'post', data)
|
76
76
|
|
77
77
|
attrs = JSON.parse(response.body)
|
78
78
|
XenditApi::Entities::VirtualAccount.new(attrs)
|
79
79
|
end
|
80
80
|
|
81
|
+
def get_virtual_account(id:)
|
82
|
+
return nil if @api_key.empty?
|
83
|
+
|
84
|
+
path = 'callback_virtual_accounts/' + id.to_s
|
85
|
+
response = make_request(path, 'get')
|
86
|
+
|
87
|
+
attrs = JSON.parse(response.body)
|
88
|
+
XenditApi::Entities::VirtualAccount.new(attrs)
|
89
|
+
end
|
90
|
+
|
81
91
|
def get_banks_for_virtual_account
|
82
92
|
return nil if @api_key.empty?
|
83
93
|
|
@@ -182,5 +192,5 @@ module XenditApi
|
|
182
192
|
|
183
193
|
@connection.get endpoint
|
184
194
|
end
|
185
|
-
|
195
|
+
end
|
186
196
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
module XenditApi
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
module Entities
|
3
|
+
class Bank < Base
|
4
|
+
extend ModelAttribute
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
attribute :name, :string
|
7
|
+
attribute :code, :string
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
def initialize(attributes = {})
|
10
|
+
set_attributes(attributes)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
14
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'model_attribute'
|
2
2
|
|
3
3
|
module XenditApi
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
module Entities
|
5
|
+
class Base
|
6
|
+
require "xendit_api/entities/bank.rb"
|
7
|
+
require "xendit_api/entities/card_charge.rb"
|
8
|
+
require "xendit_api/entities/cash_account.rb"
|
9
|
+
require "xendit_api/entities/disbursement.rb"
|
10
|
+
require "xendit_api/entities/invoice.rb"
|
11
|
+
require "xendit_api/entities/virtual_account.rb"
|
12
|
+
end
|
13
|
+
end
|
14
14
|
end
|
@@ -1,21 +1,21 @@
|
|
1
1
|
module XenditApi
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
module Entities
|
3
|
+
class CardCharge < Base
|
4
|
+
extend ModelAttribute
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :external_id, :string
|
8
|
+
attribute :capture_amount, :integer
|
9
|
+
attribute :business_id, :string
|
10
|
+
attribute :merchant_reference_code, :string
|
11
|
+
attribute :merchant_id, :string
|
12
|
+
attribute :created, :string
|
13
|
+
attribute :status, :string
|
14
|
+
attribute :eci, :string
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
def initialize(attributes = {})
|
17
|
+
set_attributes(attributes)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
21
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
module XenditApi
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
module Entities
|
3
|
+
class CashAccount < Base
|
4
|
+
extend ModelAttribute
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
attribute :balance, :integer
|
7
|
+
attribute :balance_cents, :integer
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
def initialize(attributes = {})
|
10
|
+
set_attributes(attributes, true)
|
11
|
+
@balance_cents = (balance.to_s + '00').to_i
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
15
|
end
|
@@ -1,20 +1,20 @@
|
|
1
1
|
module XenditApi
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
module Entities
|
3
|
+
class Disbursement < Base
|
4
|
+
extend ModelAttribute
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :user_id, :string
|
8
|
+
attribute :external_id, :string
|
9
|
+
attribute :amount, :integer
|
10
|
+
attribute :bank_code, :string
|
11
|
+
attribute :account_holder_name, :string
|
12
|
+
attribute :disbursement_description, :string
|
13
|
+
attribute :status, :string
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
def initialize(attributes = {})
|
16
|
+
set_attributes(attributes)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
20
|
end
|
@@ -1,30 +1,30 @@
|
|
1
1
|
module XenditApi
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
module Entities
|
3
|
+
class Invoice < Base
|
4
|
+
extend ModelAttribute
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :user_id, :string
|
8
|
+
attribute :external_id, :string
|
9
|
+
attribute :is_high, :boolean
|
10
|
+
attribute :status, :string
|
11
|
+
attribute :merchant_name, :string
|
12
|
+
attribute :amount, :integer
|
13
|
+
attribute :billable_amount, :integer
|
14
|
+
attribute :taxable_amount, :integer
|
15
|
+
attribute :received_amount, :integer
|
16
|
+
attribute :payer_email, :string
|
17
|
+
attribute :description, :string
|
18
|
+
attribute :invoice_url, :string
|
19
|
+
attribute :xendit_fee_amount, :integer
|
20
|
+
attribute :expiry_date, :string
|
21
|
+
attribute :taxes, :json
|
22
|
+
attribute :fees, :json
|
23
|
+
attribute :available_banks, :json
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
def initialize(attributes = {})
|
26
|
+
set_attributes(attributes)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
30
|
end
|
@@ -1,19 +1,19 @@
|
|
1
1
|
module XenditApi
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
module Entities
|
3
|
+
class VirtualAccount < Base
|
4
|
+
extend ModelAttribute
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
attribute :id, :string
|
7
|
+
attribute :owner_id, :string
|
8
|
+
attribute :external_id, :string
|
9
|
+
attribute :bank_code, :string
|
10
|
+
attribute :merchant_code, :string
|
11
|
+
attribute :name, :string
|
12
|
+
attribute :account_number, :string
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
def initialize(attributes = {})
|
15
|
+
set_attributes(attributes)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
19
|
end
|
data/lib/xendit_api/error.rb
CHANGED
File without changes
|
data/lib/xendit_api/version.rb
CHANGED
data/xendit_api.gemspec
CHANGED
@@ -21,15 +21,16 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
-
spec.add_dependency 'model_attribute',
|
25
|
-
spec.add_dependency 'faraday',
|
26
|
-
spec.add_dependency 'faraday_middleware',
|
24
|
+
spec.add_dependency 'model_attribute', '~> 3.0.0'
|
25
|
+
spec.add_dependency 'faraday', '~> 1.3.0'
|
26
|
+
spec.add_dependency 'faraday_middleware', '~> 1.0.0'
|
27
27
|
|
28
|
-
spec.add_development_dependency "bundler",
|
29
|
-
spec.add_development_dependency "rake",
|
30
|
-
spec.add_development_dependency "
|
31
|
-
spec.add_development_dependency
|
32
|
-
spec.add_development_dependency '
|
28
|
+
spec.add_development_dependency "bundler", "~> 2.1.4"
|
29
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
30
|
+
spec.add_development_dependency "dotenv"
|
31
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
32
|
+
spec.add_development_dependency 'capybara', '2.5.0'
|
33
|
+
spec.add_development_dependency 'shoulda-context', '1.2.2'
|
33
34
|
spec.add_development_dependency 'shoulda-matchers', '3.1.1'
|
34
|
-
spec.add_development_dependency 'webmock',
|
35
|
+
spec.add_development_dependency 'webmock', '3.11.0'
|
35
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xendit_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Galih Muhammad
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: model_attribute
|
@@ -30,56 +30,70 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.3.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.3.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: faraday_middleware
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 1.0.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 1.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 2.1.4
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 2.1.4
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 12.3.3
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 12.3.3
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: dotenv
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rspec
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +156,14 @@ dependencies:
|
|
142
156
|
requirements:
|
143
157
|
- - '='
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
159
|
+
version: 3.11.0
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - '='
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
166
|
+
version: 3.11.0
|
153
167
|
description: Just simple and easy to use wrapper for Xendit API in ruby
|
154
168
|
email:
|
155
169
|
- galih0muhammad@gmail.com
|
@@ -198,8 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
212
|
- !ruby/object:Gem::Version
|
199
213
|
version: '0'
|
200
214
|
requirements: []
|
201
|
-
|
202
|
-
rubygems_version: 2.5.1
|
215
|
+
rubygems_version: 3.1.4
|
203
216
|
signing_key:
|
204
217
|
specification_version: 4
|
205
218
|
summary: A ruby wrapper for Xendit API
|