moneta-api 1.10.0 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem Version](https://badge.fury.io/rb/moneta-api.svg)](http://badge.fury.io/rb/moneta-api)
|
2
|
-
[![Build Status](https://travis-ci.org/
|
2
|
+
[![Build Status](https://travis-ci.org/RuntimeLLC/moneta-api.svg?branch=master)](https://travis-ci.org/RuntimeLLC/moneta-api)
|
3
3
|
[![Code Climate](https://codeclimate.com/github/ssnikolay/moneta-api/badges/gpa.svg)](https://codeclimate.com/github/ssnikolay/moneta-api)
|
4
4
|
[![Test Coverage](https://codeclimate.com/github/ssnikolay/moneta-api/badges/coverage.svg)](https://codeclimate.com/github/ssnikolay/moneta-api)
|
5
5
|
[![Inline docs](http://inch-ci.org/github/ssnikolay/moneta-api.svg?branch=master)](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
|