mandarin-api 0.0.2 → 0.0.3
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 +4 -4
- data/Gemfile.lock +1 -5
- data/README.md +16 -2
- data/lib/mandarin_api.rb +5 -2
- data/lib/mandarin_api/payment_manager.rb +17 -8
- data/mandarin-api.gemspec +1 -2
- data/spec/lib/mandarin_api/payment_manager_spec.rb +30 -5
- metadata +2 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e82917fcfb1de6c137305c01795d5809427c6d28
|
4
|
+
data.tar.gz: 9eca43e46586b76d79c1d12c467a60c05163175d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba82ccce25ca6336cf4a6979f08dc99dfde9e125f09416534856a80862cc27c15afb55b5fe6818d0188f2bae0e8d4f5f48747e2818037e3affec6beae084f1e7
|
7
|
+
data.tar.gz: 34150934e997cfba3ab2f4ac0ede94f85eadfc02a2a808949d294967ffa0b0c62de71f6e9a89dafeac7c1beed51647a5ea4b451e5d3aec0213b3a421bd020a30
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mandarin-api (0.0.
|
5
|
-
dry-configurable (>= 0.1.0, < 1.0)
|
4
|
+
mandarin-api (0.0.3)
|
6
5
|
rest-client (>= 2.0, < 3.0)
|
7
6
|
|
8
7
|
GEM
|
@@ -11,14 +10,11 @@ GEM
|
|
11
10
|
addressable (2.4.0)
|
12
11
|
ast (2.3.0)
|
13
12
|
coderay (1.1.1)
|
14
|
-
concurrent-ruby (1.0.2)
|
15
13
|
crack (0.4.3)
|
16
14
|
safe_yaml (~> 1.0.0)
|
17
15
|
diff-lcs (1.2.5)
|
18
16
|
domain_name (0.5.20160826)
|
19
17
|
unf (>= 0.0.5, < 1.0.0)
|
20
|
-
dry-configurable (0.1.7)
|
21
|
-
concurrent-ruby (~> 1.0)
|
22
18
|
faker (1.6.6)
|
23
19
|
i18n (~> 0.5)
|
24
20
|
hashdiff (0.3.0)
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ Keep id, it will be used for pay/payouts requests. Use userWebLink to redirect u
|
|
37
37
|
# assigned_card_uuid - the id you received assigning the card
|
38
38
|
MandarinApi.payment(order_id, amount, assigned_card_uuid)
|
39
39
|
```
|
40
|
-
|
40
|
+
`#payment` will return a hash with transaction id.
|
41
41
|
###**Example:**
|
42
42
|
```ruby
|
43
43
|
{ 'id' => '721a5185314740aaa304278fb1d8ee63' }
|
@@ -50,11 +50,25 @@ MandarinApi.payment(order_id, amount, assigned_card_uuid)
|
|
50
50
|
# assigned_card_uuid - the id you received assigning the card
|
51
51
|
MandarinApi.payout(order_id, amount, assigned_card_uuid)
|
52
52
|
```
|
53
|
-
|
53
|
+
`#payout` will return a hash with transaction id.
|
54
54
|
###**Example:**
|
55
55
|
```ruby
|
56
56
|
{ 'id' => '721a5185314740aaa304278fb1d8ee63' }
|
57
57
|
```
|
58
|
+
|
59
|
+
###**Example of performing refund:**
|
60
|
+
```ruby
|
61
|
+
# order_id - id of order/bill, etc. in your system.
|
62
|
+
# transaction_uuid - the uuid you received performing transaction
|
63
|
+
MandarinApi.refund(order_id, transaction_uuid)
|
64
|
+
```
|
65
|
+
`#refund` will return a hash with transaction id.
|
66
|
+
###**Example:**
|
67
|
+
```ruby
|
68
|
+
{ 'id' => '721a5185314740aaa304278fb1d8ee63' }
|
69
|
+
```
|
70
|
+
|
71
|
+
|
58
72
|
You will have to provide a link to receive callbacks from Mandarin.
|
59
73
|
MandarinApi.process_callback takes as arguments body of a callback serialized
|
60
74
|
to hash with symbolized keys and an instance with `#success` and `#failure` methods,
|
data/lib/mandarin_api.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'dry-configurable'
|
4
2
|
# Main module
|
5
3
|
module MandarinApi
|
6
4
|
class << self
|
@@ -26,6 +24,11 @@ module MandarinApi
|
|
26
24
|
MandarinApi::PaymentManager.new.perform_payout params
|
27
25
|
end
|
28
26
|
|
27
|
+
def self.refund(order_id, transaction_uuid)
|
28
|
+
params = { order_id: order_id, transaction_uuid: transaction_uuid }
|
29
|
+
MandarinApi::PaymentManager.new.perform_refund params
|
30
|
+
end
|
31
|
+
|
29
32
|
def self.process_callback(request_params, response_handler)
|
30
33
|
response = MandarinApi::Responder.new.process(request_params)
|
31
34
|
response_handler.success(response.data) if response.success
|
@@ -3,30 +3,39 @@ module MandarinApi
|
|
3
3
|
# Pergorms payouts and payins
|
4
4
|
class PaymentManager
|
5
5
|
def perform_payout(params)
|
6
|
-
perform(params, 'payout')
|
6
|
+
perform(params, 'payout', :normal_request_body)
|
7
7
|
end
|
8
8
|
|
9
9
|
def perform_payment(params)
|
10
|
-
perform(params, 'pay')
|
10
|
+
perform(params, 'pay', :normal_request_body)
|
11
|
+
end
|
12
|
+
|
13
|
+
def perform_refund(params)
|
14
|
+
perform(params, 'reversal', :refund_request_body)
|
11
15
|
end
|
12
16
|
|
13
17
|
private
|
14
18
|
|
15
|
-
def perform(params, action)
|
19
|
+
def perform(params, action, body)
|
16
20
|
MandarinApi::Wrapper.new(
|
17
21
|
merchant_id: MandarinApi.config.merchant_id,
|
18
22
|
secret: MandarinApi.config.secret
|
19
|
-
).request('/api/transactions',
|
23
|
+
).request('/api/transactions', send(body, params, action))
|
20
24
|
end
|
21
25
|
|
22
|
-
def
|
26
|
+
def normal_request_body(params, action)
|
23
27
|
{
|
24
28
|
payment: {
|
25
29
|
order_id: params[:order_id], action: action, price: params[:amount]
|
26
30
|
},
|
27
|
-
target: {
|
28
|
-
|
29
|
-
|
31
|
+
target: { card: params[:assigned_card_uuid] }
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def refund_request_body(params, action)
|
36
|
+
{
|
37
|
+
payment: { order_id: params[:order_id], action: action },
|
38
|
+
target: { transaction: params[:transaction_uuid] }
|
30
39
|
}
|
31
40
|
end
|
32
41
|
end
|
data/mandarin-api.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'mandarin-api'
|
4
|
-
s.version = '0.0.
|
4
|
+
s.version = '0.0.3'
|
5
5
|
s.authors = ['Vladimir Bogaevsky', 'Boris Kraportov']
|
6
6
|
s.email = 'gitvbogaevsky@gmail.com'
|
7
7
|
s.licenses = ['MIT']
|
@@ -21,7 +21,6 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_development_dependency('faker', '>= 1.6', '< 1.7')
|
22
22
|
|
23
23
|
s.add_dependency 'rest-client', '>= 2.0', '< 3.0'
|
24
|
-
s.add_dependency 'dry-configurable', '>= 0.1.0', '< 1.0'
|
25
24
|
|
26
25
|
s.required_ruby_version = '>= 2.2.0'
|
27
26
|
end
|
@@ -9,7 +9,7 @@ RSpec.describe MandarinApi::PaymentManager do
|
|
9
9
|
assigned_card_uuid: '0eb51e74-e704-4c36-b5cb-8f0227621518'
|
10
10
|
}
|
11
11
|
end
|
12
|
-
let(:
|
12
|
+
let(:normal_request_body) do
|
13
13
|
{
|
14
14
|
payment: { order_id: 123_321, action: action, price: 35_000 },
|
15
15
|
target: { card: '0eb51e74-e704-4c36-b5cb-8f0227621518' }
|
@@ -23,9 +23,9 @@ RSpec.describe MandarinApi::PaymentManager do
|
|
23
23
|
allow(MandarinApi).to \
|
24
24
|
receive_message_chain(:config, :secret).and_return(merchant_id)
|
25
25
|
allow_any_instance_of(MandarinApi::Wrapper).to receive(:request)
|
26
|
-
.with('/api/transactions',
|
26
|
+
.with('/api/transactions', normal_request_body)
|
27
27
|
expect_any_instance_of(MandarinApi::Wrapper).to receive(:request)
|
28
|
-
.with('/api/transactions',
|
28
|
+
.with('/api/transactions', normal_request_body)
|
29
29
|
payment_manager.perform_payout params
|
30
30
|
end
|
31
31
|
end
|
@@ -38,10 +38,35 @@ RSpec.describe MandarinApi::PaymentManager do
|
|
38
38
|
allow(MandarinApi).to \
|
39
39
|
receive_message_chain(:config, :secret).and_return(merchant_id)
|
40
40
|
allow_any_instance_of(MandarinApi::Wrapper).to receive(:request)
|
41
|
-
.with('/api/transactions',
|
41
|
+
.with('/api/transactions', normal_request_body)
|
42
42
|
expect_any_instance_of(MandarinApi::Wrapper).to receive(:request)
|
43
|
-
.with('/api/transactions',
|
43
|
+
.with('/api/transactions', normal_request_body)
|
44
44
|
payment_manager.perform_payment params
|
45
45
|
end
|
46
46
|
end
|
47
|
+
|
48
|
+
describe '#perform_refund' do
|
49
|
+
let(:refund_request_body) do
|
50
|
+
{
|
51
|
+
payment: { order_id: 123_321, action: 'reversal' },
|
52
|
+
target: { transaction: '43913ddc000c4d3990fddbd3980c1725' }
|
53
|
+
}
|
54
|
+
end
|
55
|
+
let(:params) do
|
56
|
+
{
|
57
|
+
order_id: 123_321, transaction_uuid: '43913ddc000c4d3990fddbd3980c1725'
|
58
|
+
}
|
59
|
+
end
|
60
|
+
it 'calls wrapper instance with args' do
|
61
|
+
allow(MandarinApi).to \
|
62
|
+
receive_message_chain(:config, :merchant_id).and_return(merchant_id)
|
63
|
+
allow(MandarinApi).to \
|
64
|
+
receive_message_chain(:config, :secret).and_return(merchant_id)
|
65
|
+
allow_any_instance_of(MandarinApi::Wrapper).to receive(:request)
|
66
|
+
.with('/api/transactions', refund_request_body)
|
67
|
+
expect_any_instance_of(MandarinApi::Wrapper).to receive(:request)
|
68
|
+
.with('/api/transactions', refund_request_body)
|
69
|
+
payment_manager.perform_refund params
|
70
|
+
end
|
71
|
+
end
|
47
72
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mandarin-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Bogaevsky
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-10-
|
12
|
+
date: 2016-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: webmock
|
@@ -141,26 +141,6 @@ dependencies:
|
|
141
141
|
- - "<"
|
142
142
|
- !ruby/object:Gem::Version
|
143
143
|
version: '3.0'
|
144
|
-
- !ruby/object:Gem::Dependency
|
145
|
-
name: dry-configurable
|
146
|
-
requirement: !ruby/object:Gem::Requirement
|
147
|
-
requirements:
|
148
|
-
- - ">="
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: 0.1.0
|
151
|
-
- - "<"
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '1.0'
|
154
|
-
type: :runtime
|
155
|
-
prerelease: false
|
156
|
-
version_requirements: !ruby/object:Gem::Requirement
|
157
|
-
requirements:
|
158
|
-
- - ">="
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: 0.1.0
|
161
|
-
- - "<"
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
version: '1.0'
|
164
144
|
description:
|
165
145
|
email: gitvbogaevsky@gmail.com
|
166
146
|
executables: []
|