mangopay 3.42.0 → 3.43.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75e70fb3e6f0127887de7a15963f3d6da46eba5ae5e442e020cb68464540f3d9
4
- data.tar.gz: 2925a4605e33e3c0325522cdd3657db592b87675172ceabeb749f321ce1af2e9
3
+ metadata.gz: e8e415a3b362b0ba193e2477fdc7508c7559b9523b40a590612e4e74150003ea
4
+ data.tar.gz: 7c9cbca2320c1398508f208d9650d2adce0a10817df521ca37d96ca8901c3135
5
5
  SHA512:
6
- metadata.gz: '016839ec01d68ffeeff441b0f144758b911febc7ad559808f65ef57baab454f21798cc9c52ff664b4fdcb6ed3bc54fea8d3b38e3c3e2801767d9fd793eb1f915'
7
- data.tar.gz: 055ae925c27dc1aed17a0f41fa2585854f156b1b206d3661d990a8bf91dbfc83ca63199f3992e83604883466bb23c972547d3364fc1d1cb78a795efdeeceb076
6
+ metadata.gz: 7384bcd1a7c53eef9dc2a069693087283667b256e575ae216ea0ddc242a3e66ea9e7888f4dfe9a4911acb44c5d884621149ea8c2db87ae3f98617078dc9033ab
7
+ data.tar.gz: 2aa7998c203b484274941a2cb5c67190d3364920c8968ec0095944145993dc0288ab92e71fd0a0a1f60ad4d39ae030607d01a44a79c9cbba602ffff734c499bc
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [3.43.0] - 2025-11-19
2
+ ### Added
3
+ First batch of endpoints for direct acquiring solution (in private beta).
4
+
5
+ ## [3.42.1] - 2025-11-06
6
+ ### Improved
7
+ - Support for case variations in error handler #313
8
+
1
9
  ## [3.42.0] - 2025-10-27
2
10
  ### Added
3
11
  - New [POST Manage proxy consent for a User](https://docs.mangopay.com/api-reference/users/manage-proxy-consent) endpoint to obtain and manage user consent via the hosted SCA experience (if proxy is activated). A proxy and user consent are now required to use the `USER_NOT_PRESENT` value for `ScaContext` ([API release note](https://docs.mangopay.com/release-notes/api/2025-10-23), #310)
@@ -0,0 +1,56 @@
1
+ module MangoPay
2
+
3
+ class Acquiring < Resource
4
+ module PayIn
5
+ module Card
6
+ class Direct < Resource
7
+ def self.create(params, idempotency_key = nil)
8
+ MangoPay.request(:post, "#{MangoPay.api_path}/acquiring/payins/card/direct", params, {}, idempotency_key)
9
+ end
10
+ end
11
+ end
12
+
13
+ module ApplePay
14
+ class Direct < Resource
15
+ def self.create(params, idempotency_key = nil)
16
+ MangoPay.request(:post, "#{MangoPay.api_path}/acquiring/payins/payment-methods/applepay", params, {}, idempotency_key)
17
+ end
18
+ end
19
+ end
20
+
21
+ module GooglePay
22
+ class Direct < Resource
23
+ def self.create(params, idempotency_key = nil)
24
+ MangoPay.request(:post, "#{MangoPay.api_path}/acquiring/payins/payment-methods/googlepay", params, {}, idempotency_key)
25
+ end
26
+ end
27
+ end
28
+
29
+ module Ideal
30
+ class Web < Resource
31
+ def self.create(params, idempotency_key = nil)
32
+ MangoPay.request(:post, "#{MangoPay.api_path}/acquiring/payins/payment-methods/ideal", params, {}, idempotency_key)
33
+ end
34
+ end
35
+ end
36
+
37
+ module PayPal
38
+ class Web < Resource
39
+ def self.create(params, idempotency_key = nil)
40
+ MangoPay.request(:post, "#{MangoPay.api_path}/acquiring/payins/payment-methods/paypal", params, {}, idempotency_key)
41
+ end
42
+
43
+ def self.create_data_collection(params, idempotency_key = nil)
44
+ MangoPay.request(:post, "#{MangoPay.api_path}/acquiring/payins/payment-methods/paypal/data-collection", params, {}, idempotency_key)
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ class Refund < Resource
51
+ def self.create(pay_in_id, params, idempotency_key = nil)
52
+ MangoPay.request(:post, "#{MangoPay.api_path}/acquiring/payins/#{pay_in_id}/refunds", params, {}, idempotency_key)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -50,7 +50,7 @@ module MangoPay
50
50
 
51
51
  def type; @details['Type'] || @details['type']; end
52
52
  def error; @details['error']; end
53
- def errors; @details['errors'] || error; end
53
+ def errors; @details['errors'] || @details['Errors'] || error; end
54
54
 
55
55
  def message;
56
56
  if error
@@ -1,3 +1,3 @@
1
1
  module MangoPay
2
- VERSION = '3.42.0'
2
+ VERSION = '3.43.0'
3
3
  end
data/lib/mangopay.rb CHANGED
@@ -54,6 +54,7 @@ module MangoPay
54
54
  autoload :IdentityVerification, 'mangopay/identity_verification'
55
55
  autoload :Recipient, 'mangopay/recipient'
56
56
  autoload :Settlement, 'mangopay/settlement'
57
+ autoload :Acquiring, 'mangopay/acquiring'
57
58
 
58
59
  # temporary
59
60
  autoload :Temp, 'mangopay/temp'
@@ -118,8 +119,6 @@ module MangoPay
118
119
  end
119
120
 
120
121
  def uk_header_flag
121
- warn "[DEPRECATION] `uk_header_flag` is deprecated and will be removed in a future version. " \
122
- "Please update your configuration accordingly."
123
122
  @uk_header_flag || false
124
123
  end
125
124
  end
@@ -0,0 +1,176 @@
1
+ xdescribe MangoPay::Hook do
2
+ include_context 'wallets'
3
+ include_context 'payins'
4
+
5
+ let(:card_id) { 'placeholder' }
6
+
7
+ describe 'PAY_IN CARD DIRECT' do
8
+ it 'creates a Card Direct PayIn' do
9
+ created = create_new_pay_in_card_direct
10
+
11
+ assert_common_pay_in_properties(created)
12
+ expect(created['PaymentType']).to eq('CARD')
13
+ expect(created['ExecutionType']).to eq('DIRECT')
14
+ end
15
+ end
16
+
17
+ describe 'REFUND' do
18
+ it 'creates a Refund for a PayIn' do
19
+ pay_in = create_new_pay_in_card_direct
20
+ refund = MangoPay::Acquiring::Refund.create(pay_in['Id'], { DebitedFunds: { Currency: 'EUR', Amount: 10 } })
21
+
22
+ expect(refund['Id']).not_to be_nil
23
+ expect(refund['Status']).to eq('SUCCEEDED')
24
+ expect(refund['Type']).to eq('PAYOUT')
25
+ expect(refund['Nature']).to eq('REFUND')
26
+ expect(refund['InitialTransactionType']).to eq('PAYIN')
27
+ expect(refund['InitialTransactionId']).to eq(pay_in['Id'])
28
+ end
29
+ end
30
+
31
+ describe 'PAY_IN APPLE_PAY' do
32
+ it 'creates an ApplePay direct PayIn' do
33
+ created = MangoPay::Acquiring::PayIn::ApplePay::Direct.create(
34
+ DebitedFunds: { Currency: 'EUR', Amount: 100 },
35
+ PaymentData: {
36
+ transactionId: "97e64d87f13a89ff6443cdcc205d5ccf7e15368b0d64126a8a2e0888a3a5c2a0",
37
+ network: "MasterCard",
38
+ tokenDataø: "{\"data\":\"2TihgKbmyPje02.........wAAAAAAAA==\",\"header\":{\"publicKeyHash\":\"xUyeFb75d359bfPEiq2JJMQj694UAxtTuBsaTWMOJxQ=\",\"ephemeralPublicKey\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkeuICjZ7x15b7hPEBEBT5Zp43l95wCmJCU3QNxBvOCusG9w9sJMULuXlT4K8LOlPgaZzAcyWlfNwnLivVdOPfg==\",\"transactionId\":\"97e64d87f13a89ff6443cdcc205d5ccf7e15368b0d64126a8a2e0888a3a5c2a0\"},\"version\":\"EC_v1\"}"
39
+ }
40
+ )
41
+
42
+ assert_common_pay_in_properties(created)
43
+ expect(created['PaymentType']).to eq('APPLEPAY')
44
+ expect(created['ExecutionType']).to eq('DIRECT')
45
+ end
46
+ end
47
+
48
+ describe 'PAY_IN GOOGLE_PAY' do
49
+ it 'creates a GooglePay direct PayIn' do
50
+ created = MangoPay::Acquiring::PayIn::GooglePay::Direct.create(
51
+ DebitedFunds: { Currency: 'EUR', Amount: 199 },
52
+ IpAddress: "2001:0620:0000:0000:0211:24FF:FE80:C12C",
53
+ SecureModeReturnURL: 'http://test.com',
54
+ BrowserInfo: {
55
+ AcceptHeader: "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
56
+ JavaEnabled: true,
57
+ Language: "fr-FR",
58
+ ColorDepth: 4,
59
+ ScreenHeight: 1800,
60
+ ScreenWidth: 400,
61
+ JavascriptEnabled: true,
62
+ TimeZoneOffset: "+60",
63
+ UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
64
+ },
65
+ PaymentData: "{\"signature\":\"MEUCIQDc49/Bw1lTk8ok2fUe4UT......................\\u003d\\\"}\"}"
66
+ )
67
+
68
+ assert_common_pay_in_properties(created)
69
+ expect(created['PaymentType']).to eq('GOOGLEPAY')
70
+ expect(created['ExecutionType']).to eq('DIRECT')
71
+ end
72
+ end
73
+
74
+ describe 'PAY_IN IDEAL WEB' do
75
+ it 'creates an Ideal Web PayIn' do
76
+ created = MangoPay::Acquiring::PayIn::Ideal::Web.create(
77
+ DebitedFunds: { Currency: 'EUR', Amount: 100 },
78
+ ReturnURL: 'http://www.my-site.com/returnURL'
79
+ )
80
+
81
+ assert_common_pay_in_properties(created)
82
+ expect(created['PaymentType']).to eq('IDEAL')
83
+ expect(created['ExecutionType']).to eq('WEB')
84
+ end
85
+ end
86
+
87
+ describe 'PAY_IN PAYPAL' do
88
+ it 'creates a PayPal Web PayIn' do
89
+ created = MangoPay::Acquiring::PayIn::PayPal::Web.create(
90
+ DebitedFunds: { Currency: 'EUR', Amount: 400 },
91
+ ReturnUrl: "http://example.com",
92
+ LineItems: [
93
+ {
94
+ Name: "running shoes",
95
+ Quantity: 1,
96
+ UnitAmount: 200,
97
+ TaxAmount: 0,
98
+ Description: "seller1 ID"
99
+ },
100
+ {
101
+ Name: "running shoes",
102
+ Quantity: 1,
103
+ UnitAmount: 200,
104
+ TaxAmount: 0,
105
+ Description: "seller2 ID"
106
+ }
107
+ ]
108
+ )
109
+
110
+ assert_common_pay_in_properties(created)
111
+ expect(created['PaymentType']).to eq('PAYPAL')
112
+ expect(created['ExecutionType']).to eq('WEB')
113
+ end
114
+
115
+ it 'creates PayPal DataCollection' do
116
+ data_collection = MangoPay::Acquiring::PayIn::PayPal::Web.create_data_collection(
117
+ {
118
+ "sender_account_id": "A12345N343",
119
+ "sender_first_name": "Jane",
120
+ "sender_last_name": "Doe",
121
+ "sender_email": "jane.doe@sample.com",
122
+ "sender_phone": "(042)11234567",
123
+ "sender_address_zip": "75009",
124
+ "sender_country_code": "FR",
125
+ "sender_create_date": "2012-12-09T19:14:55.277-0:00",
126
+ "sender_signup_ip": "10.220.90.20",
127
+ "sender_popularity_score": "high",
128
+ "receiver_account_id": "A12345N344",
129
+ "receiver_create_date": "2012-12-09T19:14:55.277-0:00",
130
+ "receiver_email": "jane@sample.com",
131
+ "receiver_address_country_code": "FR",
132
+ "business_name": "Jane Ltd",
133
+ "recipient_popularity_score": "high",
134
+ "first_interaction_date": "2012-12-09T19:14:55.277-0:00",
135
+ "txn_count_total": "34",
136
+ "vertical": "Household goods",
137
+ "transaction_is_tangible": "0"
138
+ }
139
+ )
140
+ expect(data_collection['dataCollectionId']).not_to be_nil
141
+ end
142
+ end
143
+
144
+ def create_new_pay_in_card_direct
145
+ MangoPay::Acquiring::PayIn::Card::Direct.create(
146
+ DebitedFunds: { Currency: 'EUR', Amount: 100 },
147
+ CardType: 'CB_VISA_MASTERCARD',
148
+ CardId: card_id,
149
+ SecureMode: 'DEFAULT',
150
+ SecureModeReturnURL: 'http://test.com',
151
+ Tag: 'Acquiring Test PayIn/Card/Direct',
152
+ BrowserInfo: {
153
+ AcceptHeader: "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
154
+ JavaEnabled: true,
155
+ Language: "FR-FR",
156
+ ColorDepth: 4,
157
+ ScreenHeight: 1800,
158
+ ScreenWidth: 400,
159
+ JavascriptEnabled: true,
160
+ TimeZoneOffset: "+60",
161
+ UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
162
+ },
163
+ IpAddress: "2001:0620:0000:0000:0211:24FF:FE80:C12C"
164
+ )
165
+ end
166
+
167
+ def assert_common_pay_in_properties(pay_in)
168
+ expect(pay_in['Id']).not_to be_nil
169
+ expect(pay_in['Type']).to eq('PAYIN')
170
+ expect(pay_in['Nature']).to eq('REGULAR')
171
+ expect(pay_in['Status']).to eq('SUCCEEDED')
172
+ expect(pay_in['ResultCode']).to eq('000000')
173
+ expect(pay_in['ResultMessage']).to eq('Success')
174
+ expect(pay_in['ExecutionDate']).to be > 0
175
+ end
176
+ end
@@ -19,7 +19,7 @@ describe MangoPay::Recipient do
19
19
 
20
20
  describe 'GET User Recipients' do
21
21
  it 'fetches recipients without query param' do
22
- john = create_new_natural_user_sca_payer
22
+ john = create_new_natural_user_sca_owner
23
23
  create_new_recipient(john['Id'])
24
24
  fetched = MangoPay::Recipient.get_user_recipients(john['Id'])
25
25
  expect(fetched).not_to be_nil
@@ -28,7 +28,7 @@ describe MangoPay::Recipient do
28
28
  end
29
29
 
30
30
  it 'fetches recipients with scope PAYOUT' do
31
- john = create_new_natural_user_sca_payer
31
+ john = create_new_natural_user_sca_owner
32
32
  create_new_recipient(john['Id'])
33
33
  fetched = MangoPay::Recipient.get_user_recipients(john['Id'], {RecipientScope: "PAYOUT"})
34
34
  expect(fetched).not_to be_nil
@@ -37,7 +37,7 @@ describe MangoPay::Recipient do
37
37
  end
38
38
 
39
39
  it 'fetches recipients with scope PAYIN' do
40
- john = create_new_natural_user_sca_payer
40
+ john = create_new_natural_user_sca_owner
41
41
  create_new_recipient(john['Id'])
42
42
  fetched = MangoPay::Recipient.get_user_recipients(john['Id'], {RecipientScope: "PAYIN"})
43
43
  expect(fetched).not_to be_nil
@@ -92,7 +92,7 @@ describe MangoPay::Recipient do
92
92
  describe 'VALIDATE' do
93
93
  it 'validates a recipient' do
94
94
  recipient = define_new_recipient
95
- john = create_new_natural_user_sca_payer
95
+ john = create_new_natural_user_sca_owner
96
96
  # it should pass
97
97
  MangoPay::Recipient.validate(recipient, john['Id'])
98
98
 
@@ -1306,7 +1306,7 @@ end
1306
1306
  shared_context 'recipient' do
1307
1307
  include_context 'users'
1308
1308
 
1309
- let(:new_recipient) { create_new_recipient(create_new_natural_user_sca_payer['Id']) }
1309
+ let(:new_recipient) { create_new_recipient(create_new_natural_user_sca_owner['Id']) }
1310
1310
 
1311
1311
  def create_new_recipient(user_id)
1312
1312
  MangoPay::Recipient.create(define_new_recipient, user_id)
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.42.0
4
+ version: 3.43.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: 2025-10-27 00:00:00.000000000 Z
12
+ date: 2025-11-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -75,6 +75,7 @@ files:
75
75
  - lib/generators/mangopay/install_generator.rb
76
76
  - lib/generators/templates/mangopay.rb.erb
77
77
  - lib/mangopay.rb
78
+ - lib/mangopay/acquiring.rb
78
79
  - lib/mangopay/authorization_token.rb
79
80
  - lib/mangopay/bank_account.rb
80
81
  - lib/mangopay/bankingaliases.rb
@@ -118,6 +119,7 @@ files:
118
119
  - lib/mangopay/virtual_account.rb
119
120
  - lib/mangopay/wallet.rb
120
121
  - mangopay.gemspec
122
+ - spec/mangopay/acquiring_spec.rb
121
123
  - spec/mangopay/authorization_token_spec.rb
122
124
  - spec/mangopay/bank_account_spec.rb
123
125
  - spec/mangopay/bankingaliases_spec.rb
@@ -208,6 +210,7 @@ signing_key:
208
210
  specification_version: 4
209
211
  summary: Ruby bindings for the version 2 of the MANGOPAY API
210
212
  test_files:
213
+ - spec/mangopay/acquiring_spec.rb
211
214
  - spec/mangopay/authorization_token_spec.rb
212
215
  - spec/mangopay/bank_account_spec.rb
213
216
  - spec/mangopay/bankingaliases_spec.rb