moneta-api 1.12.8 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (21) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/lib/moneta/api/requests/verify_payment_batch_request.rb +9 -0
  4. data/lib/moneta/api/responses/verify_payment_batch_response.rb +16 -0
  5. data/lib/moneta/api/service_methods.rb +6 -0
  6. data/lib/moneta/api/types/authorise_transaction_batch_request_type.rb +1 -38
  7. data/lib/moneta/api/types/batch_request_type.rb +52 -0
  8. data/lib/moneta/api/types/confirm_transaction_batch_request_type.rb +4 -33
  9. data/lib/moneta/api/types/payment_batch_request_type.rb +10 -0
  10. data/lib/moneta/api/types/transfer_batch_request_type.rb +1 -38
  11. data/lib/moneta/api/version.rb +1 -1
  12. data/lib/moneta/api.rb +4 -0
  13. data/spec/lib/moneta/api/requests/verify_payment_batch_request_spec.rb +74 -0
  14. data/spec/vcr/moneta_api_requests_verifypaymentbatchrequest/use_when_one_operation_transaction_.yml +15321 -0
  15. data/spec/vcr/moneta_api_requests_verifypaymentbatchrequest/use_when_one_operation_transaction_forecast_.yml +15321 -0
  16. data/spec/vcr/moneta_api_requests_verifypaymentbatchrequest/use_when_one_operation_transaction_transaction_.yml +15321 -0
  17. data/spec/vcr/moneta_api_requests_verifypaymentbatchrequest/use_when_two_operations_.yml +15330 -0
  18. data/spec/vcr/moneta_api_requests_verifypaymentbatchrequest/use_when_two_operations_transaction_count_.yml +15330 -0
  19. data/spec/vcr/moneta_api_requests_verifypaymentbatchrequest/use_when_two_operations_transaction_first_forecast_.yml +15330 -0
  20. data/spec/vcr/moneta_api_requests_verifypaymentbatchrequest/use_when_two_operations_transaction_first_transaction_.yml +15330 -0
  21. metadata +24 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 372560965c09de9ba36c3050014096cad8c5e763
4
- data.tar.gz: ca25d82ba2565f5e5d24c0115499fea00973fec1
3
+ metadata.gz: ec25e8159efc74bcff544e4bc1a8d85ce7105c53
4
+ data.tar.gz: 22f5740d0704eb41743b68ae454f9b368913b94c
5
5
  SHA512:
6
- metadata.gz: d127a79e63f3569685761db805f27265a5b8433c1061670d921d87a24fb4ea2501e14a8106fc09b7d4714bac886e07a11f081ff232f66c34d565de4935f8f397
7
- data.tar.gz: aa3813d5096220dd6bb48429b311bff3da807aa7ad22679f59c97b5507d8de433bda289632ea20be7008f8efc5be48c93aaad733d5c242ede2006c4bcd344bda
6
+ metadata.gz: 1fbef24219211082d2d26a74caceaac298f84afe0e965655321861753412b8b9773a4d894dcfcc0e0379c4239f382dccf9e9a2c41200713249b980a3b600fad1
7
+ data.tar.gz: 7509680aca56558cce136edf35faf6a40524534f084b75f632d656f796b944ac2f6df377afe59517cfb96f03e9a7d62173775105a6a10088cd21022e5687429f
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ ## 1.13.0
2
+
3
+ - Поддержка метода `VerifyPaymentBatchRequest`. Added support for `VerifyPaymentBatchRequest` method. [#50]
@@ -0,0 +1,9 @@
1
+ module Moneta
2
+ module Api
3
+ module Requests
4
+ # Запрос возможности провести операцию в системе МОНЕТА.РУ. Запрос выполняется в пакетном режиме.
5
+ # Transaction validation request. Request in batch mode.
6
+ class VerifyPaymentBatchRequest < Types::PaymentBatchRequestType; end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ module Moneta
2
+ module Api
3
+ module Responses
4
+ # Ответ на запрос проверки проведения операции в системе МОНЕТА.РУ. Ответ в пакетном режиме.
5
+ # Response to a transaction validation request. Response in batch mode.
6
+ class VerifyPaymentBatchResponse
7
+ include Moneta::Api::DataMapper
8
+
9
+ # @return [Array[Moneta::Api::Types::VerifyTransactionResponseType]] Детали операций, либо описание ошибок. Порядок соответствует набору операций,
10
+ # переданных в VerifyPaymentBatchRequest.
11
+ # Either information about transactions or error descriptions in the same order as in the VerifyPaymentBatch request.
12
+ property :transaction, type: Moneta::Api::Types::VerifyTransactionResponseType
13
+ end
14
+ end
15
+ end
16
+ end
@@ -133,6 +133,12 @@ module Moneta
133
133
  call(__method__, request)
134
134
  end
135
135
 
136
+ # @param [Moneta::Api::Requests::VerifyPaymentBatchRequest]
137
+ # @return [Moneta::Api::Responses::VerifyPaymentBatchResponse]
138
+ def verify_payment_batch(request)
139
+ call(__method__, request)
140
+ end
141
+
136
142
  # @param [Moneta::Api::Requests::VerifyTransferRequest]
137
143
  # @return [Moneta::Api::Responses::VerifyTransferResponse]
138
144
  def verify_transfer(request)
@@ -4,44 +4,7 @@ module Moneta
4
4
  # Тип, описывающий параметры операции в запросах в пакетном режиме.
5
5
  # Transaction parameters type for requests in batch processing mode.
6
6
 
7
- class AuthoriseTransactionBatchRequestType < 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
7
+ class AuthoriseTransactionBatchRequestType < BatchRequestType; end
45
8
  end
46
9
  end
47
10
  end
@@ -0,0 +1,52 @@
1
+ module Moneta
2
+ module Api
3
+ module Types
4
+ # Тип, описывающий параметры операции в запросах в пакетном режиме.
5
+ # Transaction parameters type for requests in batch processing mode.
6
+
7
+ class BatchRequestType < Entity
8
+ # @return [Boolean] Флаг, указывающий выполнять ли все денежные переводы в одной транзакции.
9
+ # Если transactional = true, то:
10
+ # при возникновении ошибки все проведенные операции будут отменены
11
+ # можно проводить только операции со счетами монеты. Нельзя выводить деньги на внешние платежные системы.
12
+ # Если transactional = false, то:
13
+ # при возникновении ошибки все проведенные операции будут сохранены.
14
+ # Если выставить флаг exitOnFailure = false, то при возникновении ошибки можно пропустить операцию
15
+ # и продолжить выполнение операций дальше
16
+ # / 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.
17
+ property :transactional
18
+
19
+ # @return [Boolean] Флаг, указывающий прерывать ли выполнение пакета операций, если произошла ошибка.
20
+ # Используется только при transactional = false
21
+ # / Stops batch processing on exceptions. Used only in conjunction with transactional=false.
22
+ property :exit_on_failure
23
+
24
+ # @return [Array[Moneta::Api::Types::Entity*]] Набор операций, которые необходимо выполнить в одном пакете.
25
+ # Операции выполняются в том порядке, в котором они переданы в запросе.
26
+ # / Set of transfers to be processed in one batch. Processed in order of appearance.
27
+ property :transaction
28
+
29
+ # Набор операций, которые необходимо выполнить в одном пакете.
30
+ # Операции выполняются в том порядке, в котором они переданы в запросе.
31
+ # / Set of transfers to be processed in one batch. Processed in order of appearance.
32
+ #
33
+ # @param [Moneta::Api::Types::Entity*]
34
+ # @return void
35
+ def add_transaction(item)
36
+ parents = item.class.ancestors
37
+ if parents.include?(basic_transaction_type)
38
+ (@transaction ||=[]).push(item)
39
+ else
40
+ raise TypeError.new("TypeError: #{ item.class } have not parent #{ basic_transaction_type.name }")
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def basic_transaction_type
47
+ Moneta::Api::Types::Entity
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -4,41 +4,12 @@ module Moneta
4
4
  # Тип для запроса подтверждения операции в пакетном режиме.
5
5
  # Batch mode transaction confirmation request type.
6
6
 
7
- class ConfirmTransactionBatchRequestType < 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
7
+ class ConfirmTransactionBatchRequestType < BatchRequestType
19
8
 
20
- # @return [Boolean] Флаг, указывающий прерывать ли выполнение пакета операций, если произошла ошибка.
21
- # Используется только при transactional = false
22
- # / Stops batch processing on exceptions. Used only in conjunction with transactional=false.
23
- property :exit_on_failure
9
+ private
24
10
 
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::ConfirmTransactionRequestType]
35
- # @return void
36
- def add_transaction(item)
37
- if item.is_a?(Moneta::Api::Types::ConfirmTransactionRequestType)
38
- (@transaction ||=[]).push(item)
39
- else
40
- raise TypeError.new("TypeError: #{ item.class } should be a Moneta::Api::Types::ConfirmTransactionRequestType")
41
- end
11
+ def basic_transaction_type
12
+ Moneta::Api::Types::ConfirmTransactionRequestType
42
13
  end
43
14
  end
44
15
  end
@@ -0,0 +1,10 @@
1
+ module Moneta
2
+ module Api
3
+ module Types
4
+ # Тип, описывающий параметры операции в запросах в пакетном режиме.
5
+ # Transaction parameters type for requests in batch processing mode.
6
+
7
+ class PaymentBatchRequestType < BatchRequestType; end
8
+ end
9
+ end
10
+ end
@@ -4,44 +4,7 @@ module Moneta
4
4
  # Тип, описывающий параметры операции в запросах в пакетном режиме.
5
5
  # Transaction parameters type for requests in batch processing mode.
6
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
7
+ class TransferBatchRequestType < BatchRequestType; end
45
8
  end
46
9
  end
47
10
  end
@@ -1,5 +1,5 @@
1
1
  module Moneta
2
2
  module Api
3
- VERSION = '1.12.8'
3
+ VERSION = '1.13.0'
4
4
  end
5
5
  end
data/lib/moneta/api.rb CHANGED
@@ -13,6 +13,7 @@ require 'moneta/api/http_exception'
13
13
  require 'moneta/api/connection_exception'
14
14
 
15
15
  require 'moneta/api/types/entity'
16
+ require 'moneta/api/types/batch_request_type'
16
17
  require 'moneta/api/types/account_access_info'
17
18
  require 'moneta/api/types/account_info'
18
19
  require 'moneta/api/types/authorise_transaction_batch_request_type'
@@ -36,6 +37,7 @@ require 'moneta/api/types/operation_info_batch_response_type'
36
37
  require 'moneta/api/types/operation_info_list'
37
38
  require 'moneta/api/types/pager'
38
39
  require 'moneta/api/types/payment_request_type'
40
+ require 'moneta/api/types/payment_batch_request_type'
39
41
  require 'moneta/api/types/transaction_batch_response_type'
40
42
  require 'moneta/api/types/transaction_request_type'
41
43
  require 'moneta/api/types/transaction_response_type'
@@ -64,6 +66,7 @@ require 'moneta/api/requests/refund_request'
64
66
  require 'moneta/api/requests/transfer_request'
65
67
  require 'moneta/api/requests/transfer_batch_request'
66
68
  require 'moneta/api/requests/verify_payment_request'
69
+ require 'moneta/api/requests/verify_payment_batch_request'
67
70
  require 'moneta/api/requests/verify_transaction_request'
68
71
  require 'moneta/api/requests/verify_transfer_request'
69
72
  require 'moneta/api/requests/create_profile_request'
@@ -103,6 +106,7 @@ require 'moneta/api/responses/refund_response'
103
106
  require 'moneta/api/responses/transfer_response'
104
107
  require 'moneta/api/responses/transfer_batch_response'
105
108
  require 'moneta/api/responses/verify_payment_response'
109
+ require 'moneta/api/responses/verify_payment_batch_response'
106
110
  require 'moneta/api/responses/verify_transaction_response'
107
111
  require 'moneta/api/responses/verify_transfer_response'
108
112
  require 'moneta/api/responses/create_profile_response'
@@ -0,0 +1,74 @@
1
+ describe Moneta::Api::Requests::VerifyPaymentBatchRequest 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::Types::TransactionRequestType.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 TypeError }
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
+ let(:request) do
42
+ described_class.new.tap do |request|
43
+ request.transactional = false
44
+ request.exit_on_failure = true
45
+ operations.each { |o| request.add_transaction(o) }
46
+ end
47
+ end
48
+
49
+ subject { service.verify_payment_batch(request) }
50
+
51
+ context 'when one operation' do
52
+ let(:operations) do
53
+ [
54
+ Moneta::Api::Types::TransactionRequestType.build(data)
55
+ ]
56
+ end
57
+
58
+ its(:transaction) { is_expected.to be_a_kind_of(Moneta::Api::Types::VerifyTransactionResponseType) }
59
+ its('transaction.forecast') { is_expected.to be_a_kind_of(Moneta::Api::Types::ForecastTransactionResponseType) }
60
+ end
61
+
62
+ context 'when two operations' do
63
+ let(:operations) do
64
+ [
65
+ Moneta::Api::Types::TransactionRequestType.build(data),
66
+ Moneta::Api::Types::TransactionRequestType.build(data)
67
+ ]
68
+ end
69
+
70
+ its('transaction.count') { is_expected.to eq 2 }
71
+ its('transaction.first.forecast') { is_expected.to be_a_kind_of(Moneta::Api::Types::ForecastTransactionResponseType) }
72
+ end
73
+ end
74
+ end