mangopay 3.4.0 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -0
- data/lib/mangopay/pay_in.rb +26 -0
- data/lib/mangopay/refund.rb +1 -0
- data/lib/mangopay/ubo_declaration.rb +3 -1
- data/lib/mangopay/version.rb +1 -1
- data/spec/mangopay/recurring_payin_spec.rb +66 -0
- data/spec/mangopay/shared_resources.rb +22 -0
- data/spec/mangopay/ubo_declaration_spec.rb +11 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b84828fb11033157bfa54765cb99dc5e9ba1c0a00fe7b9351dd8bf4d747d29f2
|
4
|
+
data.tar.gz: 9f83683c46d13b2e6cf18532e4948ccd6daee09bdf4fdf590aee1d9da57e87f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e593d8cbe199ef24f65ca3a4388015a5cfca4e8b71012fdc3960389ede99e6eef9ad7a424cd136162d581bdc81fb344becf1cced30a5300f09ad1d4aefc49830
|
7
|
+
data.tar.gz: 5d06c7d08de2d7fb8edb1d3ba28bd20643bc3f28c823e535af889b7b270316883134fe95af0fb573811173cbb311fde3ed716249f69269d7927d7350c19ff044
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
## [3.5.0] - 2021.06.10
|
2
|
+
## Added
|
3
|
+
|
4
|
+
We have added a new feature **[recurring payments](https://docs.mangopay.com/guide/recurring-payments)** dedicated to clients needing to charge a card repeatedly, such as subscriptions or payments installments.
|
5
|
+
|
6
|
+
You can start testing in sandbox, to help you define your workflow. This release provides the first elements of the full feature.
|
7
|
+
|
8
|
+
- [Create a Recurring PayIn Registration object](https://docs.mangopay.com/endpoints/v2.01/payins#e1051_create-a-recurring-payin-registration), containing all the information to define the recurring payment
|
9
|
+
- [Initiate your recurring payment flow](https://docs.mangopay.com/endpoints/v2.01/payins#e1053_create-a-recurring-payin-cit) with an authenticated transaction (CIT) using the Card Recurring PayIn endpoint
|
10
|
+
- [Continue your recurring payment flow](https://docs.mangopay.com/endpoints/v2.01/payins#e1054_create-a-recurring-payin-mit) with an non-authenticated transaction (MIT) using the Card Recurring PayIn endpoint
|
11
|
+
|
12
|
+
This feature is not yet available in production and you need to contact the Support team to request access.
|
13
|
+
|
14
|
+
## Accepted PRs
|
15
|
+
|
16
|
+
- Add support for refund creation
|
17
|
+
- Allow to fetch UBO Declaration without User ID
|
18
|
+
|
19
|
+
|
20
|
+
|
1
21
|
## [3.4.0] - 2021.05.27
|
2
22
|
## Added
|
3
23
|
|
data/lib/mangopay/pay_in.rb
CHANGED
@@ -126,5 +126,31 @@ module MangoPay
|
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
129
|
+
module RecurringPayments
|
130
|
+
class Recurring < Resource
|
131
|
+
include HTTPCalls::Create
|
132
|
+
|
133
|
+
def self.url(*)
|
134
|
+
"#{MangoPay.api_path}/recurringpayinregistrations"
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
class CIT < Resource
|
139
|
+
include HTTPCalls::Create
|
140
|
+
|
141
|
+
def self.url(*)
|
142
|
+
"#{MangoPay.api_path}/payins/recurring/card/direct"
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
class MIT < Resource
|
147
|
+
include HTTPCalls::Create
|
148
|
+
|
149
|
+
def self.url(*)
|
150
|
+
"#{MangoPay.api_path}/payins/recurring/card/direct"
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
129
155
|
end
|
130
156
|
end
|
data/lib/mangopay/refund.rb
CHANGED
@@ -14,8 +14,10 @@ module MangoPay
|
|
14
14
|
MangoPay.request(:post, url(user_id), {}, {}, idempotency_key)
|
15
15
|
end
|
16
16
|
|
17
|
+
# Fetches the Ubo declaration belonging to the given +user_id+ if given, with the given +id+.
|
17
18
|
def fetch(user_id, id, idempotency_key)
|
18
|
-
|
19
|
+
url = (user_id) ? url(user_id, id) : "#{MangoPay.api_path}/kyc/ubodeclarations/#{CGI.escape(id.to_s)}"
|
20
|
+
MangoPay.request(:get, url, {}, {}, idempotency_key)
|
19
21
|
end
|
20
22
|
|
21
23
|
def update(user_id, id, params = {}, idempotency_key)
|
data/lib/mangopay/version.rb
CHANGED
@@ -0,0 +1,66 @@
|
|
1
|
+
describe MangoPay::PayIn::RecurringPayments, type: :feature do
|
2
|
+
include_context 'wallets'
|
3
|
+
include_context 'users'
|
4
|
+
include_context 'payins'
|
5
|
+
|
6
|
+
describe 'CREATE' do
|
7
|
+
it 'creates a recurring payment' do
|
8
|
+
cardreg = new_card_registration_3dsecure_completed
|
9
|
+
wallet = new_wallet
|
10
|
+
recurring = MangoPay::PayIn::RecurringPayments::Recurring.create(
|
11
|
+
AuthorId: new_natural_user['Id'],
|
12
|
+
CardId: cardreg['CardId'],
|
13
|
+
CreditedUserId: wallet['Owners'][0],
|
14
|
+
CreditedWalletId: wallet['Id'],
|
15
|
+
FirstTransactionDebitedFunds: {Currency: 'EUR', Amount: 10},
|
16
|
+
FirstTransactionFees: {Currency: 'EUR', Amount: 1},
|
17
|
+
Billing: {
|
18
|
+
Address: {
|
19
|
+
AddressLine1: 'AddressLine1',
|
20
|
+
AddressLine2: 'AddressLine2',
|
21
|
+
City: 'City',
|
22
|
+
Region: 'Region',
|
23
|
+
PostalCode: 'PostalCode',
|
24
|
+
Country: 'FR'
|
25
|
+
},
|
26
|
+
FirstName: 'Joe',
|
27
|
+
LastName: 'Blogs'
|
28
|
+
},
|
29
|
+
Shipping: {
|
30
|
+
Address: {
|
31
|
+
AddressLine1: 'AddressLine1',
|
32
|
+
AddressLine2: 'AddressLine2',
|
33
|
+
City: 'City',
|
34
|
+
Region: 'Region',
|
35
|
+
PostalCode: 'PostalCode',
|
36
|
+
Country: 'FR'
|
37
|
+
},
|
38
|
+
FirstName: 'Joe',
|
39
|
+
LastName: 'Blogs'
|
40
|
+
}
|
41
|
+
)
|
42
|
+
expect(recurring).not_to be_nil
|
43
|
+
|
44
|
+
cit = MangoPay::PayIn::RecurringPayments::CIT.create(
|
45
|
+
RecurringPayinRegistrationId: recurring['Id'],
|
46
|
+
IpAddress: "2001:0620:0000:0000:0211:24FF:FE80:C12C",
|
47
|
+
SecureModeReturnURL: "http://www.my-site.com/returnurl",
|
48
|
+
StatementDescriptor: "lorem",
|
49
|
+
Tag: "custom meta",
|
50
|
+
BrowserInfo: {
|
51
|
+
AcceptHeader: "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
|
52
|
+
JavaEnabled: true,
|
53
|
+
Language: "FR-FR",
|
54
|
+
ColorDepth: 4,
|
55
|
+
ScreenHeight: 1800,
|
56
|
+
ScreenWidth: 400,
|
57
|
+
JavascriptEnabled: true,
|
58
|
+
TimeZoneOffset: "+60",
|
59
|
+
UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
|
60
|
+
}
|
61
|
+
)
|
62
|
+
|
63
|
+
expect(cit).not_to be_nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -355,6 +355,28 @@ shared_context 'payins' do
|
|
355
355
|
RegistrationData: cardreg['RegistrationData'])
|
356
356
|
end
|
357
357
|
|
358
|
+
let(:new_card_registration_3dsecure_completed) do
|
359
|
+
# 1st step: create
|
360
|
+
cardreg = new_card_registration
|
361
|
+
|
362
|
+
# 2nd step: tokenize by payline (fills-in RegistrationData)
|
363
|
+
data = {
|
364
|
+
data: cardreg['PreregistrationData'],
|
365
|
+
accessKeyRef: cardreg['AccessKey'],
|
366
|
+
cardNumber: 4970105191923460,
|
367
|
+
cardExpirationDate: 1224,
|
368
|
+
cardCvx: 123}
|
369
|
+
|
370
|
+
res = Net::HTTP.post_form(URI(cardreg['CardRegistrationURL']), data)
|
371
|
+
raise Exception, [res, res.body] unless res.is_a?(Net::HTTPOK) && res.body.start_with?('data=')
|
372
|
+
|
373
|
+
cardreg['RegistrationData'] = res.body
|
374
|
+
|
375
|
+
# 3rd step: update (fills-in CardId) and return it
|
376
|
+
MangoPay::CardRegistration.update(cardreg['Id'],
|
377
|
+
RegistrationData: cardreg['RegistrationData'])
|
378
|
+
end
|
379
|
+
|
358
380
|
let(:new_payin_card_direct) { create_new_payin_card_direct(new_wallet) }
|
359
381
|
|
360
382
|
def create_new_payin_card_direct(to_wallet, amnt = 1000)
|
@@ -14,6 +14,17 @@ describe MangoPay::UboDeclaration do
|
|
14
14
|
expect(ubo_declaration_byId).not_to be_nil
|
15
15
|
end
|
16
16
|
|
17
|
+
it 'fetches ubo declaration just by id' do
|
18
|
+
legal_user = new_legal_user
|
19
|
+
|
20
|
+
ubo_declaration = MangoPay::UboDeclaration.create(legal_user['Id'], nil)
|
21
|
+
|
22
|
+
ubo_declaration_byId = MangoPay::UboDeclaration.fetch(nil, ubo_declaration['Id'], nil)
|
23
|
+
|
24
|
+
expect(ubo_declaration).not_to be_nil
|
25
|
+
expect(ubo_declaration_byId).not_to be_nil
|
26
|
+
end
|
27
|
+
|
17
28
|
describe 'UPDATE' do
|
18
29
|
it 'can update a UBO declaration' do
|
19
30
|
legal_user = new_legal_user
|
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.
|
4
|
+
version: 3.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geoffroy Lorieux
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-06-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- spec/mangopay/payin_preauthorized_direct_spec.rb
|
135
135
|
- spec/mangopay/payout_bankwire_spec.rb
|
136
136
|
- spec/mangopay/preauthorization_spec.rb
|
137
|
+
- spec/mangopay/recurring_payin_spec.rb
|
137
138
|
- spec/mangopay/refund_spec.rb
|
138
139
|
- spec/mangopay/report_spec.rb
|
139
140
|
- spec/mangopay/report_wallets_spec.rb
|
@@ -198,6 +199,7 @@ test_files:
|
|
198
199
|
- spec/mangopay/payin_preauthorized_direct_spec.rb
|
199
200
|
- spec/mangopay/payout_bankwire_spec.rb
|
200
201
|
- spec/mangopay/preauthorization_spec.rb
|
202
|
+
- spec/mangopay/recurring_payin_spec.rb
|
201
203
|
- spec/mangopay/refund_spec.rb
|
202
204
|
- spec/mangopay/report_spec.rb
|
203
205
|
- spec/mangopay/report_wallets_spec.rb
|