mangopay 3.0.30 → 3.0.34
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -1
- data/CHANGELOG.md +35 -0
- data/README.md +5 -5
- data/lib/generators/mangopay/install_generator.rb +1 -1
- data/lib/generators/templates/mangopay.rb.erb +1 -1
- data/lib/mangopay.rb +19 -9
- data/lib/mangopay/authorization_token.rb +2 -2
- data/lib/mangopay/bank_account.rb +11 -0
- data/lib/mangopay/card.rb +15 -0
- data/lib/mangopay/filter_parameters.rb +6 -1
- data/lib/mangopay/http_calls.rb +7 -7
- data/lib/mangopay/legal_user.rb +0 -8
- data/lib/mangopay/mandate.rb +10 -0
- data/lib/mangopay/pay_in.rb +31 -0
- data/lib/mangopay/pay_out.rb +11 -0
- data/lib/mangopay/refund.rb +11 -0
- data/lib/mangopay/transfer.rb +11 -0
- data/lib/mangopay/ubo.rb +26 -0
- data/lib/mangopay/ubo_declaration.rb +22 -11
- data/lib/mangopay/user.rb +24 -6
- data/lib/mangopay/version.rb +1 -1
- data/spec/mangopay/bank_account_spec.rb +8 -0
- data/spec/mangopay/card_registration_spec.rb +7 -0
- data/spec/mangopay/client_spec.rb +17 -6
- data/spec/mangopay/configuration_spec.rb +53 -1
- data/spec/mangopay/event_spec.rb +12 -10
- data/spec/mangopay/mandate_spec.rb +7 -0
- data/spec/mangopay/payin_applepay_direct_spec.rb +20 -0
- data/spec/mangopay/payin_bankwire_external_instruction_spec.rb +43 -4
- data/spec/mangopay/payin_card_web_spec.rb +17 -0
- data/spec/mangopay/payin_paypal_web_spec.rb +13 -1
- data/spec/mangopay/payout_bankwire_spec.rb +8 -0
- data/spec/mangopay/preauthorization_spec.rb +9 -0
- data/spec/mangopay/refund_spec.rb +13 -0
- data/spec/mangopay/shared_resources.rb +346 -240
- data/spec/mangopay/transfer_spec.rb +8 -0
- data/spec/mangopay/ubo_declaration_spec.rb +13 -17
- data/spec/mangopay/ubo_spec.rb +39 -0
- data/spec/mangopay/user_spec.rb +51 -16
- data/spec/spec_helper.rb +1 -1
- metadata +9 -3
@@ -51,4 +51,12 @@ describe MangoPay::PayOut::BankWire, type: :feature do
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
describe 'GET Refunds' do
|
55
|
+
it "fetches the pay-out's refunds" do
|
56
|
+
payout = new_payout_bankwire
|
57
|
+
refunds = MangoPay::PayOut.refunds(payout['Id'])
|
58
|
+
expect(refunds).to be_an(Array)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
54
62
|
end
|
@@ -39,4 +39,13 @@ describe MangoPay::PreAuthorization do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
describe 'FETCH FOR CARD' do
|
43
|
+
it "fetches a card's pre-authorizations" do
|
44
|
+
created = new_card_preauthorization
|
45
|
+
fetched = MangoPay::Card.get_pre_authorizations(created['CardId'])
|
46
|
+
|
47
|
+
expect(fetched).to be_an(Array)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
42
51
|
end
|
@@ -18,4 +18,17 @@ describe MangoPay::Refund do
|
|
18
18
|
expect(refund['CreditedWalletId']).to eq(transfer['DebitedWalletId'])
|
19
19
|
end
|
20
20
|
end
|
21
|
+
|
22
|
+
#describe 'FETCH for Repudiation' do
|
23
|
+
# it "fetches a repudiation's refunds" do
|
24
|
+
# disputes = MangoPay::Dispute.fetch
|
25
|
+
# dispute = disputes.find do |dispute|
|
26
|
+
# dispute['DisputeType'] == 'NOT_CONTESTABLE'\
|
27
|
+
# && !dispute['InitialTransactionId'].nil?
|
28
|
+
# end
|
29
|
+
# repudiation_id = MangoPay::Dispute.transactions(dispute['Id'])[0]['Id']
|
30
|
+
# refunds = MangoPay::Refund.of_repudiation(repudiation_id)
|
31
|
+
# expect(refunds).to be_an(Array)
|
32
|
+
# end
|
33
|
+
# end
|
21
34
|
end
|
@@ -1,82 +1,86 @@
|
|
1
1
|
###############################################
|
2
2
|
shared_context 'users' do
|
3
|
-
###############################################
|
3
|
+
###############################################
|
4
4
|
|
5
5
|
let(:new_natural_user) { create_new_natural_user }
|
6
|
+
|
6
7
|
def define_new_natural_user
|
7
8
|
{
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
9
|
+
Tag: 'Test natural user',
|
10
|
+
Email: 'my@email.com',
|
11
|
+
FirstName: 'John',
|
12
|
+
LastName: 'Doe',
|
13
|
+
Address: {
|
14
|
+
AddressLine1: 'Le Palais Royal',
|
15
|
+
AddressLine2: '8 Rue de Montpensier',
|
16
|
+
City: 'Paris',
|
17
|
+
Region: '',
|
18
|
+
PostalCode: '75001',
|
19
|
+
Country: 'FR'
|
20
|
+
},
|
21
|
+
Birthday: 1_300_186_358,
|
22
|
+
Birthplace: 'Paris',
|
23
|
+
Nationality: 'FR',
|
24
|
+
CountryOfResidence: 'FR',
|
25
|
+
Occupation: 'Worker',
|
26
|
+
IncomeRange: 1
|
26
27
|
}
|
27
28
|
end
|
29
|
+
|
28
30
|
def create_new_natural_user
|
29
31
|
MangoPay::NaturalUser.create(define_new_natural_user)
|
30
32
|
end
|
31
33
|
|
32
|
-
let(:new_legal_user)
|
33
|
-
MangoPay::LegalUser.create(
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
34
|
+
let(:new_legal_user) do
|
35
|
+
MangoPay::LegalUser.create(
|
36
|
+
Name: 'Super',
|
37
|
+
Email: 'super@email.com',
|
38
|
+
LegalPersonType: 'BUSINESS',
|
39
|
+
HeadquartersAddress: {
|
40
|
+
AddressLine1: '6 Parvis Notre-Dame',
|
41
|
+
AddressLine2: 'Pl. Jean-Paul II',
|
42
|
+
City: 'Paris',
|
43
|
+
Region: 'FR',
|
44
|
+
PostalCode: '75004',
|
45
|
+
Country: 'FR'
|
46
|
+
},
|
47
|
+
LegalRepresentativeFirstName: 'John',
|
48
|
+
LegalRepresentativeLastName: 'Doe',
|
49
|
+
LegalRepresentativeAdress: {
|
50
|
+
AddressLine1: '38 Rue de Montpensier',
|
51
|
+
AddressLine2: '',
|
52
|
+
City: 'Paris',
|
53
|
+
Region: '',
|
54
|
+
PostalCode: '75001',
|
55
|
+
Country: 'FR'
|
56
|
+
},
|
57
|
+
LegalRepresentativeEmail: 'john@doe.com',
|
58
|
+
LegalRepresentativeBirthday: 1_300_186_358,
|
59
|
+
LegalRepresentativeNationality: 'FR',
|
60
|
+
LegalRepresentativeCountryOfResidence: 'FR',
|
61
|
+
CompanyNumber: 'LU123456789',
|
62
|
+
Statute: '',
|
63
|
+
ProofOfRegistration: '',
|
64
|
+
ShareholderDeclaration: ''
|
65
|
+
)
|
66
|
+
end
|
64
67
|
end
|
65
68
|
|
66
69
|
###############################################
|
67
70
|
shared_context 'wallets' do
|
68
|
-
###############################################
|
71
|
+
###############################################
|
69
72
|
include_context 'users'
|
70
73
|
|
71
74
|
let(:new_wallet) { create_new_wallet(new_natural_user) }
|
72
75
|
let(:new_wallet_legal) { create_new_wallet(new_legal_user) }
|
76
|
+
|
73
77
|
def create_new_wallet(user)
|
74
|
-
MangoPay::Wallet.create(
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
78
|
+
MangoPay::Wallet.create(
|
79
|
+
Owners: [user['Id']],
|
80
|
+
Description: 'A test wallet',
|
81
|
+
Currency: 'EUR',
|
82
|
+
Tag: 'Test wallet'
|
83
|
+
)
|
80
84
|
end
|
81
85
|
|
82
86
|
def wallets_check_amounts(wlt1, amnt1, wlt2 = nil, amnt2 = nil)
|
@@ -85,69 +89,93 @@ shared_context 'wallets' do
|
|
85
89
|
end
|
86
90
|
|
87
91
|
def wallets_reload_and_check_amounts(wlt1, amnt1, wlt2 = nil, amnt2 = nil)
|
88
|
-
wlt1 = MangoPay::Wallet
|
89
|
-
wlt2 = MangoPay::Wallet
|
92
|
+
wlt1 = MangoPay::Wallet.fetch(wlt1['Id'])
|
93
|
+
wlt2 = MangoPay::Wallet.fetch(wlt2['Id']) if wlt2
|
90
94
|
wallets_check_amounts(wlt1, amnt1, wlt2, amnt2)
|
91
95
|
end
|
92
96
|
end
|
93
97
|
|
98
|
+
shared_context 'ubo' do
|
99
|
+
def new_ubo(user, ubo_declaration)
|
100
|
+
ubo = {
|
101
|
+
FirstName: 'John',
|
102
|
+
LastName: 'Doe',
|
103
|
+
Address: {
|
104
|
+
AddressLine1: '6 Parvis Notre-Dame',
|
105
|
+
AddressLine2: 'Pl. Jean-Paul II',
|
106
|
+
City: 'Paris',
|
107
|
+
Region: '',
|
108
|
+
PostalCode: '75004',
|
109
|
+
Country: 'FR'
|
110
|
+
},
|
111
|
+
Nationality: 'FR',
|
112
|
+
Birthday: 1_300_186_358,
|
113
|
+
Birthplace: {
|
114
|
+
City: 'Paris',
|
115
|
+
Country: 'FR'
|
116
|
+
}
|
117
|
+
}
|
118
|
+
MangoPay::Ubo.create(user['Id'], ubo_declaration['Id'], ubo)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
94
122
|
###############################################
|
95
123
|
shared_context 'bank_accounts' do
|
96
|
-
###############################################
|
124
|
+
###############################################
|
97
125
|
include_context 'users'
|
98
126
|
|
99
|
-
let(:new_bank_account)
|
100
|
-
MangoPay::BankAccount.create(new_natural_user['Id'],
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
}
|
127
|
+
let(:new_bank_account) do
|
128
|
+
MangoPay::BankAccount.create(new_natural_user['Id'],
|
129
|
+
Type: 'IBAN',
|
130
|
+
OwnerName: 'John',
|
131
|
+
OwnerAddress: {
|
132
|
+
AddressLine1: 'Le Palais Royal',
|
133
|
+
AddressLine2: '8 Rue de Montpensier',
|
134
|
+
City: 'Paris',
|
135
|
+
Region: '',
|
136
|
+
PostalCode: '75001',
|
137
|
+
Country: 'FR'
|
138
|
+
},
|
139
|
+
IBAN: 'FR7618829754160173622224154',
|
140
|
+
BIC: 'CMBRFR2BCME',
|
141
|
+
Tag: 'Test bank account')
|
142
|
+
end
|
116
143
|
end
|
117
144
|
|
118
145
|
###############################################
|
119
146
|
shared_context 'mandates' do
|
120
|
-
###############################################
|
147
|
+
###############################################
|
121
148
|
include_context 'bank_accounts'
|
122
149
|
|
123
|
-
let(:new_mandate) { create_new_mandate
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
150
|
+
let(:new_mandate) { create_new_mandate }
|
151
|
+
|
152
|
+
def create_new_mandate
|
153
|
+
MangoPay::Mandate.create(
|
154
|
+
BankAccountId: new_bank_account['Id'],
|
155
|
+
Culture: 'FR',
|
156
|
+
ReturnURL: MangoPay.configuration.root_url,
|
157
|
+
Tag: 'Test mandate'
|
158
|
+
)
|
131
159
|
end
|
132
160
|
end
|
133
161
|
|
134
162
|
###############################################
|
135
163
|
shared_context 'kyc_documents' do
|
136
|
-
###############################################
|
164
|
+
###############################################
|
137
165
|
include_context 'users'
|
138
166
|
|
139
167
|
let(:new_document) { create_new_document(new_natural_user) }
|
168
|
+
|
140
169
|
def create_new_document(user)
|
141
|
-
MangoPay::KycDocument.create(user['Id'],
|
142
|
-
|
143
|
-
|
144
|
-
})
|
170
|
+
MangoPay::KycDocument.create(user['Id'],
|
171
|
+
Type: 'IDENTITY_PROOF',
|
172
|
+
Tag: 'Test document')
|
145
173
|
end
|
146
174
|
end
|
147
175
|
|
148
176
|
###############################################
|
149
177
|
shared_context 'payins' do
|
150
|
-
###############################################
|
178
|
+
###############################################
|
151
179
|
include_context 'users'
|
152
180
|
include_context 'wallets'
|
153
181
|
include_context 'mandates'
|
@@ -156,118 +184,192 @@ shared_context 'payins' do
|
|
156
184
|
# directdebit/web
|
157
185
|
###############################################
|
158
186
|
|
159
|
-
let(:new_payin_directdebit_web)
|
160
|
-
MangoPay::PayIn::DirectDebit::Web.create(
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
187
|
+
let(:new_payin_directdebit_web) do
|
188
|
+
MangoPay::PayIn::DirectDebit::Web.create(
|
189
|
+
AuthorId: new_natural_user['Id'],
|
190
|
+
CreditedUserId: new_wallet['Owners'][0],
|
191
|
+
CreditedWalletId: new_wallet['Id'],
|
192
|
+
DebitedFunds: {Currency: 'EUR', Amount: 1000},
|
193
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
194
|
+
DirectDebitType: 'GIROPAY',
|
195
|
+
ReturnURL: MangoPay.configuration.root_url,
|
196
|
+
Culture: 'FR',
|
197
|
+
Tag: 'Test PayIn/DirectDebit/Web'
|
198
|
+
)
|
199
|
+
end
|
172
200
|
|
173
201
|
###############################################
|
174
202
|
# paypal/web
|
175
203
|
###############################################
|
176
204
|
|
177
|
-
let(:new_payin_paypal_web)
|
178
|
-
MangoPay::PayIn::PayPal::Web.create(
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
205
|
+
let(:new_payin_paypal_web) do
|
206
|
+
MangoPay::PayIn::PayPal::Web.create(
|
207
|
+
AuthorId: new_natural_user['Id'],
|
208
|
+
CreditedUserId: new_wallet['Owners'][0],
|
209
|
+
CreditedWalletId: new_wallet['Id'],
|
210
|
+
DebitedFunds: {Currency: 'EUR', Amount: 1000},
|
211
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
212
|
+
ReturnURL: MangoPay.configuration.root_url,
|
213
|
+
Culture: "FR",
|
214
|
+
Tag: 'Test PayIn/PayPal/Web'
|
215
|
+
)
|
216
|
+
end
|
217
|
+
|
218
|
+
###############################################
|
219
|
+
# applepay/direct
|
220
|
+
###############################################
|
221
|
+
|
222
|
+
let(:new_payin_applepay_direct) do
|
223
|
+
MangoPay::PayIn::ApplePay::Direct.create(
|
224
|
+
AuthorId: new_natural_user['Id'],
|
225
|
+
CreditedUserId: new_wallet['Owners'][0],
|
226
|
+
CreditedWalletId: new_wallet['Id'],
|
227
|
+
DebitedFunds: {Currency: 'EUR', Amount: 199},
|
228
|
+
Fees: {Currency: 'EUR', Amount: 1},
|
229
|
+
PaymentType: 'APPLEPAY',
|
230
|
+
PaymentData: {
|
231
|
+
TransactionId: '061EB32181A2D9CA42AD16031B476EEBAA62A9A095AD660E2759FBA52B51A61',
|
232
|
+
Network: 'VISA',
|
233
|
+
TokenData: "{\"version\":\"EC_v1\",\"data\":\"w4HMBVqNC9ghPP4zncTA\\/0oQAsduERfsx78oxgniynNjZLANTL6+0koEtkQnW\\/K38Zew8qV1GLp+fLHo+qCBpiKCIwlz3eoFBTbZU+8pYcjaeIYBX9SOxcwxXsNGrGLk+kBUqnpiSIPaAG1E+WPT8R1kjOCnGvtdombvricwRTQkGjtovPfzZo8LzD3ZQJnHMsWJ8QYDLyr\\/ZN9gtLAtsBAMvwManwiaG3pOIWpyeOQOb01YcEVO16EZBjaY4x4C\\/oyFLWDuKGvhbJwZqWh1d1o9JT29QVmvy3Oq2JEjq3c3NutYut4rwDEP4owqI40Nb7mP2ebmdNgnYyWfPmkRfDCRHIWtbMC35IPg5313B1dgXZ2BmyZRXD5p+mr67vAk7iFfjEpu3GieFqwZrTl3\\/pI5V8Sxe3SIYKgT5Hr7ow==\",\"signature\":\"MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIID5jCCA4ugAwIBAgIIaGD2mdnMpw8wCgYIKoZIzj0EAwIwejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE2MDYwMzE4MTY0MFoXDTIxMDYwMjE4MTY0MFowYjEoMCYGA1UEAwwfZWNjLXNtcC1icm9rZXItc2lnbl9VQzQtU0FOREJPWDEUMBIGA1UECwwLaU9TIFN5c3RlbXMxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgjD9q8Oc914gLFDZm0US5jfiqQHdbLPgsc1LUmeY+M9OvegaJajCHkwz3c6OKpbC9q+hkwNFxOh6RCbOlRsSlaOCAhEwggINMEUGCCsGAQUFBwEBBDkwNzA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwNC1hcHBsZWFpY2EzMDIwHQYDVR0OBBYEFAIkMAua7u1GMZekplopnkJxghxFMAwGA1UdEwEB\\/wQCMAAwHwYDVR0jBBgwFoAUI\\/JJxE+T5O8n5sT2KGw\\/orv9LkswggEdBgNVHSAEggEUMIIBEDCCAQwGCSqGSIb3Y2QFATCB\\/jCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA2BggrBgEFBQcCARYqaHR0cDovL3d3dy5hcHBsZS5jb20vY2VydGlmaWNhdGVhdXRob3JpdHkvMDQGA1UdHwQtMCswKaAnoCWGI2h0dHA6Ly9jcmwuYXBwbGUuY29tL2FwcGxlYWljYTMuY3JsMA4GA1UdDwEB\\/wQEAwIHgDAPBgkqhkiG92NkBh0EAgUAMAoGCCqGSM49BAMCA0kAMEYCIQDaHGOui+X2T44R6GVpN7m2nEcr6T6sMjOhZ5NuSo1egwIhAL1a+\\/hp88DKJ0sv3eT3FxWcs71xmbLKD\\/QJ3mWagrJNMIIC7jCCAnWgAwIBAgIISW0vvzqY2pcwCgYIKoZIzj0EAwIwZzEbMBkGA1UEAwwSQXBwbGUgUm9vdCBDQSAtIEczMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwHhcNMTQwNTA2MjM0NjMwWhcNMjkwNTA2MjM0NjMwWjB6MS4wLAYDVQQDDCVBcHBsZSBBcHBsaWNhdGlvbiBJbnRlZ3JhdGlvbiBDQSAtIEczMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATwFxGEGddkhdUaXiWBB3bogKLv3nuuTeCN\\/EuT4TNW1WZbNa4i0Jd2DSJOe7oI\\/XYXzojLdrtmcL7I6CmE\\/1RFo4H3MIH0MEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcwAYYqaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwNC1hcHBsZXJvb3RjYWczMB0GA1UdDgQWBBQj8knET5Pk7yfmxPYobD+iu\\/0uSzAPBgNVHRMBAf8EBTADAQH\\/MB8GA1UdIwQYMBaAFLuw3qFYM4iapIqZ3r6966\\/ayySrMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwuYXBwbGUuY29tL2FwcGxlcm9vdGNhZzMuY3JsMA4GA1UdDwEB\\/wQEAwIBBjAQBgoqhkiG92NkBgIOBAIFADAKBggqhkjOPQQDAgNnADBkAjA6z3KDURaZsYb7NcNWymK\\/9Bft2Q91TaKOvvGcgV5Ct4n4mPebWZ+Y1UENj53pwv4CMDIt1UQhsKMFd2xd8zg7kGf9F3wsIW2WT8ZyaYISb1T4en0bmcubCYkhYQaZDwmSHQAAMYIBizCCAYcCAQEwgYYwejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTAghoYPaZ2cynDzANBglghkgBZQMEAgEFAKCBlTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xOTA1MjMxMTA1MDdaMCoGCSqGSIb3DQEJNDEdMBswDQYJYIZIAWUDBAIBBQChCgYIKoZIzj0EAwIwLwYJKoZIhvcNAQkEMSIEIIvfGVQYBeOilcB7GNI8m8+FBVZ28QfA6BIXaggBja2PMAoGCCqGSM49BAMCBEYwRAIgU01yYfjlx9bvGeC5CU2RS5KBEG+15HH9tz\\/sg3qmQ14CID4F4ZJwAz+tXAUcAIzoMpYSnM8YBlnGJSTSp+LhspenAAAAAAAA\",\"header\":{\"ephemeralPublicKey\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0rs3wRpirXjPbFDQfPRdfEzRIZDWm0qn7Y0HB0PNzV1DDKfpYrnhRb4GEhBF\\/oEXBOe452PxbCnN1qAlqcSUWw==\",\"publicKeyHash\":\"saPRAqS7TZ4bAYwzBj8ezDDC55ZolyH1FL+Xc8fd93o=\",\"transactionId\":\"b061eb32181a2d9ca42ad16031b476eebaa62a9a095ad660e2759fba52b51a61\"}}"
|
234
|
+
},
|
235
|
+
StatementDescriptor: "php",
|
236
|
+
ReturnURL: MangoPay.configuration.root_url,
|
237
|
+
Tag: 'Test PayIn/ApplePay/Direct'
|
238
|
+
)
|
239
|
+
end
|
240
|
+
|
241
|
+
###############################################
|
242
|
+
# CANNOT BE TESTED AS WE CAN'T MOCK TOKEN GENERATION
|
243
|
+
# googlepay/direct
|
244
|
+
###############################################
|
245
|
+
let(:new_payin_googlepay_direct) do
|
246
|
+
MangoPay::PayIn::GooglePay::Direct.create(
|
247
|
+
AuthorId: new_natural_user['Id'],
|
248
|
+
CreditedUserId: new_wallet['Owners'][0],
|
249
|
+
CreditedWalletId: new_wallet['Id'],
|
250
|
+
DebitedFunds: {Currency: 'EUR', Amount: 199},
|
251
|
+
Fees: {Currency: 'EUR', Amount: 1},
|
252
|
+
PaymentData: {
|
253
|
+
TransactionId: '061EB32181A2D9CA42AD16031B476EEBAA62A9A095AD660E2759FBA52B51A61',
|
254
|
+
Network: 'VISA',
|
255
|
+
TokenData: "tokenData"
|
256
|
+
},
|
257
|
+
StatementDescriptor: "ruby",
|
258
|
+
ReturnURL: MangoPay.configuration.root_url,
|
259
|
+
Tag: 'Test PayIn/GooglePay/Direct',
|
260
|
+
Billing: {
|
261
|
+
Address: {
|
262
|
+
AddressLine1: 'AddressLine1',
|
263
|
+
AddressLine2: 'AddressLine2',
|
264
|
+
City: 'City',
|
265
|
+
Region: 'Region',
|
266
|
+
PostalCode: 'PostalCode',
|
267
|
+
CountryIso: 'FR'
|
268
|
+
}
|
269
|
+
}
|
270
|
+
)
|
271
|
+
end
|
272
|
+
|
273
|
+
|
274
|
+
###############################################
|
190
275
|
# directdebit/direct
|
191
276
|
###############################################
|
192
277
|
|
193
|
-
let(:new_payin_directdebit_direct)
|
194
|
-
MangoPay::PayIn::DirectDebit::Direct.create(
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
278
|
+
let(:new_payin_directdebit_direct) do
|
279
|
+
MangoPay::PayIn::DirectDebit::Direct.create(
|
280
|
+
AuthorId: new_natural_user['Id'],
|
281
|
+
CreditedUserId: new_wallet['Owners'][0],
|
282
|
+
CreditedWalletId: new_wallet['Id'],
|
283
|
+
DebitedFunds: {Currency: 'EUR', Amount: 1000},
|
284
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
285
|
+
MandateId: new_mandate['Id'],
|
286
|
+
ReturnURL: MangoPay.configuration.root_url,
|
287
|
+
Tag: 'Test PayIn/DirectDebit/Direct'
|
288
|
+
)
|
289
|
+
end
|
290
|
+
|
206
291
|
###############################################
|
207
292
|
# card/web
|
208
293
|
###############################################
|
209
294
|
|
210
|
-
let(:new_payin_card_web)
|
211
|
-
MangoPay::PayIn::Card::Web.create(
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
295
|
+
let(:new_payin_card_web) do
|
296
|
+
MangoPay::PayIn::Card::Web.create(
|
297
|
+
AuthorId: new_natural_user['Id'],
|
298
|
+
CreditedUserId: new_wallet['Owners'][0],
|
299
|
+
CreditedWalletId: new_wallet['Id'],
|
300
|
+
DebitedFunds: {Currency: 'EUR', Amount: 1000},
|
301
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
302
|
+
CardType: 'CB_VISA_MASTERCARD',
|
303
|
+
ReturnURL: MangoPay.configuration.root_url,
|
304
|
+
Culture: 'FR',
|
305
|
+
Tag: 'Test PayIn/Card/Web'
|
306
|
+
)
|
307
|
+
end
|
308
|
+
|
309
|
+
let(:new_payin_card_web_payline) do
|
310
|
+
MangoPay::PayIn::Card::Web.create(
|
311
|
+
AuthorId: new_natural_user['Id'],
|
312
|
+
CreditedUserId: new_wallet['Owners'][0],
|
313
|
+
CreditedWalletId: new_wallet['Id'],
|
314
|
+
DebitedFunds: {Currency: 'EUR', Amount: 1000},
|
315
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
316
|
+
CardType: 'CB_VISA_MASTERCARD',
|
317
|
+
ReturnURL: MangoPay.configuration.root_url,
|
318
|
+
Culture: 'FR',
|
319
|
+
Tag: 'Test PayIn/Card/Web',
|
320
|
+
TemplateURLOptions: {PAYLINEV2: "https://www.maysite.com/payline_template/"}
|
321
|
+
)
|
322
|
+
end
|
223
323
|
|
224
324
|
###############################################
|
225
325
|
# card/direct
|
226
326
|
###############################################
|
227
327
|
|
228
|
-
let(:new_card_registration)
|
229
|
-
MangoPay::CardRegistration.create(
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
328
|
+
let(:new_card_registration) do
|
329
|
+
MangoPay::CardRegistration.create(
|
330
|
+
UserId: new_natural_user['Id'],
|
331
|
+
Currency: 'EUR',
|
332
|
+
Tag: 'Test Card Registration'
|
333
|
+
)
|
334
|
+
end
|
235
335
|
|
236
|
-
let(:new_card_registration_completed)
|
336
|
+
let(:new_card_registration_completed) do
|
237
337
|
# 1st step: create
|
238
338
|
cardreg = new_card_registration
|
239
339
|
|
240
340
|
# 2nd step: tokenize by payline (fills-in RegistrationData)
|
241
341
|
data = {
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
342
|
+
data: cardreg['PreregistrationData'],
|
343
|
+
accessKeyRef: cardreg['AccessKey'],
|
344
|
+
cardNumber: 4970100000000154,
|
345
|
+
cardExpirationDate: 1226,
|
346
|
+
cardCvx: 123}
|
347
|
+
|
247
348
|
res = Net::HTTP.post_form(URI(cardreg['CardRegistrationURL']), data)
|
248
|
-
raise Exception, [res, res.body] unless
|
349
|
+
raise Exception, [res, res.body] unless res.is_a?(Net::HTTPOK) && res.body.start_with?('data=')
|
350
|
+
|
249
351
|
cardreg['RegistrationData'] = res.body
|
250
352
|
|
251
353
|
# 3rd step: update (fills-in CardId) and return it
|
252
|
-
MangoPay::CardRegistration.update(cardreg['Id'],
|
253
|
-
|
254
|
-
|
255
|
-
}
|
354
|
+
MangoPay::CardRegistration.update(cardreg['Id'],
|
355
|
+
RegistrationData: cardreg['RegistrationData'])
|
356
|
+
end
|
256
357
|
|
257
358
|
let(:new_payin_card_direct) { create_new_payin_card_direct(new_wallet) }
|
359
|
+
|
258
360
|
def create_new_payin_card_direct(to_wallet, amnt = 1000)
|
259
361
|
cardreg = new_card_registration_completed
|
260
|
-
MangoPay::PayIn::Card::Direct.create(
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
362
|
+
MangoPay::PayIn::Card::Direct.create(
|
363
|
+
AuthorId: new_natural_user['Id'],
|
364
|
+
CreditedUserId: to_wallet['Owners'][0],
|
365
|
+
CreditedWalletId: to_wallet['Id'],
|
366
|
+
DebitedFunds: {Currency: 'EUR', Amount: amnt},
|
367
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
368
|
+
CardType: 'CB_VISA_MASTERCARD',
|
369
|
+
CardId: cardreg['CardId'],
|
370
|
+
SecureModeReturnURL: 'http://test.com',
|
371
|
+
Tag: 'Test PayIn/Card/Direct'
|
372
|
+
)
|
271
373
|
end
|
272
374
|
|
273
375
|
###############################################
|
@@ -275,29 +377,31 @@ shared_context 'payins' do
|
|
275
377
|
###############################################
|
276
378
|
|
277
379
|
let(:new_card_preauthorization) { create_new_card_preauthorization(new_card_registration_completed) }
|
380
|
+
|
278
381
|
def create_new_card_preauthorization(cardreg, amnt = 1000)
|
279
|
-
MangoPay::PreAuthorization.create(
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
382
|
+
MangoPay::PreAuthorization.create(
|
383
|
+
AuthorId: new_natural_user['Id'],
|
384
|
+
DebitedFunds: {Currency: 'EUR', Amount: amnt},
|
385
|
+
CardId: cardreg['CardId'],
|
386
|
+
SecureMode: 'DEFAULT',
|
387
|
+
SecureModeReturnURL: 'http://test.com',
|
388
|
+
Tag: 'Test Card PreAuthorization'
|
389
|
+
)
|
287
390
|
end
|
288
391
|
|
289
392
|
let(:new_payin_preauthorized_direct) { create_new_payin_preauthorized_direct(new_wallet) }
|
393
|
+
|
290
394
|
def create_new_payin_preauthorized_direct(to_wallet, amnt = 1000)
|
291
395
|
preauth = new_card_preauthorization
|
292
|
-
MangoPay::PayIn::PreAuthorized::Direct.create(
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
396
|
+
MangoPay::PayIn::PreAuthorized::Direct.create(
|
397
|
+
AuthorId: new_natural_user['Id'],
|
398
|
+
CreditedUserId: to_wallet['Owners'][0],
|
399
|
+
CreditedWalletId: to_wallet['Id'],
|
400
|
+
DebitedFunds: {Currency: 'EUR', Amount: amnt},
|
401
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
402
|
+
PreauthorizationId: preauth['Id'],
|
403
|
+
Tag: 'Test PayIn/PreAuthorized/Direct'
|
404
|
+
)
|
301
405
|
end
|
302
406
|
|
303
407
|
###############################################
|
@@ -305,93 +409,95 @@ shared_context 'payins' do
|
|
305
409
|
###############################################
|
306
410
|
|
307
411
|
let(:new_payin_bankwire_direct) { create_new_payin_bankwire_direct(new_wallet) }
|
412
|
+
|
308
413
|
def create_new_payin_bankwire_direct(to_wallet, amnt = 1000)
|
309
|
-
MangoPay::PayIn::BankWire::Direct.create(
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
414
|
+
MangoPay::PayIn::BankWire::Direct.create(
|
415
|
+
AuthorId: new_natural_user['Id'],
|
416
|
+
CreditedUserId: to_wallet['Owners'][0],
|
417
|
+
CreditedWalletId: to_wallet['Id'],
|
418
|
+
DeclaredDebitedFunds: {Currency: 'EUR', Amount: amnt},
|
419
|
+
DeclaredFees: {Currency: 'EUR', Amount: 0},
|
420
|
+
Tag: 'Test PayIn/BankWire/Direct'
|
421
|
+
)
|
317
422
|
end
|
318
|
-
|
319
423
|
end
|
320
424
|
|
321
425
|
###############################################
|
322
426
|
shared_context 'payouts' do
|
323
|
-
###############################################
|
427
|
+
###############################################
|
324
428
|
include_context 'bank_accounts'
|
325
429
|
|
326
430
|
let(:new_payout_bankwire) { create_new_payout_bankwire(new_payin_card_direct) }
|
431
|
+
|
327
432
|
def create_new_payout_bankwire(payin, amnt = 500)
|
328
|
-
MangoPay::PayOut::BankWire.create(
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
433
|
+
MangoPay::PayOut::BankWire.create(
|
434
|
+
AuthorId: payin['CreditedUserId'],
|
435
|
+
DebitedWalletId: payin['CreditedWalletId'],
|
436
|
+
DebitedFunds: {Currency: 'EUR', Amount: amnt},
|
437
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
438
|
+
BankAccountId: new_bank_account['Id'],
|
439
|
+
Communication: 'This is a test',
|
440
|
+
Tag: 'Test PayOut/Bank/Wire'
|
441
|
+
)
|
337
442
|
end
|
338
443
|
end
|
339
444
|
|
340
445
|
###############################################
|
341
446
|
shared_context 'transfers' do
|
342
|
-
###############################################
|
447
|
+
###############################################
|
343
448
|
include_context 'users'
|
344
449
|
include_context 'wallets'
|
345
450
|
include_context 'payins'
|
346
451
|
|
347
|
-
let(:new_transfer)
|
452
|
+
let(:new_transfer) do
|
348
453
|
wlt1 = new_wallet
|
349
454
|
wlt2 = new_wallet_legal
|
350
455
|
create_new_payin_card_direct(wlt1, 1000) # feed wlt1 with money
|
351
456
|
create_new_transfer(wlt1, wlt2, 500) # transfer wlt1 => wlt2
|
352
|
-
|
457
|
+
end
|
458
|
+
|
353
459
|
def create_new_transfer(from_wallet, to_wallet, amnt = 500)
|
354
|
-
MangoPay::Transfer.create(
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
460
|
+
MangoPay::Transfer.create(
|
461
|
+
AuthorId: from_wallet['Owners'][0],
|
462
|
+
DebitedWalletId: from_wallet['Id'],
|
463
|
+
CreditedUserId: to_wallet['Owners'][0],
|
464
|
+
CreditedWalletId: to_wallet['Id'],
|
465
|
+
DebitedFunds: {Currency: 'EUR', Amount: amnt},
|
466
|
+
Fees: {Currency: 'EUR', Amount: 0},
|
467
|
+
Tag: 'Test transfer'
|
468
|
+
)
|
363
469
|
end
|
364
470
|
end
|
365
471
|
|
366
472
|
###############################################
|
367
473
|
shared_context 'hooks' do
|
368
|
-
###############################################
|
369
|
-
let(:new_hook)
|
370
|
-
hooks = MangoPay::Hook.fetch(
|
371
|
-
if hooks.
|
372
|
-
MangoPay::Hook.create(
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
474
|
+
###############################################
|
475
|
+
let(:new_hook) do
|
476
|
+
hooks = MangoPay::Hook.fetch('page' => 1, 'per_page' => 1)
|
477
|
+
if hooks.empty?
|
478
|
+
MangoPay::Hook.create(
|
479
|
+
EventType: 'PAYIN_NORMAL_CREATED',
|
480
|
+
Url: 'http://test.com',
|
481
|
+
Tag: 'Test hook'
|
482
|
+
)
|
377
483
|
else
|
378
484
|
hooks[0]
|
379
485
|
end
|
380
|
-
|
486
|
+
end
|
381
487
|
end
|
382
488
|
|
383
489
|
###############################################
|
384
490
|
shared_context 'bankigaliases' do
|
385
|
-
###############################################
|
491
|
+
###############################################
|
386
492
|
include_context 'users'
|
387
493
|
include_context 'wallets'
|
388
494
|
|
389
|
-
let(:new_banking_alias)
|
495
|
+
let(:new_banking_alias) do
|
390
496
|
MangoPay::BankingAliasesIBAN.create({
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
497
|
+
CreditedUserId: new_natural_user['Id'],
|
498
|
+
WalletId: new_wallet['Id'],
|
499
|
+
OwnerName: new_natural_user['FirstName'],
|
500
|
+
Country: 'LU'
|
501
|
+
}, new_wallet['Id'])
|
502
|
+
end
|
397
503
|
end
|