mangopay 3.0.19 → 3.0.20
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/lib/mangopay.rb +16 -3
- data/lib/mangopay/bank_account.rb +2 -2
- data/lib/mangopay/dispute.rb +6 -6
- data/lib/mangopay/http_calls.rb +10 -5
- data/lib/mangopay/kyc_document.rb +4 -4
- data/lib/mangopay/pre_authorization.rb +2 -2
- data/lib/mangopay/temp.rb +2 -2
- data/lib/mangopay/transaction.rb +0 -1
- data/lib/mangopay/version.rb +1 -1
- data/spec/mangopay/idempotency_spec +41 -0
- data/spec/mangopay/shared_resources.rb +6 -3
- data/spec/mangopay/transaction_spec.rb +0 -7
- data/spec/mangopay/wallet_spec.rb +0 -7
- data/spec/spec_helper.rb +14 -6
- metadata +15 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59eb15c892bf9c2910edac5e22503bfcf6b9dcac
|
4
|
+
data.tar.gz: 8457994e7e6dc82e85c826846b2f5406a484e729
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3722786d484342d20e913a2b3836b38b5239603c53225e2816d90995b60c61ef1d8409fd91528cbf98ae0eb7b96446f6070f7c4fef58747c226c2e157042eeb1
|
7
|
+
data.tar.gz: c49c240cf33683a926ee11525c5c20d162c28cf494880feff76cbe57a611e51478708791ee4a8eeda6f7fc63c243d11417f8b841b8491ac6483187b304608ba8
|
data/lib/mangopay.rb
CHANGED
@@ -74,15 +74,22 @@ module MangoPay
|
|
74
74
|
# - +url+: the part after Configuration#root_url
|
75
75
|
# - +params+: hash; entity data for creation, update etc.; will dump it by JSON and assign to Net::HTTPRequest#body
|
76
76
|
# - +filters+: hash; pagination params etc.; will encode it by URI and assign to URI#query
|
77
|
-
# - +
|
77
|
+
# - +headers_or_idempotency_key+: hash of headers; or replaced by request_headers if nil; or added to request_headers as idempotency key otherwise (see https://docs.mangopay.com/api-references/idempotency-support/)
|
78
78
|
# - +before_request_proc+: optional proc; will call it passing the Net::HTTPRequest instance just before Net::HTTPRequest#request
|
79
79
|
#
|
80
80
|
# Raises MangoPay::ResponseError if response code != 200.
|
81
81
|
#
|
82
|
-
def request(method, url, params={}, filters={},
|
82
|
+
def request(method, url, params={}, filters={}, headers_or_idempotency_key = nil, before_request_proc = nil)
|
83
83
|
uri = api_uri(url)
|
84
84
|
uri.query = URI.encode_www_form(filters) unless filters.empty?
|
85
85
|
|
86
|
+
if headers_or_idempotency_key.is_a?(Hash)
|
87
|
+
headers = headers_or_idempotency_key
|
88
|
+
else
|
89
|
+
headers = request_headers
|
90
|
+
headers['Idempotency-Key'] = headers_or_idempotency_key if headers_or_idempotency_key != nil
|
91
|
+
end
|
92
|
+
|
86
93
|
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
87
94
|
req = Net::HTTP::const_get(method.capitalize).new(uri.request_uri, headers)
|
88
95
|
req.body = JSON.dump(params)
|
@@ -93,7 +100,6 @@ module MangoPay
|
|
93
100
|
# decode json data
|
94
101
|
data = JSON.load(res.body.to_s) rescue {}
|
95
102
|
|
96
|
-
|
97
103
|
unless res.is_a?(Net::HTTPOK)
|
98
104
|
raise MangoPay::ResponseError.new(uri, res.code, data)
|
99
105
|
end
|
@@ -106,6 +112,13 @@ module MangoPay
|
|
106
112
|
data
|
107
113
|
end
|
108
114
|
|
115
|
+
# Retrieve a previous response by idempotency_key
|
116
|
+
# See https://docs.mangopay.com/api-references/idempotency-support/
|
117
|
+
def fetch_response(idempotency_key)
|
118
|
+
url = "#{api_path}/responses/#{idempotency_key}"
|
119
|
+
request(:get, url)
|
120
|
+
end
|
121
|
+
|
109
122
|
private
|
110
123
|
|
111
124
|
def user_agent
|
@@ -4,9 +4,9 @@ module MangoPay
|
|
4
4
|
class BankAccount < Resource
|
5
5
|
include HTTPCalls::Fetch
|
6
6
|
class << self
|
7
|
-
def create(user_id, params)
|
7
|
+
def create(user_id, params, idempotency_key = nil)
|
8
8
|
type = params.fetch(:Type) { |no_symbol_key| params.fetch('Type') }
|
9
|
-
MangoPay.request(:post, "#{url(user_id)}/#{type}", params)
|
9
|
+
MangoPay.request(:post, "#{url(user_id)}/#{type}", params, {}, idempotency_key)
|
10
10
|
end
|
11
11
|
|
12
12
|
# Fetches:
|
data/lib/mangopay/dispute.rb
CHANGED
@@ -51,9 +51,9 @@ module MangoPay
|
|
51
51
|
end
|
52
52
|
|
53
53
|
# +params+: hash; see https://docs.mangopay.com/api-references/disputes/settlement-transfers/
|
54
|
-
def create_settlement_transfer(repudiation_id, params)
|
54
|
+
def create_settlement_transfer(repudiation_id, params, idempotency_key = nil)
|
55
55
|
url = "#{MangoPay.api_path}/repudiations/#{repudiation_id}/settlementtransfer/"
|
56
|
-
MangoPay.request(:post, url, params)
|
56
|
+
MangoPay.request(:post, url, params, {}, idempotency_key)
|
57
57
|
end
|
58
58
|
|
59
59
|
#####################################################
|
@@ -61,9 +61,9 @@ module MangoPay
|
|
61
61
|
#####################################################
|
62
62
|
|
63
63
|
# +params+: hash; see https://docs.mangopay.com/api-references/disputes/dispute-documents/
|
64
|
-
def create_document(dispute_id, params)
|
64
|
+
def create_document(dispute_id, params, idempotency_key = nil)
|
65
65
|
url = url(dispute_id) + "/documents/"
|
66
|
-
MangoPay.request(:post, url, params)
|
66
|
+
MangoPay.request(:post, url, params, {}, idempotency_key)
|
67
67
|
end
|
68
68
|
|
69
69
|
def fetch_document(document_id)
|
@@ -105,7 +105,7 @@ module MangoPay
|
|
105
105
|
# - Base64 encoded file content
|
106
106
|
# - or nil: in this case pass the file path in the next param
|
107
107
|
#
|
108
|
-
def create_document_page(dispute_id, document_id, file_content_base64, file_path = nil)
|
108
|
+
def create_document_page(dispute_id, document_id, file_content_base64, file_path = nil, idempotency_key = nil)
|
109
109
|
if file_content_base64.nil? && !file_path.nil?
|
110
110
|
bts = File.open(file_path, 'rb') { |f| f.read }
|
111
111
|
file_content_base64 = Base64.encode64(bts)
|
@@ -113,7 +113,7 @@ module MangoPay
|
|
113
113
|
# normally it returns 204 HTTP code on success
|
114
114
|
begin
|
115
115
|
url = url(dispute_id) + "/documents/#{document_id}/pages"
|
116
|
-
MangoPay.request(:post, url, {'File' => file_content_base64})
|
116
|
+
MangoPay.request(:post, url, {'File' => file_content_base64}, {}, idempotency_key)
|
117
117
|
rescue ResponseError => ex
|
118
118
|
raise ex unless ex.code == '204'
|
119
119
|
end
|
data/lib/mangopay/http_calls.rb
CHANGED
@@ -3,9 +3,14 @@ module MangoPay
|
|
3
3
|
module Create
|
4
4
|
module ClassMethods
|
5
5
|
|
6
|
-
def create(
|
7
|
-
|
8
|
-
|
6
|
+
def create(params, id = nil, idempotency_key = nil)
|
7
|
+
# LEGACY SUPPORT FOR OLD SIGNATURE: def create(*id, params)
|
8
|
+
if !params.is_a?(Hash) && id.is_a?(Hash)
|
9
|
+
temp = params
|
10
|
+
params = id
|
11
|
+
id = temp
|
12
|
+
end
|
13
|
+
MangoPay.request(:post, url(id), params, {}, idempotency_key)
|
9
14
|
end
|
10
15
|
end
|
11
16
|
|
@@ -67,8 +72,8 @@ module MangoPay
|
|
67
72
|
|
68
73
|
# See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-pay-in/
|
69
74
|
# See http://docs.mangopay.com/api-references/refund/%E2%80%A2-refund-a-transfer/
|
70
|
-
def refund(id = nil, params = {})
|
71
|
-
MangoPay.request(:post, url(id) + '/refunds', params)
|
75
|
+
def refund(id = nil, params = {}, idempotency_key = nil)
|
76
|
+
MangoPay.request(:post, url(id) + '/refunds', params, {}, idempotency_key)
|
72
77
|
end
|
73
78
|
end
|
74
79
|
|
@@ -5,8 +5,8 @@ module MangoPay
|
|
5
5
|
# See http://docs.mangopay.com/api-references/kyc/documents/
|
6
6
|
class KycDocument < Resource
|
7
7
|
class << self
|
8
|
-
def create(user_id, params)
|
9
|
-
MangoPay.request(:post, url(user_id), params)
|
8
|
+
def create(user_id, params, idempotency_key = nil)
|
9
|
+
MangoPay.request(:post, url(user_id), params, {}, idempotency_key)
|
10
10
|
end
|
11
11
|
|
12
12
|
def update(user_id, document_id, params = {})
|
@@ -44,14 +44,14 @@ module MangoPay
|
|
44
44
|
# - Base64 encoded file content
|
45
45
|
# - or nil: in this case pass the file path in the next param
|
46
46
|
#
|
47
|
-
def create_page(user_id, document_id, file_content_base64, file_path = nil)
|
47
|
+
def create_page(user_id, document_id, file_content_base64, file_path = nil, idempotency_key = nil)
|
48
48
|
if file_content_base64.nil? && !file_path.nil?
|
49
49
|
bts = File.open(file_path, 'rb') { |f| f.read }
|
50
50
|
file_content_base64 = Base64.encode64(bts)
|
51
51
|
end
|
52
52
|
# normally it returns 204 HTTP code on success
|
53
53
|
begin
|
54
|
-
MangoPay.request(:post, url(user_id, document_id) + '/pages', {'File' => file_content_base64})
|
54
|
+
MangoPay.request(:post, url(user_id, document_id) + '/pages', {'File' => file_content_base64}, {}, idempotency_key)
|
55
55
|
rescue ResponseError => ex
|
56
56
|
raise ex unless ex.code == '204'
|
57
57
|
end
|
@@ -5,8 +5,8 @@ module MangoPay
|
|
5
5
|
include HTTPCalls::Update
|
6
6
|
include HTTPCalls::Fetch
|
7
7
|
|
8
|
-
def self.create(params)
|
9
|
-
MangoPay.request(:post, "#{url}/card/direct", params)
|
8
|
+
def self.create(params, idempotency_key = nil)
|
9
|
+
MangoPay.request(:post, "#{url}/card/direct", params, {}, idempotency_key)
|
10
10
|
end
|
11
11
|
|
12
12
|
end
|
data/lib/mangopay/temp.rb
CHANGED
@@ -57,9 +57,9 @@ module MangoPay
|
|
57
57
|
# Received data:
|
58
58
|
# Normal card web payin transaction, with the addition of:
|
59
59
|
# - PaymentCardId e.g. "322311"
|
60
|
-
def self.immediate_payin(params)
|
60
|
+
def self.immediate_payin(params, idempotency_key = nil)
|
61
61
|
url = "#{MangoPay.api_path}/temp/immediate-payins"
|
62
|
-
MangoPay.request(:post, url, params)
|
62
|
+
MangoPay.request(:post, url, params, {}, idempotency_key)
|
63
63
|
end
|
64
64
|
|
65
65
|
def self.url(id = nil)
|
data/lib/mangopay/transaction.rb
CHANGED
@@ -9,7 +9,6 @@ module MangoPay
|
|
9
9
|
# - +Status+: TransactionStatus {CREATED, SUCCEEDED, FAILED}
|
10
10
|
# - +Type+: TransactionType {PAYIN, PAYOUT, TRANSFER}
|
11
11
|
# - +Nature+: TransactionNature {NORMAL, REFUND, REPUDIATION}
|
12
|
-
# - +Direction+: TransactionDirection {DEBIT, CREDIT}
|
13
12
|
# - +BeforeDate+ (timestamp): filters transactions with CreationDate _before_ this date
|
14
13
|
# - +AfterDate+ (timestamp): filters transactions with CreationDate _after_ this date
|
15
14
|
def fetch(wallet_id, filters={})
|
data/lib/mangopay/version.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
describe MangoPay do
|
2
|
+
|
3
|
+
# see https://docs.mangopay.com/api-references/idempotency-support/
|
4
|
+
|
5
|
+
include_context 'users'
|
6
|
+
require 'securerandom'
|
7
|
+
|
8
|
+
describe 'post requests' do
|
9
|
+
|
10
|
+
it 'if called with no idempotency key, act independently' do
|
11
|
+
u = define_new_natural_user
|
12
|
+
u1 = MangoPay::NaturalUser.create(u)
|
13
|
+
u2 = MangoPay::NaturalUser.create(u)
|
14
|
+
expect(u2['Id']).to be > u1['Id']
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'if called with same idempotency key, the 2nd call is blocked' do
|
18
|
+
idempotency_key = SecureRandom.uuid
|
19
|
+
u = define_new_natural_user
|
20
|
+
u1 = MangoPay::NaturalUser.create(u, nil, idempotency_key)
|
21
|
+
expect {
|
22
|
+
u2 = MangoPay::NaturalUser.create(u, nil, idempotency_key)
|
23
|
+
}.to raise_error(MangoPay::ResponseError)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'if called with different idempotency key, act independently and responses may be retreived later' do
|
27
|
+
idempotency_key1 = SecureRandom.uuid
|
28
|
+
idempotency_key2 = SecureRandom.uuid
|
29
|
+
u = define_new_natural_user
|
30
|
+
u1 = MangoPay::NaturalUser.create(u, nil, idempotency_key1)
|
31
|
+
u2 = MangoPay::NaturalUser.create(u, nil, idempotency_key2)
|
32
|
+
expect(u2['Id']).to be > u1['Id']
|
33
|
+
|
34
|
+
resp1 = MangoPay.fetch_response(idempotency_key1)
|
35
|
+
resp2 = MangoPay.fetch_response(idempotency_key2)
|
36
|
+
expect(resp1['Resource']['Id']).to eq u1['Id']
|
37
|
+
expect(resp2['Resource']['Id']).to eq u2['Id']
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -34,8 +34,8 @@ shared_context 'users' do
|
|
34
34
|
###############################################
|
35
35
|
|
36
36
|
let(:new_natural_user) { create_new_natural_user }
|
37
|
-
def
|
38
|
-
|
37
|
+
def define_new_natural_user
|
38
|
+
{
|
39
39
|
Tag: 'Test natural user',
|
40
40
|
Email: 'my@email.com',
|
41
41
|
FirstName: 'John',
|
@@ -54,7 +54,10 @@ shared_context 'users' do
|
|
54
54
|
CountryOfResidence: 'FR',
|
55
55
|
Occupation: 'Worker',
|
56
56
|
IncomeRange: 1
|
57
|
-
}
|
57
|
+
}
|
58
|
+
end
|
59
|
+
def create_new_natural_user
|
60
|
+
MangoPay::NaturalUser.create(define_new_natural_user)
|
58
61
|
end
|
59
62
|
|
60
63
|
let(:new_legal_user) {
|
@@ -48,13 +48,6 @@ describe MangoPay::Transaction do
|
|
48
48
|
expect(by_type_pyout.count).to eq 1
|
49
49
|
expect(by_type_pyin.first['Id']).to eq payin['Id']
|
50
50
|
expect(by_type_pyout.first['Id']).to eq payout['Id']
|
51
|
-
|
52
|
-
by_dir_cred = MangoPay::Transaction.fetch(wallet_id, {'Direction' => 'CREDIT'})
|
53
|
-
by_dir_debt = MangoPay::Transaction.fetch(wallet_id, {'Direction' => 'DEBIT'})
|
54
|
-
expect(by_dir_cred.count).to eq 1
|
55
|
-
expect(by_dir_debt.count).to eq 1
|
56
|
-
expect(by_dir_cred.first['Id']).to eq payin['Id']
|
57
|
-
expect(by_dir_debt.first['Id']).to eq payout['Id']
|
58
51
|
end
|
59
52
|
|
60
53
|
end
|
@@ -74,13 +74,6 @@ describe MangoPay::Wallet do
|
|
74
74
|
expect(by_type_pyout.count).to eq 1
|
75
75
|
expect(by_type_pyin.first['Id']).to eq payin['Id']
|
76
76
|
expect(by_type_pyout.first['Id']).to eq payout['Id']
|
77
|
-
|
78
|
-
by_dir_cred = MangoPay::Wallet.transactions(wallet_id, {'Direction' => 'CREDIT'})
|
79
|
-
by_dir_debt = MangoPay::Wallet.transactions(wallet_id, {'Direction' => 'DEBIT'})
|
80
|
-
expect(by_dir_cred.count).to eq 1
|
81
|
-
expect(by_dir_debt.count).to eq 1
|
82
|
-
expect(by_dir_cred.first['Id']).to eq payin['Id']
|
83
|
-
expect(by_dir_debt.first['Id']).to eq payout['Id']
|
84
77
|
end
|
85
78
|
|
86
79
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,7 +8,15 @@ def reset_mangopay_configuration
|
|
8
8
|
MangoPay.configure do |c|
|
9
9
|
c.preproduction = true
|
10
10
|
c.client_id = 'sdk-unit-tests'
|
11
|
-
|
11
|
+
|
12
|
+
# sandbox environment:
|
13
|
+
# c.root_url = 'https://api.sandbox.mangopay.com'
|
14
|
+
# c.client_passphrase = 'cqFfFrWfCcb7UadHNxx2C9Lo6Djw8ZduLi7J9USTmu8bhxxpju'
|
15
|
+
|
16
|
+
# test environment:
|
17
|
+
c.root_url = 'https://api-test.mangopay.com'
|
18
|
+
c.client_passphrase = '9RMGpwVUwFLK0SurxObJ2yaadDcO0zeKFKxWmthjB93SQjFzy0'
|
19
|
+
|
12
20
|
c.temp_dir = File.expand_path('../tmp', __FILE__)
|
13
21
|
require 'fileutils'
|
14
22
|
FileUtils.mkdir_p(c.temp_dir) unless File.directory?(c.temp_dir)
|
@@ -19,8 +27,8 @@ reset_mangopay_configuration
|
|
19
27
|
|
20
28
|
################################################################################
|
21
29
|
# uncomment it for logging all http calls in tests
|
22
|
-
#require 'http_logger'
|
23
|
-
#require 'logger'
|
24
|
-
#HttpLogger.logger = Logger.new(STDOUT)
|
25
|
-
#HttpLogger.colorize = true
|
26
|
-
#HttpLogger.log_headers = false
|
30
|
+
# require 'http_logger'
|
31
|
+
# require 'logger'
|
32
|
+
# HttpLogger.logger = Logger.new(STDOUT)
|
33
|
+
# HttpLogger.colorize = true
|
34
|
+
# HttpLogger.log_headers = true # false
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mangopay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geoffroy Lorieux
|
@@ -9,48 +9,48 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-01-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: 1.7.7
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 1.7.7
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: 10.1.0
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: 10.1.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rspec
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: 3.0.0
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 3.0.0
|
56
56
|
description: |2
|
@@ -63,8 +63,8 @@ executables:
|
|
63
63
|
extensions: []
|
64
64
|
extra_rdoc_files: []
|
65
65
|
files:
|
66
|
-
- .gitignore
|
67
|
-
- .rspec
|
66
|
+
- ".gitignore"
|
67
|
+
- ".rspec"
|
68
68
|
- Gemfile
|
69
69
|
- LICENSE
|
70
70
|
- README.md
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- spec/mangopay/event_spec.rb
|
109
109
|
- spec/mangopay/fetch_filters_spec.rb
|
110
110
|
- spec/mangopay/hook_spec.rb
|
111
|
+
- spec/mangopay/idempotency_spec
|
111
112
|
- spec/mangopay/kyc_document_spec.png
|
112
113
|
- spec/mangopay/kyc_document_spec.rb
|
113
114
|
- spec/mangopay/payin_bankwire_direct_spec.rb
|
@@ -136,17 +137,17 @@ require_paths:
|
|
136
137
|
- lib
|
137
138
|
required_ruby_version: !ruby/object:Gem::Requirement
|
138
139
|
requirements:
|
139
|
-
- -
|
140
|
+
- - ">="
|
140
141
|
- !ruby/object:Gem::Version
|
141
142
|
version: 1.9.2
|
142
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
144
|
requirements:
|
144
|
-
- -
|
145
|
+
- - ">="
|
145
146
|
- !ruby/object:Gem::Version
|
146
147
|
version: '0'
|
147
148
|
requirements: []
|
148
149
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.
|
150
|
+
rubygems_version: 2.4.5.1
|
150
151
|
signing_key:
|
151
152
|
specification_version: 4
|
152
153
|
summary: Ruby bindings for the version 2 of the MangoPay API
|
@@ -161,6 +162,7 @@ test_files:
|
|
161
162
|
- spec/mangopay/event_spec.rb
|
162
163
|
- spec/mangopay/fetch_filters_spec.rb
|
163
164
|
- spec/mangopay/hook_spec.rb
|
165
|
+
- spec/mangopay/idempotency_spec
|
164
166
|
- spec/mangopay/kyc_document_spec.png
|
165
167
|
- spec/mangopay/kyc_document_spec.rb
|
166
168
|
- spec/mangopay/payin_bankwire_direct_spec.rb
|