mangopay 3.0.20 → 3.0.21

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
  SHA1:
3
- metadata.gz: 59eb15c892bf9c2910edac5e22503bfcf6b9dcac
4
- data.tar.gz: 8457994e7e6dc82e85c826846b2f5406a484e729
3
+ metadata.gz: 63b80399ecc8d9221db114f107e954ab277b6c72
4
+ data.tar.gz: 2d995aaed246ba27847e7671efcf24b439025059
5
5
  SHA512:
6
- metadata.gz: 3722786d484342d20e913a2b3836b38b5239603c53225e2816d90995b60c61ef1d8409fd91528cbf98ae0eb7b96446f6070f7c4fef58747c226c2e157042eeb1
7
- data.tar.gz: c49c240cf33683a926ee11525c5c20d162c28cf494880feff76cbe57a611e51478708791ee4a8eeda6f7fc63c243d11417f8b841b8491ac6483187b304608ba8
6
+ metadata.gz: 495dbecbf3a741693d4da00b4cab946b5267f3a71cded1dff692586df537c49832b5fbfb7e12b3500b71d3f9e42a7e000c544df0e55bd273e1931c4819bd2ff0
7
+ data.tar.gz: eafb9be0c814ca133d04fc8b5af5d4e7a33618e3805a8fa8b7907ef69bc9e00da659439c2104d50cb19cd66892ae4e5e7d9654b2f1745ca4d04bb3826779ccec
data/README.md CHANGED
@@ -16,6 +16,10 @@ and is not backward compatible with 2.* series.
16
16
 
17
17
  Since [v3.0.17](https://github.com/Mangopay/mangopay2-ruby-sdk/releases/tag/v3.0.17) of the SDK, you must be using at least v2.01 of the API (more information about the changes required [here](https://docs.mangopay.com/api-v2-01-overview/))
18
18
 
19
+ Account creation
20
+ -------------------------------------------------
21
+ You can get yourself a [free sandbox account](https://www.mangopay.com/signup/create-sandbox/) or sign up for a [production account](https://www.mangopay.com/signup/submit-your-app/go-live/) (note that validation of your production account can take a few days, so think about doing it in advance of when you actually want to go live).
22
+
19
23
  ## Usage
20
24
 
21
25
  ### Install
@@ -1,5 +1,6 @@
1
1
  require 'net/http'
2
2
  require 'cgi/util'
3
+ require 'digest/md5'
3
4
  require 'multi_json'
4
5
 
5
6
  # helpers
@@ -29,6 +30,7 @@ module MangoPay
29
30
  autoload :Hook, 'mangopay/hook'
30
31
  autoload :Refund, 'mangopay/refund'
31
32
  autoload :Dispute, 'mangopay/dispute'
33
+ autoload :Mandate, 'mangopay/mandate'
32
34
  autoload :JSON, 'mangopay/json'
33
35
  autoload :AuthorizationToken, 'mangopay/authorization_token'
34
36
 
@@ -15,17 +15,26 @@ module MangoPay
15
15
 
16
16
  def get_token
17
17
  token = storage.get
18
- if token.nil? || token['timestamp'].nil? || token['timestamp'] <= Time.now
18
+ env_key = get_environment_key_for_token
19
+ if token.nil? || token['timestamp'].nil? || token['timestamp'] <= Time.now || token['environment_key'] != env_key
19
20
  token = MangoPay.request(:post, "/#{MangoPay.version_code}/oauth/token", {}, {}, {}, Proc.new do |req|
20
21
  cfg = MangoPay.configuration
21
22
  req.basic_auth cfg.client_id, cfg.client_passphrase
22
23
  req.body = 'grant_type=client_credentials'
23
24
  end)
24
25
  token['timestamp'] = Time.now + token['expires_in'].to_i
26
+ token['environment_key'] = env_key
25
27
  storage.store token
26
28
  end
27
29
  token
28
30
  end
31
+
32
+ def get_environment_key_for_token
33
+ cfg = MangoPay.configuration
34
+ key = "#{cfg.root_url}|#{cfg.client_id}|#{cfg.client_passphrase}"
35
+ key = Digest::MD5.hexdigest(key)
36
+ key
37
+ end
29
38
  end
30
39
  end
31
40
 
@@ -1,11 +1,41 @@
1
+ require 'base64'
2
+
1
3
  module MangoPay
2
4
  class Client < Resource
3
5
 
4
- def self.create(params)
5
- MangoPay.request(:post, '/api/clients/', params, {}, {
6
- 'user_agent' => "MangoPay V2 RubyBindings/#{VERSION}",
7
- 'Content-Type' => 'application/json'
8
- })
6
+ class << self
7
+
8
+ def create(params)
9
+ MangoPay.request(:post, '/clients/', params, {}, {
10
+ 'user_agent' => "MangoPay V2 RubyBindings/#{VERSION}",
11
+ 'Content-Type' => 'application/json'
12
+ })
13
+ end
14
+
15
+ # see https://docs.mangopay.com/api-references/client-details/
16
+ def fetch()
17
+ MangoPay.request(:get, url())
18
+ end
19
+
20
+ # see https://docs.mangopay.com/api-references/client-details/
21
+ def update(params)
22
+ MangoPay.request(:put, url(), params)
23
+ end
24
+
25
+ # see https://docs.mangopay.com/api-references/client-details/
26
+ def upload_logo(file_content_base64, file_path = nil)
27
+ if file_content_base64.nil? && !file_path.nil?
28
+ bts = File.open(file_path, 'rb') { |f| f.read }
29
+ file_content_base64 = Base64.encode64(bts)
30
+ end
31
+ # normally it returns 204 HTTP code on success
32
+ begin
33
+ MangoPay.request(:put, url() + '/logo', {'File' => file_content_base64})
34
+ rescue ResponseError => ex
35
+ raise ex unless ex.code == '204'
36
+ end
37
+ end
38
+
9
39
  end
10
40
  end
11
41
  end
@@ -55,6 +55,12 @@ module MangoPay
55
55
  url = "#{MangoPay.api_path}/repudiations/#{repudiation_id}/settlementtransfer/"
56
56
  MangoPay.request(:post, url, params, {}, idempotency_key)
57
57
  end
58
+
59
+ # see https://docs.mangopay.com/api-references/disputes/settlement-transfers/
60
+ def fetch_settlement_transfer(transfer_id)
61
+ url = "#{MangoPay.api_path}/settlements/#{transfer_id}"
62
+ MangoPay.request(:get, url)
63
+ end
58
64
 
59
65
  #####################################################
60
66
  # documents
@@ -15,7 +15,8 @@ module MangoPay
15
15
 
16
16
  # Fetches the KYC document belonging to the given +user_id+, with the given +document_id+.
17
17
  def fetch(user_id, document_id)
18
- MangoPay.request(:get, url(user_id, document_id))
18
+ url = (user_id) ? url(user_id, document_id) : "#{MangoPay.api_path}/KYC/documents/#{CGI.escape(document_id.to_s)}"
19
+ MangoPay.request(:get, url)
19
20
  end
20
21
 
21
22
  # Fetches list of KYC documents:
@@ -0,0 +1,32 @@
1
+ module MangoPay
2
+
3
+ # See https://docs.mangopay.com/api-references/mandates/
4
+ class Mandate < Resource
5
+ include HTTPCalls::Fetch
6
+
7
+ class << self
8
+
9
+ # +params+: hash; see https://docs.mangopay.com/api-references/mandates/
10
+ def create(params, idempotency_key = nil)
11
+ url = "#{MangoPay.api_path}/mandates/directdebit/web"
12
+ MangoPay.request(:post, url, params, {}, idempotency_key)
13
+ end
14
+
15
+ def cancel(id)
16
+ url = "#{MangoPay.api_path}/mandates/#{id}/cancel"
17
+ MangoPay.request(:put, url)
18
+ end
19
+
20
+ def fetch_for_user(user_id, filters = {})
21
+ url = "#{MangoPay.api_path}/users/#{user_id}/mandates"
22
+ MangoPay.request(:get, url, {}, filters)
23
+ end
24
+
25
+ def fetch_for_user_bank_account(user_id, bank_account_id, filters = {})
26
+ url = "#{MangoPay.api_path}/users/#{user_id}/bankaccounts/#{bank_account_id}/mandates"
27
+ MangoPay.request(:get, url, {}, filters)
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -59,6 +59,14 @@ module MangoPay
59
59
  end
60
60
  end
61
61
 
62
+ # See https://docs.mangopay.com/api-references/payins/direct-debit-pay-in-direct/
63
+ class Direct < Resource
64
+ include HTTPCalls::Create
65
+ def self.url(*)
66
+ "#{MangoPay.api_path}/payins/directdebit/#{CGI.escape(class_name.downcase)}"
67
+ end
68
+ end
69
+
62
70
  end
63
71
 
64
72
  end
@@ -1,3 +1,3 @@
1
1
  module MangoPay
2
- VERSION = '3.0.20' # idempotency support
2
+ VERSION = '3.0.21' # Direct debit
3
3
  end
@@ -5,11 +5,11 @@ require 'mangopay/version'
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'mangopay'
7
7
  s.version = MangoPay::VERSION
8
- s.summary = "Ruby bindings for the version 2 of the MangoPay API"
8
+ s.summary = "Ruby bindings for the version 2 of the MANGOPAY API"
9
9
  s.description = <<-EOF
10
- The mangopay Gem makes interacting with MangoPay Services much easier.
11
- For any questions regarding the use of MangoPay's Services feel free to contact us at http://www.mangopay.com/get-started-2/
12
- You can find more documentation about MangoPay Services at http://docs.mangopay.com/
10
+ The mangopay Gem makes interacting with MANGOPAY Services much easier.
11
+ For any questions regarding the use of MANGOPAY's Services feel free to contact us at http://www.mangopay.com/get-started-2/
12
+ You can find more documentation about MANGOPAY Services at http://docs.mangopay.com/
13
13
  EOF
14
14
  s.authors = ['Geoffroy Lorieux', 'Sergiusz Woznicki']
15
15
  s.email = 'support@mangopay.com'
@@ -25,4 +25,50 @@ describe MangoPay::Client do
25
25
  }.to raise_error MangoPay::ResponseError
26
26
  end
27
27
  end
28
+
29
+ describe 'FETCH' do
30
+ it 'fetches the current client details' do
31
+ clnt = MangoPay::Client.fetch
32
+ expect(clnt['ClientId']).to eq(MangoPay.configuration.client_id)
33
+ end
34
+ end
35
+
36
+ describe 'UPDATE' do
37
+ it 'updates the current client details' do
38
+ clnt = MangoPay::Client.fetch
39
+ before = clnt['PrimaryThemeColour']
40
+ after = before == '#aaaaaa' ? '#bbbbbb' : '#aaaaaa' # change the color
41
+ clnt['PrimaryThemeColour'] = after
42
+
43
+ updated = MangoPay::Client.update(clnt)
44
+ expect(updated['ClientId']).to eq(MangoPay.configuration.client_id)
45
+ expect(updated['PrimaryThemeColour']).to eq(after)
46
+ end
47
+ end
48
+
49
+ describe 'UPLOAD LOGO' do
50
+ it 'accepts Base64 encoded file content' do
51
+ fnm = __FILE__.sub('.rb', '.png')
52
+ bts = File.open(fnm, 'rb') { |f| f.read }
53
+ b64 = Base64.encode64(bts)
54
+ ret = MangoPay::Client.upload_logo(b64)
55
+ expect(ret).to be_nil
56
+ end
57
+
58
+ it 'accepts file path' do
59
+ fnm = __FILE__.sub('.rb', '.png')
60
+ ret = MangoPay::Client.upload_logo(nil, fnm)
61
+ expect(ret).to be_nil
62
+ end
63
+
64
+ it 'fails when input string is not base64-encoded' do
65
+ file = 'any file content...'
66
+ expect { MangoPay::Client.upload_logo(file) }.to raise_error { |err|
67
+ expect(err).to be_a MangoPay::ResponseError
68
+ expect(err.code).to eq '400'
69
+ expect(err.type).to eq 'param_error'
70
+ }
71
+ end
72
+ end
73
+
28
74
  end
@@ -25,7 +25,8 @@ describe MangoPay::Dispute do
25
25
 
26
26
  describe 'TRANSACTIONS' do
27
27
  it 'fetches transactions for dispute' do
28
- id = @disputes.first['Id']
28
+ dispute = @disputes.find { |d| d['DisputeType'] == 'NOT_CONTESTABLE' }
29
+ id = dispute['Id']
29
30
  transactions = MangoPay::Dispute.transactions(id, {'per_page' => 1})
30
31
  expect(transactions).to be_kind_of(Array)
31
32
  expect(transactions).not_to be_empty
@@ -34,7 +35,8 @@ describe MangoPay::Dispute do
34
35
 
35
36
  describe 'FETCH FOR USER AND WALLET' do
36
37
  it 'fetches disputes for user' do
37
- id = @disputes.first['Id']
38
+ dispute = @disputes.find { |d| d['DisputeType'] == 'NOT_CONTESTABLE' }
39
+ id = dispute['Id']
38
40
  transactions = MangoPay::Dispute.transactions(id, {'per_page' => 1})
39
41
  user_id = transactions[0]['AuthorId']
40
42
  disputes = MangoPay::Dispute.fetch_for_user(user_id, {'per_page' => 1})
@@ -64,8 +66,8 @@ describe MangoPay::Dispute do
64
66
 
65
67
  describe 'FETCH REPUDIATION' do
66
68
  it 'fetches a repudiation' do
67
- dispute = @disputes.find {|disp| disp['InitialTransactionId'] != nil}
68
- expect(dispute).not_to be_nil, "Cannot test closing dispute because there's no disputes with transaction ID in the disputes list."
69
+ dispute = @disputes.find {|disp| disp['InitialTransactionId'] != nil && disp['DisputeType'] == 'NOT_CONTESTABLE'}
70
+ expect(dispute).not_to be_nil, "Cannot test closing dispute because there's no not contestable disputes with transaction ID in the disputes list."
69
71
  transactions = MangoPay::Dispute.transactions(dispute['Id'], {'per_page' => 1})
70
72
  repudiation_id = transactions[0]['Id']
71
73
  repudiation = MangoPay::Dispute.fetch_repudiation(repudiation_id)
@@ -74,10 +76,10 @@ describe MangoPay::Dispute do
74
76
  end
75
77
  end
76
78
 
77
- describe 'CREATE SETTLEMENT TRANSFER' do
78
- it 'creates settlement transfer' do
79
- dispute = @disputes.find {|disp| disp['Status'] == 'CLOSED'}
80
- expect(dispute).not_to be_nil, "Cannot test creating settlement transfer because there's no closed disputes in the disputes list."
79
+ describe 'CREATE AND FETCH SETTLEMENT TRANSFER' do
80
+ it 'creates and fetches settlement transfer' do
81
+ dispute = @disputes.find {|disp| disp['Status'] == 'CLOSED' && disp['DisputeType'] == 'NOT_CONTESTABLE'}
82
+ expect(dispute).not_to be_nil, "Cannot test creating settlement transfer because there's no closed, not contestable disputes in the disputes list."
81
83
  transactions = MangoPay::Dispute.transactions(dispute['Id'], {'per_page' => 1})
82
84
  repudiation_id = transactions[0]['Id']
83
85
  repudiation = MangoPay::Dispute.fetch_repudiation(repudiation_id)
@@ -87,9 +89,14 @@ describe MangoPay::Dispute do
87
89
  Fees: {Currency: 'EUR', Amount: 0},
88
90
  Tag: 'Custom tag data'
89
91
  }
92
+
90
93
  transfer = MangoPay::Dispute.create_settlement_transfer(repudiation_id, params)
91
94
  expect(transfer['Type']).to eq('TRANSFER')
92
95
  expect(transfer['Nature']).to eq('SETTLEMENT')
96
+
97
+ fetched_transfer = MangoPay::Dispute.fetch_settlement_transfer(transfer['Id'])
98
+ expect(fetched_transfer['Id']).to eq(transfer['Id'])
99
+ expect(fetched_transfer['CreationDate']).to eq(transfer['CreationDate'])
93
100
  end
94
101
  end
95
102
 
@@ -136,7 +143,10 @@ describe MangoPay::Dispute do
136
143
  end
137
144
 
138
145
  it 'fetches a list of documents' do
139
- disp = find_dispute
146
+ disp = @disputes.find {|disp| disp['Status'] == 'SUBMITTED'}
147
+ disp = test_contest_dispute if disp == nil
148
+ expect(disp).not_to be_nil, "Cannot test fetching dispute documents because there's no dispute with expected status in the disputes list."
149
+
140
150
  doc1 = create_doc(disp)
141
151
  doc2 = create_doc(disp) # for the same dispute
142
152
 
@@ -195,8 +205,7 @@ describe MangoPay::Dispute do
195
205
  end
196
206
  end
197
207
 
198
- describe 'CONTEST' do
199
- it 'contests a dispute' do
208
+ def test_contest_dispute
200
209
  dispute = @disputes.find do |disp|
201
210
  ['PENDING_CLIENT_ACTION', 'REOPENED_PENDING_CLIENT_ACTION'].include?(disp['Status']) &&
202
211
  ['CONTESTABLE', 'RETRIEVAL'].include?(disp['DisputeType'])
@@ -207,6 +216,12 @@ describe MangoPay::Dispute do
207
216
  changed_dispute = MangoPay::Dispute.contest(id, contested_funds)
208
217
  expect(changed_dispute['Id']).to eq(id)
209
218
  expect(changed_dispute['Status']).to eq('SUBMITTED')
219
+ changed_dispute
220
+ end
221
+
222
+ describe 'CONTEST' do
223
+ it 'contests a dispute' do
224
+ test_contest_dispute
210
225
  end
211
226
  end
212
227
 
@@ -236,5 +251,4 @@ describe MangoPay::Dispute do
236
251
  expect(changed_dispute['Status']).to eq('CLOSED')
237
252
  end
238
253
  end
239
-
240
254
  end
@@ -26,6 +26,11 @@ describe MangoPay::KycDocument do
26
26
  document = MangoPay::KycDocument.fetch(new_natural_user['Id'], new_document['Id'])
27
27
  expect(document['Id']).to eq(new_document['Id'])
28
28
  end
29
+
30
+ it 'fetches a document just by id' do
31
+ document = MangoPay::KycDocument.fetch(nil, new_document['Id'])
32
+ expect(document['Id']).to eq(new_document['Id'])
33
+ end
29
34
  end
30
35
 
31
36
  describe 'FETCH ALL' do
@@ -0,0 +1,92 @@
1
+ describe MangoPay::Mandate do
2
+ include_context 'mandates'
3
+
4
+ def check_status(mandate)
5
+ expect(mandate['Status']).to eq('CREATED')
6
+ expect(mandate['MandateType']).to eq('DIRECT_DEBIT')
7
+ expect(mandate['ExecutionType']).to eq('WEB')
8
+ end
9
+
10
+ describe 'CREATE' do
11
+ it 'creates a mandate' do
12
+ mandate = new_mandate
13
+ expect(mandate['Id']).to_not be_nil
14
+ check_status(mandate)
15
+ end
16
+ end
17
+
18
+ describe 'FETCH' do
19
+
20
+ it 'fetches a mandate' do
21
+ created = new_mandate
22
+ fetched = MangoPay::Mandate.fetch(created['Id'])
23
+ expect(fetched['Id']).to eq(created['Id'])
24
+ expect(fetched['CreationDate']).to eq(created['CreationDate'])
25
+ expect(fetched['UserId']).to eq(created['UserId'])
26
+ expect(fetched['BankAccountId']).to eq(created['BankAccountId'])
27
+ check_status(created)
28
+ check_status(fetched)
29
+ end
30
+
31
+ it 'fetches (all) mandates' do
32
+ created1 = create_new_mandate()
33
+ created2 = create_new_mandate()
34
+ fetched = MangoPay::Mandate.fetch({'per_page' => 2, 'sort' => 'CreationDate:desc'})
35
+
36
+ expect(fetched).to be_kind_of(Array)
37
+ expect(fetched.count).to eq 2 # exactly 2 as pagiantion requested
38
+
39
+ # all 2 are at top as lastly created
40
+ # but may share the same CreationDate
41
+ # so the order between them is undetermined
42
+ expect(fetched.map {|m| m['Id']}).to include(created1['Id'], created2['Id'])
43
+ end
44
+
45
+ end
46
+
47
+ describe 'FETCH FOR USER AND BANK ACCOUNT' do
48
+
49
+ it 'fetches mandates for user' do
50
+ created1 = create_new_mandate()
51
+ created2 = create_new_mandate()
52
+ expect(created1['UserId']).to eq(created2['UserId']) # both for same user
53
+
54
+ user_id = created1['UserId']
55
+ fetched = MangoPay::Mandate.fetch_for_user(user_id, {'per_page' => 2, 'sort' => 'CreationDate:desc'})
56
+
57
+ expect(fetched).to be_kind_of(Array)
58
+ expect(fetched.count).to eq 2 # exactly 2 as pagiantion requested
59
+ expect(fetched.map {|m| m['Id']}).to include(created1['Id'], created2['Id'])
60
+ expect((fetched.map {|m| m['UserId']}).uniq).to eq([user_id])
61
+ end
62
+
63
+ it 'fetches mandates for user bank account' do
64
+ created1 = create_new_mandate()
65
+ created2 = create_new_mandate()
66
+ expect(created1['UserId']).to eq(created2['UserId']) # both for same user
67
+ expect(created1['BankAccountId']).to eq(created2['BankAccountId']) # both for same bank account
68
+
69
+ user_id = created1['UserId']
70
+ bank_acc_id = created1['BankAccountId']
71
+ fetched = MangoPay::Mandate.fetch_for_user_bank_account(user_id, bank_acc_id, {'per_page' => 2, 'sort' => 'CreationDate:desc'})
72
+
73
+ expect(fetched).to be_kind_of(Array)
74
+ expect(fetched.count).to eq 2 # exactly 2 as pagiantion requested
75
+ expect(fetched.map {|m| m['Id']}).to include(created1['Id'], created2['Id'])
76
+ expect((fetched.map {|m| m['UserId']}).uniq).to eq([user_id])
77
+ end
78
+
79
+ end
80
+
81
+ describe 'CANCEL' do
82
+ it 'cancels a mandate' do
83
+ created = new_mandate
84
+ expect { MangoPay::Mandate.cancel(created['Id']) }.to raise_error { |err|
85
+ expect(err).to be_a MangoPay::ResponseError
86
+ expect(err.code).to eq '400'
87
+ expect(err.type).to eq 'mandate_cannot_be_cancelled'
88
+ }
89
+ end
90
+ end
91
+
92
+ end
@@ -0,0 +1,37 @@
1
+ describe MangoPay::PayIn::DirectDebit::Direct, type: :feature do
2
+ include_context 'payins'
3
+
4
+ def check_type_and_status(payin)
5
+ expect(payin['Type']).to eq('PAYIN')
6
+ expect(payin['Nature']).to eq('REGULAR')
7
+ expect(payin['PaymentType']).to eq('DIRECT_DEBIT')
8
+ expect(payin['ExecutionType']).to eq('DIRECT')
9
+
10
+ # FAILED: the related Mandate is not confirmed yet
11
+ expect(payin['Status']).to eq('FAILED')
12
+ expect(payin['ResultMessage']).to eq('The Status of this Mandate does not allow for payments')
13
+ expect(payin['ExecutionDate']).to be_nil
14
+ end
15
+
16
+ describe 'CREATE' do
17
+ it 'creates a directdebit direct payin' do
18
+ created = new_payin_directdebit_direct
19
+ expect(created['Id']).not_to be_nil
20
+ check_type_and_status(created)
21
+ end
22
+ end
23
+
24
+ describe 'FETCH' do
25
+ it 'fetches a payin' do
26
+ created = new_payin_directdebit_direct
27
+ fetched = MangoPay::PayIn.fetch(created['Id'])
28
+ expect(fetched['Id']).to eq(created['Id'])
29
+ expect(fetched['CreationDate']).to eq(created['CreationDate'])
30
+ expect(fetched['CreditedFunds']).to eq(created['CreditedFunds'])
31
+ expect(fetched['CreditedWalletId']).to eq(created['CreditedWalletId'])
32
+ check_type_and_status(created)
33
+ check_type_and_status(fetched)
34
+ end
35
+ end
36
+
37
+ end
@@ -146,6 +146,22 @@ shared_context 'bank_accounts' do
146
146
  }
147
147
  end
148
148
 
149
+ ###############################################
150
+ shared_context 'mandates' do
151
+ ###############################################
152
+ include_context 'bank_accounts'
153
+
154
+ let(:new_mandate) { create_new_mandate() }
155
+ def create_new_mandate()
156
+ MangoPay::Mandate.create({
157
+ BankAccountId: new_bank_account['Id'],
158
+ Culture: 'FR',
159
+ ReturnURL: MangoPay.configuration.root_url,
160
+ Tag: 'Test mandate'
161
+ })
162
+ end
163
+ end
164
+
149
165
  ###############################################
150
166
  shared_context 'kyc_documents' do
151
167
  ###############################################
@@ -165,6 +181,7 @@ shared_context 'payins' do
165
181
  ###############################################
166
182
  include_context 'users'
167
183
  include_context 'wallets'
184
+ include_context 'mandates'
168
185
 
169
186
  ###############################################
170
187
  # directdebit/web
@@ -184,6 +201,23 @@ shared_context 'payins' do
184
201
  })
185
202
  }
186
203
 
204
+ ###############################################
205
+ # directdebit/direct
206
+ ###############################################
207
+
208
+ let(:new_payin_directdebit_direct) {
209
+ MangoPay::PayIn::DirectDebit::Direct.create({
210
+ AuthorId: new_natural_user['Id'],
211
+ CreditedUserId: new_wallet['Owners'][0],
212
+ CreditedWalletId: new_wallet['Id'],
213
+ DebitedFunds: { Currency: 'EUR', Amount: 1000 },
214
+ Fees: { Currency: 'EUR', Amount: 0 },
215
+ MandateId: new_mandate['Id'],
216
+ ReturnURL: MangoPay.configuration.root_url,
217
+ Tag: 'Test PayIn/DirectDebit/Direct'
218
+ })
219
+ }
220
+
187
221
  ###############################################
188
222
  # card/web
189
223
  ###############################################
@@ -10,12 +10,8 @@ def reset_mangopay_configuration
10
10
  c.client_id = 'sdk-unit-tests'
11
11
 
12
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'
13
+ c.root_url = 'https://api.sandbox.mangopay.com'
14
+ c.client_passphrase = 'cqFfFrWfCcb7UadHNxx2C9Lo6Djw8ZduLi7J9USTmu8bhxxpju'
19
15
 
20
16
  c.temp_dir = File.expand_path('../tmp', __FILE__)
21
17
  require 'fileutils'
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.20
4
+ version: 3.0.21
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: 2016-01-25 00:00:00.000000000 Z
12
+ date: 2016-04-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
@@ -54,9 +54,9 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  version: 3.0.0
56
56
  description: |2
57
- The mangopay Gem makes interacting with MangoPay Services much easier.
58
- For any questions regarding the use of MangoPay's Services feel free to contact us at http://www.mangopay.com/get-started-2/
59
- You can find more documentation about MangoPay Services at http://docs.mangopay.com/
57
+ The mangopay Gem makes interacting with MANGOPAY Services much easier.
58
+ For any questions regarding the use of MANGOPAY's Services feel free to contact us at http://www.mangopay.com/get-started-2/
59
+ You can find more documentation about MANGOPAY Services at http://docs.mangopay.com/
60
60
  email: support@mangopay.com
61
61
  executables:
62
62
  - mangopay
@@ -85,6 +85,7 @@ files:
85
85
  - lib/mangopay/json.rb
86
86
  - lib/mangopay/kyc_document.rb
87
87
  - lib/mangopay/legal_user.rb
88
+ - lib/mangopay/mandate.rb
88
89
  - lib/mangopay/natural_user.rb
89
90
  - lib/mangopay/pay_in.rb
90
91
  - lib/mangopay/pay_out.rb
@@ -101,6 +102,7 @@ files:
101
102
  - spec/mangopay/authorization_token_spec.rb
102
103
  - spec/mangopay/bank_account_spec.rb
103
104
  - spec/mangopay/card_registration_spec.rb
105
+ - spec/mangopay/client_spec.png
104
106
  - spec/mangopay/client_spec.rb
105
107
  - spec/mangopay/configuration_spec.rb
106
108
  - spec/mangopay/dispute_spec.png
@@ -108,12 +110,14 @@ files:
108
110
  - spec/mangopay/event_spec.rb
109
111
  - spec/mangopay/fetch_filters_spec.rb
110
112
  - spec/mangopay/hook_spec.rb
111
- - spec/mangopay/idempotency_spec
113
+ - spec/mangopay/idempotency_spec.rb
112
114
  - spec/mangopay/kyc_document_spec.png
113
115
  - spec/mangopay/kyc_document_spec.rb
116
+ - spec/mangopay/mandate_spec.rb
114
117
  - spec/mangopay/payin_bankwire_direct_spec.rb
115
118
  - spec/mangopay/payin_card_direct_spec.rb
116
119
  - spec/mangopay/payin_card_web_spec.rb
120
+ - spec/mangopay/payin_directdebit_direct_spec.rb
117
121
  - spec/mangopay/payin_directdebit_web_spec.rb
118
122
  - spec/mangopay/payin_preauthorized_direct_spec.rb
119
123
  - spec/mangopay/payout_bankwire_spec.rb
@@ -150,11 +154,12 @@ rubyforge_project:
150
154
  rubygems_version: 2.4.5.1
151
155
  signing_key:
152
156
  specification_version: 4
153
- summary: Ruby bindings for the version 2 of the MangoPay API
157
+ summary: Ruby bindings for the version 2 of the MANGOPAY API
154
158
  test_files:
155
159
  - spec/mangopay/authorization_token_spec.rb
156
160
  - spec/mangopay/bank_account_spec.rb
157
161
  - spec/mangopay/card_registration_spec.rb
162
+ - spec/mangopay/client_spec.png
158
163
  - spec/mangopay/client_spec.rb
159
164
  - spec/mangopay/configuration_spec.rb
160
165
  - spec/mangopay/dispute_spec.png
@@ -162,12 +167,14 @@ test_files:
162
167
  - spec/mangopay/event_spec.rb
163
168
  - spec/mangopay/fetch_filters_spec.rb
164
169
  - spec/mangopay/hook_spec.rb
165
- - spec/mangopay/idempotency_spec
170
+ - spec/mangopay/idempotency_spec.rb
166
171
  - spec/mangopay/kyc_document_spec.png
167
172
  - spec/mangopay/kyc_document_spec.rb
173
+ - spec/mangopay/mandate_spec.rb
168
174
  - spec/mangopay/payin_bankwire_direct_spec.rb
169
175
  - spec/mangopay/payin_card_direct_spec.rb
170
176
  - spec/mangopay/payin_card_web_spec.rb
177
+ - spec/mangopay/payin_directdebit_direct_spec.rb
171
178
  - spec/mangopay/payin_directdebit_web_spec.rb
172
179
  - spec/mangopay/payin_preauthorized_direct_spec.rb
173
180
  - spec/mangopay/payout_bankwire_spec.rb