mangopay 3.18.0 → 3.20.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4bb8e0bce0fbb8b2a758340182c8be4b0d904ae358cf72637da7e7c63d2413b7
4
- data.tar.gz: ebeacb1b39d233d2ebec9326d61c69213111fa1dd945f4541068c73fdcbc5061
3
+ metadata.gz: c22a75f6a785d55c368cc565e3d9b2dc399c5b08cb8b4b8ed27f24762ee9b6a2
4
+ data.tar.gz: 7b1b066c802f7716aa500267349928ed05d7df7ac9be74e63855376c284e2c03
5
5
  SHA512:
6
- metadata.gz: 3514922d67baa1a1f21fc2fe459fdeca27fd958c4214f0f66daddf3c29358f22cbbf16eb0ee95930c3f882b9e551340c2d59b6f40cf5578c0b5ab698e71e7ea8
7
- data.tar.gz: 2ee8d0c7015e18a84df5468c869dc328a808ef841da61b4ade65d2223d2eb4031de08e3a6628d26510b241d333d7116ada4881e9329bd0d243907773e5239abc
6
+ metadata.gz: 51efb4cb9942a749604b7f44e0fb79958b862ab03a0aa742c70af9bc650001aff7b339d43e56011392556e2e38572343c19a243e5218e09b24d4960346d3c10c
7
+ data.tar.gz: 1b8d01d73103c23d7e999e6c4e49ae2d57f5161ecb20626be0465d581de3e4c606b38549c4bde0fc4e4b2d27d4a7684c6cd1566b949f32463bf52ace34b309cf
data/CHANGELOG.md CHANGED
@@ -1,3 +1,32 @@
1
+ ## [3.20.0] - 2023-11-15
2
+ ### Added
3
+
4
+ Now, our SDK enables seamless integration with multiple clientIDs, offering enhanced flexibility and customization.
5
+
6
+ You can effortlessly create multiple configuration objects tailored to your specific needs:
7
+
8
+ ```
9
+ config = MangoPay::Configuration.new
10
+ config.client_id = 'your-client-id'
11
+ config.client_apiKey = 'your-api-key'
12
+ config.preproduction = true
13
+ ```
14
+ add them using :
15
+
16
+ `MangoPay.add_config('config1', config)`
17
+
18
+ and perform a call with them using :
19
+
20
+ `MangoPay.get_config('config1').apply_configuration`
21
+
22
+ The previous method configure() is still working.
23
+
24
+ ## [3.19.0] - 2023-11-02
25
+ ### Updated
26
+
27
+ - Giropay and Ideal integrations with Mangopay have been improved.
28
+ - Klarna param "MerchantOrderId" has been renamed to "Reference"
29
+
1
30
  ## [3.18.0] - 2023-09-29
2
31
  ### Added
3
32
  - Instantly convert funds between 2 wallets of different currencies owned by the same user with the new SPOT FX endpoints
data/README.md CHANGED
@@ -85,6 +85,25 @@ rescue MangoPay::ResponseError => ex
85
85
  end
86
86
  ```
87
87
 
88
+ ### Using multiple clientIDs
89
+ You can effortlessly create multiple configuration objects tailored to your specific needs:
90
+
91
+ ```
92
+ config = MangoPay::Configuration.new
93
+ config.client_id = 'your-client-id'
94
+ config.client_apiKey = 'your-api-key'
95
+ config.preproduction = true
96
+ ```
97
+ add them using :
98
+
99
+ `MangoPay.add_config('config1', config)`
100
+
101
+ and perform a call with them using :
102
+
103
+ `MangoPay.get_config('config1').apply_configuration`
104
+
105
+ The previous method configure() is still working.
106
+
88
107
  ### Accessing RateLimit Headers
89
108
  Along with each request, the rate limiting headers are automatically updated in MangoPay object:
90
109
 
@@ -197,6 +197,26 @@ module MangoPay
197
197
  end
198
198
  end
199
199
 
200
+ module Ideal
201
+ class Web < Resource
202
+ include HTTPCalls::Create
203
+
204
+ def self.url(*)
205
+ "#{MangoPay.api_path}/payins/payment-methods/ideal"
206
+ end
207
+ end
208
+ end
209
+
210
+ module Giropay
211
+ class Web < Resource
212
+ include HTTPCalls::Create
213
+
214
+ def self.url(*)
215
+ "#{MangoPay.api_path}/payins/payment-methods/giropay"
216
+ end
217
+ end
218
+ end
219
+
200
220
  module RecurringPayments
201
221
  class Recurring < Resource
202
222
  include HTTPCalls::Create
@@ -1,3 +1,3 @@
1
1
  module MangoPay
2
- VERSION = '3.18.0'
2
+ VERSION = '3.20.0'
3
3
  end
data/lib/mangopay.rb CHANGED
@@ -49,6 +49,8 @@ module MangoPay
49
49
  # temporary
50
50
  autoload :Temp, 'mangopay/temp'
51
51
 
52
+ @configurations = {}
53
+
52
54
  class Configuration
53
55
  attr_accessor :preproduction, :root_url,
54
56
  :client_id, :client_apiKey,
@@ -56,6 +58,20 @@ module MangoPay
56
58
  :http_max_retries, :http_open_timeout,
57
59
  :logger, :use_ssl
58
60
 
61
+ def apply_configuration
62
+ MangoPay.configure do |config|
63
+ config.preproduction = @preproduction
64
+ config.client_id = @client_id
65
+ config.client_apiKey = @client_apiKey
66
+ config.log_file = @log_file
67
+ config.http_timeout = @http_timeout
68
+ config.http_max_retries = @http_max_retries
69
+ config.http_open_timeout = @http_open_timeout
70
+ config.use_ssl = @use_ssl
71
+ config.logger = @logger
72
+ end
73
+ end
74
+
59
75
  def preproduction
60
76
  @preproduction || false
61
77
  end
@@ -138,6 +154,23 @@ module MangoPay
138
154
  @ratelimit = obj
139
155
  end
140
156
 
157
+ # Add MangoPay.Configuration to the list of configs
158
+ def add_config(name, config)
159
+ @configurations[name] = config
160
+ end
161
+
162
+ # Fetch a MangoPay configuration from the list of configs. Throw error if not found
163
+ def get_config(name)
164
+ config = @configurations[name]
165
+ raise "Could not find any configuration with name '#{name}'" unless config
166
+ config
167
+ end
168
+
169
+ def remove_config(name)
170
+ raise "Could not find any configuration with name '#{name}'" unless @configurations[name]
171
+ @configurations[name] = nil
172
+ end
173
+
141
174
  #
142
175
  # - +method+: HTTP method; lowercase symbol, e.g. :get, :post etc.
143
176
  # - +url+: the part after Configuration#root_url
@@ -13,6 +13,74 @@ describe MangoPay::Configuration do
13
13
  }
14
14
  end
15
15
 
16
+ it 'fails when calling with wrong client credentials, but succeeds after applying a new (correct) config' do
17
+ # create a wrong configuration
18
+ wrong_config = MangoPay::Configuration.new
19
+ wrong_config.client_id = 'placeholder'
20
+ wrong_config.client_apiKey = '0000'
21
+ wrong_config.preproduction = true
22
+
23
+ # create a valid configuration
24
+ valid_config = MangoPay::Configuration.new
25
+ valid_config.client_id = 'sdk-unit-tests'
26
+ valid_config.client_apiKey = 'cqFfFrWfCcb7UadHNxx2C9Lo6Djw8ZduLi7J9USTmu8bhxxpju'
27
+ valid_config.preproduction = true
28
+
29
+ # add the 2 configs to the list of MangoPay configs
30
+ MangoPay.add_config('wrong', wrong_config)
31
+ MangoPay.add_config('valid', valid_config)
32
+
33
+ # apply wrong config
34
+ MangoPay.get_config('wrong').apply_configuration
35
+
36
+ expect {
37
+ MangoPay::User.fetch()
38
+ }.to raise_error { |err|
39
+ expect(err).to be_a MangoPay::ResponseError
40
+ expect(err.code).to eq '401'
41
+ expect(err.message).to eq 'invalid_client'
42
+ }
43
+
44
+ # apply valid configuration
45
+ MangoPay.get_config('valid').apply_configuration
46
+
47
+ # expect success
48
+ users = MangoPay::User.fetch()
49
+ expect(users).to be_kind_of(Array)
50
+ end
51
+
52
+ it 'fails when fetching a config that does not exist' do
53
+ expect {
54
+ MangoPay.get_config('placeholder')
55
+ }.to raise_error { |err|
56
+ expect(err).to be_a RuntimeError
57
+ expect(err.message).to eq "Could not find any configuration with name 'placeholder'"
58
+ }
59
+ end
60
+
61
+ it 'succeeds when removing config' do
62
+ wrong_config = MangoPay::Configuration.new
63
+ wrong_config.client_id = 'placeholder'
64
+ wrong_config.client_apiKey = '0000'
65
+ wrong_config.preproduction = true
66
+
67
+ MangoPay.add_config('wrong', wrong_config)
68
+
69
+ # pass when fetching config before removing it
70
+ MangoPay.get_config('wrong')
71
+
72
+ # remove config
73
+ MangoPay.remove_config('wrong')
74
+
75
+ # fail when trying to fetch after removal
76
+ expect {
77
+ MangoPay.get_config('wrong')
78
+ }.to raise_error { |err|
79
+ expect(err).to be_a RuntimeError
80
+ expect(err.message).to eq "Could not find any configuration with name 'wrong'"
81
+ }
82
+ end
83
+
16
84
  it 'goes ok when calling with correct client credentials' do
17
85
  reset_mangopay_configuration
18
86
  users = MangoPay::User.fetch()
@@ -0,0 +1,30 @@
1
+ describe MangoPay::PayIn::Giropay::Web, type: :feature do
2
+ include_context 'wallets'
3
+ include_context 'payins'
4
+
5
+ def check_type_and_status(payin)
6
+ expect(payin['Type']).to eq('PAYIN')
7
+ expect(payin['Nature']).to eq('REGULAR')
8
+ expect(payin['PaymentType']).to eq('GIROPAY')
9
+ expect(payin['ExecutionType']).to eq('WEB')
10
+ expect(payin['Status']).to eq('CREATED')
11
+ end
12
+
13
+ describe 'CREATE' do
14
+ it 'creates a giropay web payin' do
15
+ created = new_payin_giropay_web
16
+ expect(created['Id']).not_to be_nil
17
+ check_type_and_status(created)
18
+ end
19
+ end
20
+
21
+ describe 'FETCH' do
22
+ it 'fetches a payin' do
23
+ created = new_payin_giropay_web
24
+ fetched = MangoPay::PayIn.fetch(created['Id'])
25
+ expect(fetched['Id']).to eq(created['Id'])
26
+ check_type_and_status(created)
27
+ check_type_and_status(fetched)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ describe MangoPay::PayIn::Ideal::Web, type: :feature do
2
+ include_context 'wallets'
3
+ include_context 'payins'
4
+
5
+ def check_type_and_status(payin)
6
+ expect(payin['Type']).to eq('PAYIN')
7
+ expect(payin['Nature']).to eq('REGULAR')
8
+ expect(payin['PaymentType']).to eq('IDEAL')
9
+ expect(payin['ExecutionType']).to eq('WEB')
10
+ expect(payin['Status']).to eq('CREATED')
11
+ end
12
+
13
+ describe 'CREATE' do
14
+ it 'creates a ideal web payin' do
15
+ created = new_payin_ideal_web
16
+ expect(created['Id']).not_to be_nil
17
+ check_type_and_status(created)
18
+ end
19
+ end
20
+
21
+ describe 'FETCH' do
22
+ it 'fetches a payin' do
23
+ created = new_payin_ideal_web
24
+ fetched = MangoPay::PayIn.fetch(created['Id'])
25
+ expect(fetched['Id']).to eq(created['Id'])
26
+ check_type_and_status(created)
27
+ check_type_and_status(fetched)
28
+ end
29
+ end
30
+ end
@@ -562,11 +562,42 @@ shared_context 'payins' do
562
562
  FirstName: 'Joe',
563
563
  LastName: 'Blogs'
564
564
  },
565
- MerchantOrderId: 'afd48-879d-48fg',
565
+ Reference: 'afd48-879d-48fg',
566
566
  Tag: 'Test PayIn/Klarna/Web'
567
567
  )
568
568
  end
569
569
 
570
+ ###############################################
571
+ # IDEAL/web
572
+ ###############################################
573
+ let(:new_payin_ideal_web) do
574
+ MangoPay::PayIn::Ideal::Web.create(
575
+ AuthorId: new_natural_user['Id'],
576
+ CreditedWalletId: new_wallet['Id'],
577
+ DebitedFunds: {Currency: 'EUR', Amount: 400},
578
+ Fees: {Currency: 'EUR', Amount: 10},
579
+ ReturnURL: 'http://www.my-site.com/returnURL',
580
+ Bic: 'REVOLT21',
581
+ StatementDescriptor: "test",
582
+ Tag: 'Test PayIn/Ideal/Web'
583
+ )
584
+ end
585
+
586
+ ###############################################
587
+ # Giropay/web
588
+ ###############################################
589
+ let(:new_payin_giropay_web) do
590
+ MangoPay::PayIn::Giropay::Web.create(
591
+ AuthorId: new_natural_user['Id'],
592
+ CreditedWalletId: new_wallet['Id'],
593
+ DebitedFunds: {Currency: 'EUR', Amount: 400},
594
+ Fees: {Currency: 'EUR', Amount: 10},
595
+ ReturnURL: 'http://www.my-site.com/returnURL',
596
+ StatementDescriptor: "test",
597
+ Tag: 'Test PayIn/Giropay/Web'
598
+ )
599
+ end
600
+
570
601
  ###############################################
571
602
  # PAYPAL/web V2
572
603
  ###############################################
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.18.0
4
+ version: 3.20.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: 2023-09-29 00:00:00.000000000 Z
12
+ date: 2023-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -137,7 +137,9 @@ files:
137
137
  - spec/mangopay/payin_card_web_spec.rb
138
138
  - spec/mangopay/payin_directdebit_direct_spec.rb
139
139
  - spec/mangopay/payin_directdebit_web_spec.rb
140
+ - spec/mangopay/payin_giropay_web_spec.rb
140
141
  - spec/mangopay/payin_googlepay_direct_spec.rb
142
+ - spec/mangopay/payin_ideal_web_spec.rb
141
143
  - spec/mangopay/payin_klarna_web_spec.rb
142
144
  - spec/mangopay/payin_mbway_web_spec.rb
143
145
  - spec/mangopay/payin_multibanco_web_spec.rb
@@ -212,7 +214,9 @@ test_files:
212
214
  - spec/mangopay/payin_card_web_spec.rb
213
215
  - spec/mangopay/payin_directdebit_direct_spec.rb
214
216
  - spec/mangopay/payin_directdebit_web_spec.rb
217
+ - spec/mangopay/payin_giropay_web_spec.rb
215
218
  - spec/mangopay/payin_googlepay_direct_spec.rb
219
+ - spec/mangopay/payin_ideal_web_spec.rb
216
220
  - spec/mangopay/payin_klarna_web_spec.rb
217
221
  - spec/mangopay/payin_mbway_web_spec.rb
218
222
  - spec/mangopay/payin_multibanco_web_spec.rb