moneta-api 1.10.0 → 1.11.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 +4 -4
- data/README.md +2 -1
- data/lib/moneta/api/requests/transfer_batch_request.rb +9 -0
- data/lib/moneta/api/responses/transfer_batch_response.rb +17 -0
- data/lib/moneta/api/service_methods.rb +6 -0
- data/lib/moneta/api/types/authorise_transaction_batch_request_type.rb +0 -2
- data/lib/moneta/api/types/transfer_batch_request_type.rb +47 -0
- data/lib/moneta/api/version.rb +1 -1
- data/lib/moneta/api.rb +4 -1
- data/spec/lib/moneta/api/requests/transfer_batch_request_spec.rb +73 -0
- data/spec/vcr/moneta_api_requests_transferbatchrequest/use_when_one_operation_transaction_transaction_.yml +14155 -0
- data/spec/vcr/moneta_api_requests_transferbatchrequest/use_when_two_operations_transaction_first_transaction_.yml +14155 -0
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32e3556379b34c0d6f8f9c49e5ac900507a4cbc7
|
4
|
+
data.tar.gz: 592cac8f18ac96eec9789058866b5dc3cc4f0fd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6611d4fb8741eac88f8ea29c65ea9c777df3e69e1ca38648f1211686d7964c3d670e8b25591bc738e958d035b0c87d1d0823d32d5ef1f7358c5ef21f0072788
|
7
|
+
data.tar.gz: 179a18fcc4097481d92aa42b8500a75d9a489199534a7706f8037a84afc30520b994b87993b0a76f2ff0d89492a7910236695eaefcaa4a3c372ad51f66482e68
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
[](http://badge.fury.io/rb/moneta-api)
|
2
|
-
[](https://travis-ci.org/RuntimeLLC/moneta-api)
|
3
3
|
[](https://codeclimate.com/github/ssnikolay/moneta-api)
|
4
4
|
[](https://codeclimate.com/github/ssnikolay/moneta-api)
|
5
5
|
[](http://inch-ci.org/github/ssnikolay/moneta-api)
|
@@ -74,6 +74,7 @@ gem 'moneta-api'
|
|
74
74
|
Moneta::Api::Service.new('username', 'password', {
|
75
75
|
logger: Rails.logger,
|
76
76
|
log_level: :info,
|
77
|
+
log: true,
|
77
78
|
filters: [:password]
|
78
79
|
})
|
79
80
|
```
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Moneta
|
2
|
+
module Api
|
3
|
+
module Responses
|
4
|
+
# Ответ на запрос проведения платежа в пакетном режиме.
|
5
|
+
# Transactions authorisation response in batch processing mode.
|
6
|
+
|
7
|
+
class TransferBatchResponse
|
8
|
+
include Moneta::Api::DataMapper
|
9
|
+
|
10
|
+
# @return [Array[Moneta::Api::Types::TransactionBatchResponseType]] Детали проведенных операций, либо описание ошибок, если операция не проведена.
|
11
|
+
# Порядок соответствует набору операций, переданных в TransferBatchRequest.
|
12
|
+
# Either transaction details or error description in order of appearance in corresponding request.
|
13
|
+
property :transaction, type: Moneta::Api::Types::TransactionBatchResponseType
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -115,6 +115,12 @@ module Moneta
|
|
115
115
|
call(__method__, request)
|
116
116
|
end
|
117
117
|
|
118
|
+
# @param [Moneta::Api::Requests::TransferBatchRequest]
|
119
|
+
# @return [Moneta::Api::Responses::TransferBatchResponse]
|
120
|
+
def transfer_batch(request)
|
121
|
+
call(__method__, request)
|
122
|
+
end
|
123
|
+
|
118
124
|
# @param [Moneta::Api::Requests::PaymentRequest]
|
119
125
|
# @return [Moneta::Api::Responses::PaymentResponse]
|
120
126
|
def payment(request)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Moneta
|
2
|
+
module Api
|
3
|
+
module Types
|
4
|
+
# Тип, описывающий параметры операции в запросах в пакетном режиме.
|
5
|
+
# Transaction parameters type for requests in batch processing mode.
|
6
|
+
|
7
|
+
class TransferBatchRequestType < Entity
|
8
|
+
# @return [Boolean] Флаг, указывающий выполнять ли все денежные переводы в одной транзакции.
|
9
|
+
# Если transactional = true, то:
|
10
|
+
# при возникновении ошибки все проведенные операции будут отменены
|
11
|
+
# можно проводить только операции со счетами монеты. Нельзя выводить деньги на внешние платежные системы.
|
12
|
+
# Если transactional = false, то:
|
13
|
+
# при возникновении ошибки все проведенные операции будут сохранены
|
14
|
+
# можно проводить любые операции, которые доступны в TransferRequest
|
15
|
+
# если выставить флаг exitOnFailure = false, то при возникновении ошибки можно пропустить операцию
|
16
|
+
# и продолжить выполнение операций дальше
|
17
|
+
# / Joining all transfers in batch processing into one transaction. True -- all processed transfers will be rolled back on exceptions, no external transfers are allowed. False -- only current transfer rolled back on exceptions, external transfers are allowed.
|
18
|
+
property :transactional
|
19
|
+
|
20
|
+
# @return [Boolean] Флаг, указывающий прерывать ли выполнение пакета операций, если произошла ошибка.
|
21
|
+
# Используется только при transactional = false
|
22
|
+
# / Stops batch processing on exceptions. Used only in conjunction with transactional=false.
|
23
|
+
property :exit_on_failure
|
24
|
+
|
25
|
+
# @return [Array[Moneta::Api::Types::Entity*]] Набор операций, которые необходимо выполнить в одном пакете.
|
26
|
+
# Операции выполняются в том порядке, в котором они переданы в запросе.
|
27
|
+
# / Set of transfers to be processed in one batch. Processed in order of appearance.
|
28
|
+
property :transaction
|
29
|
+
|
30
|
+
# Набор операций, которые необходимо выполнить в одном пакете.
|
31
|
+
# Операции выполняются в том порядке, в котором они переданы в запросе.
|
32
|
+
# / Set of transfers to be processed in one batch. Processed in order of appearance.
|
33
|
+
#
|
34
|
+
# @param [Moneta::Api::Types::Entity*]
|
35
|
+
# @return void
|
36
|
+
def add_transaction(item)
|
37
|
+
parents = item.class.ancestors
|
38
|
+
if parents.include?(Moneta::Api::Types::Entity)
|
39
|
+
(@transaction ||=[]).push(item)
|
40
|
+
else
|
41
|
+
raise TypeError.new("TypeError: #{ item.class } have not parent Moneta::Api::Types::Entity")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/moneta/api/version.rb
CHANGED
data/lib/moneta/api.rb
CHANGED
@@ -11,6 +11,7 @@ require 'moneta/api/runtime_exception'
|
|
11
11
|
require 'moneta/api/http_exception'
|
12
12
|
require 'moneta/api/connection_exception'
|
13
13
|
|
14
|
+
require 'moneta/api/types/entity'
|
14
15
|
require 'moneta/api/types/account_access_info'
|
15
16
|
require 'moneta/api/types/account_info'
|
16
17
|
require 'moneta/api/types/authorise_transaction_batch_request_type'
|
@@ -21,7 +22,7 @@ require 'moneta/api/types/cancel_transaction_request_type'
|
|
21
22
|
require 'moneta/api/types/cancel_transaction_response_type'
|
22
23
|
require 'moneta/api/types/confirm_transaction_batch_request_type'
|
23
24
|
require 'moneta/api/types/confirm_transaction_request_type'
|
24
|
-
require 'moneta/api/types/
|
25
|
+
require 'moneta/api/types/transfer_batch_request_type'
|
25
26
|
require 'moneta/api/types/hash_entity'
|
26
27
|
require 'moneta/api/types/key_value_entity'
|
27
28
|
require 'moneta/api/types/find_operations_list_request_filter'
|
@@ -60,6 +61,7 @@ require 'moneta/api/requests/invoice_request'
|
|
60
61
|
require 'moneta/api/requests/payment_request'
|
61
62
|
require 'moneta/api/requests/refund_request'
|
62
63
|
require 'moneta/api/requests/transfer_request'
|
64
|
+
require 'moneta/api/requests/transfer_batch_request'
|
63
65
|
require 'moneta/api/requests/verify_payment_request'
|
64
66
|
require 'moneta/api/requests/verify_transaction_request'
|
65
67
|
require 'moneta/api/requests/verify_transfer_request'
|
@@ -98,6 +100,7 @@ require 'moneta/api/responses/invoice_response'
|
|
98
100
|
require 'moneta/api/responses/payment_response'
|
99
101
|
require 'moneta/api/responses/refund_response'
|
100
102
|
require 'moneta/api/responses/transfer_response'
|
103
|
+
require 'moneta/api/responses/transfer_batch_response'
|
101
104
|
require 'moneta/api/responses/verify_payment_response'
|
102
105
|
require 'moneta/api/responses/verify_transaction_response'
|
103
106
|
require 'moneta/api/responses/verify_transfer_response'
|
@@ -0,0 +1,73 @@
|
|
1
|
+
describe Moneta::Api::Requests::TransferBatchRequest do
|
2
|
+
describe 'Entity extension' do
|
3
|
+
subject { described_class.new.properties.keys }
|
4
|
+
|
5
|
+
it { is_expected.to be_include(:version) }
|
6
|
+
it { is_expected.to be_include(:transactional) }
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#add_transaction' do
|
10
|
+
let(:request) { described_class.new }
|
11
|
+
let(:add_transaction) { request.add_transaction(item) }
|
12
|
+
|
13
|
+
context 'when valid item' do
|
14
|
+
let(:item) { Moneta::Api::Requests::PaymentRequest.new }
|
15
|
+
|
16
|
+
it 'should success add' do
|
17
|
+
add_transaction
|
18
|
+
expect(request.transaction.count).to eq 1
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when invalid item' do
|
23
|
+
let(:item) { Hash.new }
|
24
|
+
|
25
|
+
it { expect { add_transaction }.to raise_error }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'use', vcr: true do
|
30
|
+
include_context 'moneta'
|
31
|
+
|
32
|
+
let(:data) {
|
33
|
+
{
|
34
|
+
amount: 10,
|
35
|
+
payee: 28988504,
|
36
|
+
payer: 10999,
|
37
|
+
is_payer_amount: false,
|
38
|
+
payment_password: '12345'
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
let(:request) do
|
43
|
+
described_class.new.tap do |request|
|
44
|
+
request.transactional = false
|
45
|
+
request.exit_on_failure = true
|
46
|
+
operations.each { |o| request.add_transaction(o) }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
subject { service.transfer_batch(request) }
|
51
|
+
|
52
|
+
context 'when one operation' do
|
53
|
+
let(:operations) do
|
54
|
+
[
|
55
|
+
Moneta::Api::Requests::TransferRequest.build(data)
|
56
|
+
]
|
57
|
+
end
|
58
|
+
|
59
|
+
its('transaction.transaction') { is_expected.to be_a_kind_of(Moneta::Api::Types::TransactionResponseType) }
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'when two operations' do
|
63
|
+
let(:operations) do
|
64
|
+
[
|
65
|
+
Moneta::Api::Requests::TransferRequest.build(data),
|
66
|
+
Moneta::Api::Requests::TransferRequest.build(data)
|
67
|
+
]
|
68
|
+
end
|
69
|
+
|
70
|
+
its('transaction.first.transaction') { is_expected.to be_a_kind_of(Moneta::Api::Types::TransactionResponseType) }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|