mangopay 3.4.0 → 3.26.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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby_cd.yml +34 -0
  3. data/.github/workflows/ruby_ci.yml +30 -0
  4. data/CHANGELOG.md +249 -4
  5. data/README.md +19 -0
  6. data/lib/mangopay/authorization_token.rb +1 -1
  7. data/lib/mangopay/bankingaliases_iban.rb +2 -2
  8. data/lib/mangopay/card.rb +10 -0
  9. data/lib/mangopay/client.rb +0 -5
  10. data/lib/mangopay/conversion.rb +39 -0
  11. data/lib/mangopay/deposit.rb +20 -0
  12. data/lib/mangopay/dispute.rb +2 -2
  13. data/lib/mangopay/errors.rb +2 -2
  14. data/lib/mangopay/filter_parameters.rb +7 -2
  15. data/lib/mangopay/pay_in.rb +150 -1
  16. data/lib/mangopay/pay_out.rb +11 -0
  17. data/lib/mangopay/payment_method_metadata.rb +13 -0
  18. data/lib/mangopay/refund.rb +1 -0
  19. data/lib/mangopay/regulatory.rb +22 -0
  20. data/lib/mangopay/ubo_declaration.rb +6 -4
  21. data/lib/mangopay/version.rb +1 -1
  22. data/lib/mangopay.rb +102 -8
  23. data/spec/mangopay/bankingaliases_spec.rb +1 -1
  24. data/spec/mangopay/card_registration_spec.rb +17 -2
  25. data/spec/mangopay/client_spec.rb +12 -12
  26. data/spec/mangopay/configuration_spec.rb +98 -0
  27. data/spec/mangopay/conversion_spec.rb +64 -0
  28. data/spec/mangopay/deposit_spec.rb +75 -0
  29. data/spec/mangopay/kyc_document_spec.rb +1 -0
  30. data/spec/mangopay/payin_applepay_direct_spec.rb +1 -1
  31. data/spec/mangopay/payin_bancontact_web_spec.rb +30 -0
  32. data/spec/mangopay/payin_blik_web_spec.rb +32 -0
  33. data/spec/mangopay/payin_giropay_web_spec.rb +30 -0
  34. data/spec/mangopay/payin_googlepay_direct_spec.rb +21 -0
  35. data/spec/mangopay/payin_ideal_web_spec.rb +30 -0
  36. data/spec/mangopay/payin_klarna_web_spec.rb +32 -0
  37. data/spec/mangopay/payin_mbway_web_spec.rb +32 -0
  38. data/spec/mangopay/payin_multibanco_web_spec.rb +31 -0
  39. data/spec/mangopay/payin_payconiq_web_spec.rb +25 -0
  40. data/spec/mangopay/payin_paypal_web_spec.rb +21 -0
  41. data/spec/mangopay/payin_preauthorized_direct_spec.rb +21 -1
  42. data/spec/mangopay/payin_satispay_web_spec.rb +32 -0
  43. data/spec/mangopay/payment_method_metadata_spec.rb +15 -0
  44. data/spec/mangopay/payout_bankwire_spec.rb +20 -0
  45. data/spec/mangopay/preauthorization_spec.rb +1 -2
  46. data/spec/mangopay/recurring_payin_spec.rb +82 -0
  47. data/spec/mangopay/regulatory_spec.rb +26 -0
  48. data/spec/mangopay/shared_resources.rb +714 -219
  49. data/spec/mangopay/transaction_spec.rb +5 -0
  50. data/spec/mangopay/ubo_declaration_spec.rb +14 -3
  51. data/spec/mangopay/ubo_spec.rb +3 -3
  52. data/spec/mangopay/user_spec.rb +16 -1
  53. data/spec/mangopay/wallet_spec.rb +5 -0
  54. metadata +39 -4
  55. data/.travis.yml +0 -19
@@ -6,24 +6,24 @@ shared_context 'users' do
6
6
 
7
7
  def define_new_natural_user
8
8
  {
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
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
27
27
  }
28
28
  end
29
29
 
@@ -33,35 +33,35 @@ shared_context 'users' do
33
33
 
34
34
  let(:new_legal_user) do
35
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: ''
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
65
  )
66
66
  end
67
67
  end
@@ -76,10 +76,10 @@ shared_context 'wallets' do
76
76
 
77
77
  def create_new_wallet(user)
78
78
  MangoPay::Wallet.create(
79
- Owners: [user['Id']],
80
- Description: 'A test wallet',
81
- Currency: 'EUR',
82
- Tag: 'Test wallet'
79
+ Owners: [user['Id']],
80
+ Description: 'A test wallet',
81
+ Currency: 'EUR',
82
+ Tag: 'Test wallet'
83
83
  )
84
84
  end
85
85
 
@@ -98,22 +98,22 @@ end
98
98
  shared_context 'ubo' do
99
99
  def new_ubo(user, ubo_declaration)
100
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
- }
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
117
  }
118
118
  MangoPay::Ubo.create(user['Id'], ubo_declaration['Id'], ubo)
119
119
  end
@@ -129,12 +129,12 @@ shared_context 'bank_accounts' do
129
129
  Type: 'IBAN',
130
130
  OwnerName: 'John',
131
131
  OwnerAddress: {
132
- AddressLine1: 'Le Palais Royal',
133
- AddressLine2: '8 Rue de Montpensier',
134
- City: 'Paris',
135
- Region: '',
136
- PostalCode: '75001',
137
- Country: 'FR'
132
+ AddressLine1: 'Le Palais Royal',
133
+ AddressLine2: '8 Rue de Montpensier',
134
+ City: 'Paris',
135
+ Region: '',
136
+ PostalCode: '75001',
137
+ Country: 'FR'
138
138
  },
139
139
  IBAN: 'FR7630004000031234567890143',
140
140
  BIC: 'BNPAFRPP',
@@ -151,10 +151,10 @@ shared_context 'mandates' do
151
151
 
152
152
  def create_new_mandate
153
153
  MangoPay::Mandate.create(
154
- BankAccountId: new_bank_account['Id'],
155
- Culture: 'FR',
156
- ReturnURL: MangoPay.configuration.root_url,
157
- Tag: 'Test mandate'
154
+ BankAccountId: new_bank_account['Id'],
155
+ Culture: 'FR',
156
+ ReturnURL: MangoPay.configuration.root_url,
157
+ Tag: 'Test mandate'
158
158
  )
159
159
  end
160
160
  end
@@ -186,15 +186,15 @@ shared_context 'payins' do
186
186
 
187
187
  let(:new_payin_directdebit_web) do
188
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'
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
198
  )
199
199
  end
200
200
 
@@ -204,14 +204,30 @@ shared_context 'payins' do
204
204
 
205
205
  let(:new_payin_paypal_web) do
206
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'
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
+ # payconiq/web
220
+ ###############################################
221
+
222
+ let(:new_payin_payconiq_web) do
223
+ MangoPay::PayIn::Payconiq::Web.create(
224
+ AuthorId: new_natural_user['Id'],
225
+ CreditedWalletId: new_wallet['Id'],
226
+ DebitedFunds: { Currency: 'EUR', Amount: 100 },
227
+ Fees: { Currency: 'EUR', Amount: 0 },
228
+ ReturnURL: MangoPay.configuration.root_url,
229
+ Country: "BE",
230
+ Tag: 'Custom Meta'
215
231
  )
216
232
  end
217
233
 
@@ -221,20 +237,20 @@ shared_context 'payins' do
221
237
 
222
238
  let(:new_payin_applepay_direct) do
223
239
  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'
240
+ AuthorId: new_natural_user['Id'],
241
+ CreditedUserId: new_wallet['Owners'][0],
242
+ CreditedWalletId: new_wallet['Id'],
243
+ DebitedFunds: { Currency: 'EUR', Amount: 199 },
244
+ Fees: { Currency: 'EUR', Amount: 1 },
245
+ PaymentType: 'APPLEPAY',
246
+ PaymentData: {
247
+ TransactionId: '061EB32181A2D9CA42AD16031B476EEBAA62A9A095AD660E2759FBA52B51A61',
248
+ Network: 'VISA',
249
+ 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\"}}"
250
+ },
251
+ StatementDescriptor: "php",
252
+ ReturnURL: MangoPay.configuration.root_url,
253
+ Tag: 'Test PayIn/ApplePay/Direct'
238
254
  )
239
255
  end
240
256
 
@@ -244,47 +260,69 @@ shared_context 'payins' do
244
260
  ###############################################
245
261
  let(:new_payin_googlepay_direct) do
246
262
  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
- }
263
+ AuthorId: new_natural_user['Id'],
264
+ CreditedWalletId: new_wallet['Id'],
265
+ DebitedFunds: { Currency: 'EUR', Amount: 199 },
266
+ Fees: { Currency: 'EUR', Amount: 1 },
267
+ StatementDescriptor: "ruby",
268
+ Tag: 'Test PayIn/GooglePay/Direct',
269
+ IpAddress: "2001:0620:0000:0000:0211:24FF:FE80:C12C",
270
+ SecureModeReturnURL: 'http://test.com',
271
+ SecureMode: 'DEFAULT',
272
+ ReturnURL: 'https://mangopay.com/docs/please-ignore',
273
+ BrowserInfo: {
274
+ AcceptHeader: "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
275
+ JavaEnabled: true,
276
+ Language: "fr-FR",
277
+ ColorDepth: 4,
278
+ ScreenHeight: 1800,
279
+ ScreenWidth: 400,
280
+ JavascriptEnabled: true,
281
+ TimeZoneOffset: "+60",
282
+ UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
283
+ },
284
+ PaymentData: "{\"signature\":\"MEUCIQCLXOan2Y9DobLVSOeD5V64Peayvz0ZAWisdz/1iTdthAIgVFb4Hve4EhtW81k46SiMlnXLIiCn1h2+vVQGjHe+sSo\\u003d\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDGRER6R6PH6K39YTIYX+CpDNej6gQgvi/Wx19SOPtiDnkjAl4/LF9pXlvZYe+aJH0Dy095I6BlfY8bNBB5gjPg\\\\u003d\\\\u003d\\\",\\\"keyExpiration\\\":\\\"1688521049102\\\"}\",\"signatures\":[\"MEYCIQDup1B+rkiPAWmpg7RmqY0NfgdGhmdyL8wvAX+6C1aOU2QIhAIZACSDQ/ZexIyEia5KrRlG2B+y3AnKNlhRzumRcnNOR\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"YSSGK9yFdKP+mJB5+wAjnOujnThPM1E/KbbJxd3MDzPVI66ip1DBESldvQXYjjeLq6Rf1tKE9oLwwaj6u0/gU7Z9t3g1MoW+9YoEE1bs1IxImif7IQGAosfYjjbBBfDkOaqEs2JJC5qt6xjKO9lQ/E6JPkPFGqF7+OJ1vzmD83Pi3sHWkVge5MhxXQ3yBNhrjus3kV7zUoYA+uqNrciWcWypc1NndF/tiwSkvUTzM6n4dS8X84fkJiSO7PZ65C0yw0mdybRRnyL2fFdWGssve1zZFAvYfzcpNamyuZGGlu/SCoayitojmMsqe5Cu0efD9+WvvDr9PA+Vo1gzuz7LmiZe81SGvdFhRoq62FBAUiwSsi2A3pWinZxM2XbYNph+HJ5FCNspWhz4ur9JG4ZMLemCXuaybvL++W6PWywAtoiE0mQcBIX3vhOq5itv0RkaKVe6nbcAS2UryRz2u/nDCJLKpIv2Wi11NtCUT2mgD8F6qfcXhvVZHyeLqZ1OLgCudTTSdKirzezbgPTg4tQpW++KufeD7bgG+01XhCWt+7/ftqcSf8n//gSRINne8j2G6w+2\\\",\\\"ephemeralPublicKey\\\":\\\"BLY2+R8C0T+BSf/W3HEq305qH63IGmJxMVmbfJ6+x1V7GQg9W9v7eHc3j+8TeypVn+nRlPu98tivuMXECg+rWZs\\\\u003d\\\",\\\"tag\\\":\\\"MmEjNdLfsDNfYd/FRUjoJ4/IfLypNRqx8zgHfa6Ftmo\\\\u003d\\\"}\"}",
285
+ Billing: {
286
+ FirstName: 'FName',
287
+ LastName: 'LName',
288
+ Address: {
289
+ AddressLine1: 'AddressLine1',
290
+ AddressLine2: 'AddressLine2',
291
+ City: 'City',
292
+ Region: 'Region',
293
+ PostalCode: 'PostalCode',
294
+ Country: 'FR'
269
295
  }
296
+ },
297
+ Shipping: {
298
+ FirstName: 'FName',
299
+ LastName: 'LName',
300
+ Address: {
301
+ AddressLine1: 'AddressLine1',
302
+ AddressLine2: 'AddressLine2',
303
+ City: 'City',
304
+ Region: 'Region',
305
+ PostalCode: 'PostalCode',
306
+ Country: 'FR'
307
+ }
308
+ }
270
309
  )
271
310
  end
272
311
 
273
-
274
312
  ###############################################
275
313
  # directdebit/direct
276
314
  ###############################################
277
315
 
278
316
  let(:new_payin_directdebit_direct) do
279
317
  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'
318
+ AuthorId: new_natural_user['Id'],
319
+ CreditedUserId: new_wallet['Owners'][0],
320
+ CreditedWalletId: new_wallet['Id'],
321
+ DebitedFunds: { Currency: 'EUR', Amount: 1000 },
322
+ Fees: { Currency: 'EUR', Amount: 0 },
323
+ MandateId: new_mandate['Id'],
324
+ ReturnURL: MangoPay.configuration.root_url,
325
+ Tag: 'Test PayIn/DirectDebit/Direct'
288
326
  )
289
327
  end
290
328
 
@@ -294,30 +332,30 @@ shared_context 'payins' do
294
332
 
295
333
  let(:new_payin_card_web) do
296
334
  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'
335
+ AuthorId: new_natural_user['Id'],
336
+ CreditedUserId: new_wallet['Owners'][0],
337
+ CreditedWalletId: new_wallet['Id'],
338
+ DebitedFunds: { Currency: 'EUR', Amount: 1000 },
339
+ Fees: { Currency: 'EUR', Amount: 0 },
340
+ CardType: 'CB_VISA_MASTERCARD',
341
+ ReturnURL: MangoPay.configuration.root_url,
342
+ Culture: 'FR',
343
+ Tag: 'Test PayIn/Card/Web'
306
344
  )
307
345
  end
308
346
 
309
347
  let(:new_payin_card_web_payline) do
310
348
  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/"}
349
+ AuthorId: new_natural_user['Id'],
350
+ CreditedUserId: new_wallet['Owners'][0],
351
+ CreditedWalletId: new_wallet['Id'],
352
+ DebitedFunds: { Currency: 'EUR', Amount: 1000 },
353
+ Fees: { Currency: 'EUR', Amount: 0 },
354
+ CardType: 'CB_VISA_MASTERCARD',
355
+ ReturnURL: MangoPay.configuration.root_url,
356
+ Culture: 'FR',
357
+ Tag: 'Test PayIn/Card/Web',
358
+ TemplateURLOptions: { PAYLINEV2: "https://www.maysite.com/payline_template/" }
321
359
  )
322
360
  end
323
361
 
@@ -327,9 +365,9 @@ shared_context 'payins' do
327
365
 
328
366
  let(:new_card_registration) do
329
367
  MangoPay::CardRegistration.create(
330
- UserId: new_natural_user['Id'],
331
- Currency: 'EUR',
332
- Tag: 'Test Card Registration'
368
+ UserId: new_natural_user['Id'],
369
+ Currency: 'EUR',
370
+ Tag: 'Test Card Registration'
333
371
  )
334
372
  end
335
373
 
@@ -339,11 +377,11 @@ shared_context 'payins' do
339
377
 
340
378
  # 2nd step: tokenize by payline (fills-in RegistrationData)
341
379
  data = {
342
- data: cardreg['PreregistrationData'],
343
- accessKeyRef: cardreg['AccessKey'],
344
- cardNumber: 4970100000000154,
345
- cardExpirationDate: 1226,
346
- cardCvx: 123}
380
+ data: cardreg['PreregistrationData'],
381
+ accessKeyRef: cardreg['AccessKey'],
382
+ cardNumber: 4970107111111119,
383
+ cardExpirationDate: 1226,
384
+ cardCvx: 123 }
347
385
 
348
386
  res = Net::HTTP.post_form(URI(cardreg['CardRegistrationURL']), data)
349
387
  raise Exception, [res, res.body] unless res.is_a?(Net::HTTPOK) && res.body.start_with?('data=')
@@ -357,19 +395,251 @@ shared_context 'payins' do
357
395
 
358
396
  let(:new_payin_card_direct) { create_new_payin_card_direct(new_wallet) }
359
397
 
398
+ ###############################################
399
+ # MBWAY/web
400
+ ###############################################
401
+ let(:new_payin_mbway_web) do
402
+ MangoPay::PayIn::Mbway::Web.create(
403
+ AuthorId: new_natural_user['Id'],
404
+ CreditedWalletId: new_wallet['Id'],
405
+ DebitedFunds: { Currency: 'EUR', Amount: 199 },
406
+ Fees: { Currency: 'EUR', Amount: 1 },
407
+ StatementDescriptor: "ruby",
408
+ Tag: 'Test PayIn/Mbway/Web',
409
+ Phone: '351#269458236'
410
+ )
411
+ end
412
+
413
+ ###############################################
414
+ # MULTIBANCO/web
415
+ ###############################################
416
+ let(:new_payin_multibanco_web) do
417
+ MangoPay::PayIn::Multibanco::Web.create(
418
+ AuthorId: new_natural_user['Id'],
419
+ DebitedFunds: { Currency: 'EUR', Amount: 199 },
420
+ Fees: { Currency: 'EUR', Amount: 1 },
421
+ CreditedWalletId: new_wallet['Id'],
422
+ StatementDescriptor: "ruby",
423
+ Tag: 'Test PayIn/Multibanco/Web',
424
+ ReturnURL: 'http://www.my-site.com/returnURL'
425
+ )
426
+ end
427
+
428
+ ###############################################
429
+ # BLIK/web
430
+ ###############################################
431
+ let(:new_payin_blik_web) do
432
+ user = new_natural_user
433
+ wallet = MangoPay::Wallet.create(
434
+ Owners: [user['Id']],
435
+ Description: 'A test wallet',
436
+ Currency: 'PLN',
437
+ Tag: 'Test wallet'
438
+ )
439
+ MangoPay::PayIn::Blik::Web.create(
440
+ AuthorId: user['Id'],
441
+ CreditedWalletId: wallet['Id'],
442
+ DebitedFunds: { Currency: 'PLN', Amount: 199 },
443
+ Fees: { Currency: 'PLN', Amount: 1 },
444
+ StatementDescriptor: "ruby",
445
+ Tag: 'Test PayIn/Blik/Web',
446
+ ReturnURL: 'https://example.com'
447
+ )
448
+ end
449
+
450
+ ###############################################
451
+ # SATISPAY/web
452
+ ###############################################
453
+ let(:new_payin_satispay_web) do
454
+ MangoPay::PayIn::Satispay::Web.create(
455
+ AuthorId: new_natural_user['Id'],
456
+ CreditedWalletId: new_wallet['Id'],
457
+ DebitedFunds: { Currency: 'EUR', Amount: 199 },
458
+ Fees: { Currency: 'EUR', Amount: 1 },
459
+ StatementDescriptor: "ruby",
460
+ Tag: 'Test PayIn/Mbway/Web',
461
+ Country: 'IT',
462
+ ReturnURL: 'http://www.my-site.com/returnURL'
463
+ )
464
+ end
465
+
466
+ ###############################################
467
+ # KLARNA/web
468
+ ###############################################
469
+ let(:new_payin_klarna_web) do
470
+ MangoPay::PayIn::Klarna::Web.create(
471
+ AuthorId: new_natural_user['Id'],
472
+ CreditedWalletId: new_wallet['Id'],
473
+ DebitedFunds: { Currency: 'EUR', Amount: 400 },
474
+ Fees: { Currency: 'EUR', Amount: 10 },
475
+ ReturnURL: 'http://www.my-site.com/returnURL',
476
+ LineItems: [
477
+ {
478
+ Name: "running shoes",
479
+ Quantity: 1,
480
+ UnitAmount: 200,
481
+ TaxAmount: 0,
482
+ Description: "seller1 ID"
483
+ },
484
+ {
485
+ Name: "running shoes",
486
+ Quantity: 1,
487
+ UnitAmount: 200,
488
+ TaxAmount: 0,
489
+ Description: "seller2 ID"
490
+ }
491
+ ],
492
+ Country: 'FR',
493
+ Culture: 'FR',
494
+ Phone: '33#607080900',
495
+ Email: 'mango@mangopay.com',
496
+ AdditionalData: '{}',
497
+ Billing: {
498
+ Address: {
499
+ AddressLine1: 'AddressLine1',
500
+ AddressLine2: 'AddressLine2',
501
+ City: 'City',
502
+ Region: 'Region',
503
+ PostalCode: 'PostalCode',
504
+ Country: 'FR'
505
+ },
506
+ FirstName: 'Joe',
507
+ LastName: 'Blogs'
508
+ },
509
+ Shipping: {
510
+ Address: {
511
+ AddressLine1: 'AddressLine1',
512
+ AddressLine2: 'AddressLine2',
513
+ City: 'City',
514
+ Region: 'Region',
515
+ PostalCode: 'PostalCode',
516
+ Country: 'FR'
517
+ },
518
+ FirstName: 'Joe',
519
+ LastName: 'Blogs'
520
+ },
521
+ Reference: 'afd48-879d-48fg',
522
+ Tag: 'Test PayIn/Klarna/Web'
523
+ )
524
+ end
525
+
526
+ ###############################################
527
+ # IDEAL/web
528
+ ###############################################
529
+ let(:new_payin_ideal_web) do
530
+ MangoPay::PayIn::Ideal::Web.create(
531
+ AuthorId: new_natural_user['Id'],
532
+ CreditedWalletId: new_wallet['Id'],
533
+ DebitedFunds: { Currency: 'EUR', Amount: 400 },
534
+ Fees: { Currency: 'EUR', Amount: 10 },
535
+ ReturnURL: 'http://www.my-site.com/returnURL',
536
+ Bic: 'REVOLT21',
537
+ StatementDescriptor: "test",
538
+ Tag: 'Test PayIn/Ideal/Web'
539
+ )
540
+ end
541
+
542
+ ###############################################
543
+ # Giropay/web
544
+ ###############################################
545
+ let(:new_payin_giropay_web) do
546
+ MangoPay::PayIn::Giropay::Web.create(
547
+ AuthorId: new_natural_user['Id'],
548
+ CreditedWalletId: new_wallet['Id'],
549
+ DebitedFunds: { Currency: 'EUR', Amount: 400 },
550
+ Fees: { Currency: 'EUR', Amount: 10 },
551
+ ReturnURL: 'http://www.my-site.com/returnURL',
552
+ StatementDescriptor: "test",
553
+ Tag: 'Test PayIn/Giropay/Web'
554
+ )
555
+ end
556
+
557
+ ###############################################
558
+ # Bancontact/web
559
+ ###############################################
560
+ let(:new_payin_bancontact_web) do
561
+ MangoPay::PayIn::Bancontact::Web.create(
562
+ AuthorId: new_natural_user['Id'],
563
+ CreditedWalletId: new_wallet['Id'],
564
+ DebitedFunds: { Currency: 'EUR', Amount: 400 },
565
+ Fees: { Currency: 'EUR', Amount: 10 },
566
+ ReturnURL: 'http://www.my-site.com/returnURL',
567
+ StatementDescriptor: "test",
568
+ Tag: 'Test PayIn/Bancontact/Web',
569
+ Culture: 'FR'
570
+ )
571
+ end
572
+
573
+ ###############################################
574
+ # PAYPAL/web V2
575
+ ###############################################
576
+ let(:new_payin_paypal_web_v2) do
577
+ MangoPay::PayIn::PayPal::Web.create_v2(
578
+ AuthorId: new_natural_user['Id'],
579
+ DebitedFunds: { Currency: 'EUR', Amount: 400 },
580
+ Fees: { Currency: 'EUR', Amount: 0 },
581
+ CreditedWalletId: new_wallet['Id'],
582
+ ReturnUrl: "http://example.com",
583
+ LineItems: [
584
+ {
585
+ Name: "running shoes",
586
+ Quantity: 1,
587
+ UnitAmount: 200,
588
+ TaxAmount: 0,
589
+ Description: "seller1 ID"
590
+ },
591
+ {
592
+ Name: "running shoes",
593
+ Quantity: 1,
594
+ UnitAmount: 200,
595
+ TaxAmount: 0,
596
+ Description: "seller2 ID"
597
+ }
598
+ ],
599
+ Shipping: {
600
+ Address: {
601
+ AddressLine1: 'AddressLine1',
602
+ AddressLine2: 'AddressLine2',
603
+ City: 'City',
604
+ Region: 'Region',
605
+ PostalCode: 'PostalCode',
606
+ Country: 'FR'
607
+ },
608
+ FirstName: 'Joe',
609
+ LastName: 'Blogs'
610
+ },
611
+ ShippingPreference: "GET_FROM_FILE",
612
+ StatementDescriptor: "ruby",
613
+ Tag: 'Test',
614
+ # Culture: 'FR'
615
+ )
616
+ end
617
+
360
618
  def create_new_payin_card_direct(to_wallet, amnt = 1000)
361
619
  cardreg = new_card_registration_completed
362
620
  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
- Requested3DSVersion: 'V1'
621
+ AuthorId: new_natural_user['Id'],
622
+ CreditedUserId: to_wallet['Owners'][0],
623
+ CreditedWalletId: to_wallet['Id'],
624
+ DebitedFunds: { Currency: 'EUR', Amount: amnt },
625
+ Fees: { Currency: 'EUR', Amount: 0 },
626
+ CardType: 'CB_VISA_MASTERCARD',
627
+ CardId: cardreg['CardId'],
628
+ SecureModeReturnURL: 'http://test.com',
629
+ Tag: 'Test PayIn/Card/Direct',
630
+ Requested3DSVersion: 'V2_1',
631
+ BrowserInfo: {
632
+ AcceptHeader: "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
633
+ JavaEnabled: true,
634
+ Language: "FR-FR",
635
+ ColorDepth: 4,
636
+ ScreenHeight: 1800,
637
+ ScreenWidth: 400,
638
+ JavascriptEnabled: true,
639
+ TimeZoneOffset: "+60",
640
+ UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
641
+ },
642
+ IpAddress: "2001:0620:0000:0000:0211:24FF:FE80:C12C"
373
643
  )
374
644
  end
375
645
 
@@ -381,13 +651,25 @@ shared_context 'payins' do
381
651
 
382
652
  def create_new_card_preauthorization(cardreg, amnt = 1000)
383
653
  MangoPay::PreAuthorization.create(
384
- AuthorId: new_natural_user['Id'],
385
- DebitedFunds: {Currency: 'EUR', Amount: amnt},
386
- CardId: cardreg['CardId'],
387
- SecureMode: 'DEFAULT',
388
- SecureModeReturnURL: 'http://test.com',
389
- Tag: 'Test Card PreAuthorization',
390
- Requested3DSVersion: 'V1'
654
+ AuthorId: new_natural_user['Id'],
655
+ DebitedFunds: { Currency: 'EUR', Amount: amnt },
656
+ CardId: cardreg['CardId'],
657
+ SecureMode: 'DEFAULT',
658
+ SecureModeReturnURL: 'http://test.com',
659
+ Tag: 'Test Card PreAuthorization',
660
+ Requested3DSVersion: 'V2_1',
661
+ BrowserInfo: {
662
+ AcceptHeader: "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
663
+ JavaEnabled: true,
664
+ Language: "FR-FR",
665
+ ColorDepth: 4,
666
+ ScreenHeight: 1800,
667
+ ScreenWidth: 400,
668
+ JavascriptEnabled: true,
669
+ TimeZoneOffset: "+60",
670
+ UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
671
+ },
672
+ IpAddress: "2001:0620:0000:0000:0211:24FF:FE80:C12C"
391
673
  )
392
674
  end
393
675
 
@@ -396,13 +678,61 @@ shared_context 'payins' do
396
678
  def create_new_payin_preauthorized_direct(to_wallet, amnt = 1000)
397
679
  preauth = new_card_preauthorization
398
680
  MangoPay::PayIn::PreAuthorized::Direct.create(
399
- AuthorId: new_natural_user['Id'],
400
- CreditedUserId: to_wallet['Owners'][0],
401
- CreditedWalletId: to_wallet['Id'],
402
- DebitedFunds: {Currency: 'EUR', Amount: amnt},
403
- Fees: {Currency: 'EUR', Amount: 0},
404
- PreauthorizationId: preauth['Id'],
405
- Tag: 'Test PayIn/PreAuthorized/Direct'
681
+ AuthorId: new_natural_user['Id'],
682
+ CreditedUserId: to_wallet['Owners'][0],
683
+ CreditedWalletId: to_wallet['Id'],
684
+ DebitedFunds: { Currency: 'EUR', Amount: amnt },
685
+ Fees: { Currency: 'EUR', Amount: 0 },
686
+ PreauthorizationId: preauth['Id'],
687
+ Tag: 'Test PayIn/PreAuthorized/Direct',
688
+ BrowserInfo: {
689
+ AcceptHeader: "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
690
+ JavaEnabled: true,
691
+ Language: "FR-FR",
692
+ ColorDepth: 4,
693
+ ScreenHeight: 1800,
694
+ ScreenWidth: 400,
695
+ JavascriptEnabled: true,
696
+ TimeZoneOffset: "+60",
697
+ UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
698
+ },
699
+ IpAddress: "2001:0620:0000:0000:0211:24FF:FE80:C12C"
700
+ )
701
+ end
702
+
703
+ def create_card_validation(author_id, card_id)
704
+ params = {
705
+ AuthorId: author_id,
706
+ SecureModeReturnURL: "https://mangopay.com",
707
+ IpAddress: "2001:0620:0000:0000:0211:24FF:FE80:C12C",
708
+ Tag: "custom meta",
709
+ BrowserInfo: {
710
+ AcceptHeader: "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
711
+ JavaEnabled: true,
712
+ Language: "FR-FR",
713
+ ColorDepth: 4,
714
+ ScreenHeight: 1800,
715
+ ScreenWidth: 400,
716
+ JavascriptEnabled: true,
717
+ TimeZoneOffset: "+60",
718
+ UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
719
+ }
720
+ }
721
+ MangoPay::Card.validate(card_id, params)
722
+ end
723
+
724
+ ###############################################
725
+ # pre-authorized direct deposit
726
+ ###############################################
727
+
728
+ def create_new_payin_pre_authorized_deposit_direct(deposit_id, author_id, credited_wallet_id)
729
+ MangoPay::PayIn::PreAuthorized::Direct.create_pre_authorized_deposit_pay_in(
730
+ AuthorId: author_id,
731
+ CreditedWalletId: credited_wallet_id,
732
+ DebitedFunds: { Currency: 'EUR', Amount: 500 },
733
+ Fees: { Currency: 'EUR', Amount: 0 },
734
+ DepositId: deposit_id,
735
+ Tag: 'lorem ipsum'
406
736
  )
407
737
  end
408
738
 
@@ -414,14 +744,33 @@ shared_context 'payins' do
414
744
 
415
745
  def create_new_payin_bankwire_direct(to_wallet, amnt = 1000)
416
746
  MangoPay::PayIn::BankWire::Direct.create(
417
- AuthorId: new_natural_user['Id'],
418
- CreditedUserId: to_wallet['Owners'][0],
419
- CreditedWalletId: to_wallet['Id'],
420
- DeclaredDebitedFunds: {Currency: 'EUR', Amount: amnt},
421
- DeclaredFees: {Currency: 'EUR', Amount: 0},
422
- Tag: 'Test PayIn/BankWire/Direct'
747
+ AuthorId: new_natural_user['Id'],
748
+ CreditedUserId: to_wallet['Owners'][0],
749
+ CreditedWalletId: to_wallet['Id'],
750
+ DeclaredDebitedFunds: { Currency: 'EUR', Amount: amnt },
751
+ DeclaredFees: { Currency: 'EUR', Amount: 0 },
752
+ Tag: 'Test PayIn/BankWire/Direct'
423
753
  )
424
754
  end
755
+
756
+ ###############################################
757
+ # wallet with money
758
+ ###############################################
759
+ #
760
+ let(:new_wallet_with_money) { create_new_wallet_with_money(new_natural_user) }
761
+
762
+ def create_new_wallet_with_money(user)
763
+ wallet = MangoPay::Wallet.create(
764
+ Owners: [user['Id']],
765
+ Description: 'A test wallet',
766
+ Currency: 'EUR',
767
+ Tag: 'Test wallet'
768
+ )
769
+
770
+ pay_in = create_new_payin_card_direct(wallet)
771
+ MangoPay::Wallet.fetch(pay_in['CreditedWalletId'])
772
+ end
773
+
425
774
  end
426
775
 
427
776
  ###############################################
@@ -433,14 +782,14 @@ shared_context 'payouts' do
433
782
 
434
783
  def create_new_payout_bankwire(payin, amnt = 500)
435
784
  MangoPay::PayOut::BankWire.create(
436
- AuthorId: payin['CreditedUserId'],
437
- DebitedWalletId: payin['CreditedWalletId'],
438
- DebitedFunds: {Currency: 'EUR', Amount: amnt},
439
- Fees: {Currency: 'EUR', Amount: 0},
440
- BankAccountId: new_bank_account['Id'],
441
- Communication: 'This is a test',
442
- Tag: 'Test PayOut/Bank/Wire',
443
- PayoutModeRequested: 'Standard'
785
+ AuthorId: payin['CreditedUserId'],
786
+ DebitedWalletId: payin['CreditedWalletId'],
787
+ DebitedFunds: { Currency: 'EUR', Amount: amnt },
788
+ Fees: { Currency: 'EUR', Amount: 0 },
789
+ BankAccountId: new_bank_account['Id'],
790
+ Communication: 'This is a test',
791
+ Tag: 'Test PayOut/Bank/Wire',
792
+ PayoutModeRequested: 'Standard'
444
793
  )
445
794
  end
446
795
  end
@@ -461,13 +810,13 @@ shared_context 'transfers' do
461
810
 
462
811
  def create_new_transfer(from_wallet, to_wallet, amnt = 500)
463
812
  MangoPay::Transfer.create(
464
- AuthorId: from_wallet['Owners'][0],
465
- DebitedWalletId: from_wallet['Id'],
466
- CreditedUserId: to_wallet['Owners'][0],
467
- CreditedWalletId: to_wallet['Id'],
468
- DebitedFunds: {Currency: 'EUR', Amount: amnt},
469
- Fees: {Currency: 'EUR', Amount: 0},
470
- Tag: 'Test transfer'
813
+ AuthorId: from_wallet['Owners'][0],
814
+ DebitedWalletId: from_wallet['Id'],
815
+ CreditedUserId: to_wallet['Owners'][0],
816
+ CreditedWalletId: to_wallet['Id'],
817
+ DebitedFunds: { Currency: 'EUR', Amount: amnt },
818
+ Fees: { Currency: 'EUR', Amount: 0 },
819
+ Tag: 'Test transfer'
471
820
  )
472
821
  end
473
822
  end
@@ -479,9 +828,9 @@ shared_context 'hooks' do
479
828
  hooks = MangoPay::Hook.fetch('page' => 1, 'per_page' => 1)
480
829
  if hooks.empty?
481
830
  MangoPay::Hook.create(
482
- EventType: 'PAYIN_NORMAL_CREATED',
483
- Url: 'http://test.com',
484
- Tag: 'Test hook'
831
+ EventType: 'PAYIN_NORMAL_CREATED',
832
+ Url: 'http://test.com',
833
+ Tag: 'Test hook'
485
834
  )
486
835
  else
487
836
  hooks[0]
@@ -490,17 +839,163 @@ shared_context 'hooks' do
490
839
  end
491
840
 
492
841
  ###############################################
493
- shared_context 'bankigaliases' do
842
+ shared_context 'bankingaliases' do
494
843
  ###############################################
495
844
  include_context 'users'
496
845
  include_context 'wallets'
497
846
 
498
847
  let(:new_banking_alias) do
499
848
  MangoPay::BankingAliasesIBAN.create({
500
- CreditedUserId: new_natural_user['Id'],
501
- WalletId: new_wallet['Id'],
502
- OwnerName: new_natural_user['FirstName'],
503
- Country: 'LU'
849
+ CreditedUserId: new_natural_user['Id'],
850
+ WalletId: new_wallet['Id'],
851
+ OwnerName: new_natural_user['FirstName'],
852
+ Country: 'LU'
504
853
  }, new_wallet['Id'])
505
854
  end
506
855
  end
856
+
857
+ ###############################################
858
+ # deposits
859
+ ###############################################
860
+
861
+ def create_new_deposit(card_registration_id, author_id)
862
+ MangoPay::Deposit.create(
863
+ {
864
+ AuthorId: author_id,
865
+ DebitedFunds: { Currency: 'EUR', Amount: 1000 },
866
+ CardId: card_registration_id,
867
+ SecureModeReturnURL: 'http://mangopay-sandbox-test.com',
868
+ StatementDescriptor: "lorem",
869
+ Culture: 'FR',
870
+ IpAddress: "2001:0620:0000:0000:0211:24FF:FE80:C12C",
871
+ BrowserInfo: {
872
+ AcceptHeader: "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
873
+ JavaEnabled: true,
874
+ Language: "FR-FR",
875
+ ColorDepth: 4,
876
+ ScreenHeight: 1800,
877
+ ScreenWidth: 400,
878
+ JavascriptEnabled: true,
879
+ TimeZoneOffset: "+60",
880
+ UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
881
+ },
882
+ Billing: {
883
+ Address: {
884
+ AddressLine1: 'AddressLine1',
885
+ AddressLine2: 'AddressLine2',
886
+ City: 'City',
887
+ Region: 'Region',
888
+ PostalCode: 'PostalCode',
889
+ Country: 'FR'
890
+ },
891
+ FirstName: 'Joe',
892
+ LastName: 'Blogs'
893
+ },
894
+ Shipping: {
895
+ Address: {
896
+ AddressLine1: 'AddressLine1',
897
+ AddressLine2: 'AddressLine2',
898
+ City: 'City',
899
+ Region: 'Region',
900
+ PostalCode: 'PostalCode',
901
+ Country: 'FR'
902
+ },
903
+ FirstName: 'Joe',
904
+ LastName: 'Blogs'
905
+ }
906
+ }
907
+ )
908
+ end
909
+
910
+ ###############################################
911
+ # instant conversions
912
+ ###############################################
913
+ shared_context 'instant_conversion' do
914
+ include_context 'payins'
915
+
916
+ def get_conversion_rate(debited_currency, credited_currency)
917
+ MangoPay::Conversion.get_rate(debited_currency, credited_currency, params = {})
918
+ end
919
+
920
+ def create_instant_conversion()
921
+ user = new_natural_user
922
+ credited_wallet = MangoPay::Wallet.create(
923
+ Owners: [user['Id']],
924
+ Description: 'A test wallet',
925
+ Currency: 'GBP',
926
+ Tag: 'Test wallet'
927
+ )
928
+
929
+ MangoPay::Conversion.create_instant_conversion(
930
+ AuthorId: user['Id'],
931
+ CreditedWalletId: credited_wallet['Id'],
932
+ DebitedWalletId: new_wallet_with_money['Id'],
933
+ CreditedFunds: {
934
+ Currency: 'GBP'
935
+ },
936
+ DebitedFunds: {
937
+ Currency: 'EUR',
938
+ Amount: 79
939
+ },
940
+ Fees: {
941
+ Currency: 'EUR',
942
+ Amount: 9
943
+ },
944
+ Tag: 'Instant conversion test'
945
+ )
946
+ end
947
+
948
+ def create_quoted_conversion()
949
+ user = new_natural_user
950
+ credited_wallet = MangoPay::Wallet.create(
951
+ Owners: [user['Id']],
952
+ Description: 'A test wallet',
953
+ Currency: 'GBP',
954
+ Tag: 'Test wallet'
955
+ )
956
+ quote = create_conversion_quote
957
+
958
+ MangoPay::Conversion.create_quoted_conversion(
959
+ AuthorId: user['Id'],
960
+ QuoteId: quote['Id'],
961
+ CreditedWalletId: credited_wallet['Id'],
962
+ DebitedWalletId: new_wallet_with_money['Id'],
963
+ Tag: 'Quoted conversion test'
964
+ )
965
+ end
966
+
967
+ def create_conversion_quote
968
+ MangoPay::Conversion.create_quote(
969
+ CreditedFunds: { Currency: 'GBP' },
970
+ DebitedFunds: { Currency: 'EUR', Amount: 50 },
971
+ Duration: 90,
972
+ Tag: 'Created using the Mangopay Ruby SDK'
973
+ )
974
+ end
975
+
976
+ def get_conversion(id)
977
+ MangoPay::Conversion.get(id, params = {})
978
+ end
979
+
980
+ def get_conversion_quote(id)
981
+ MangoPay::Conversion.get_quote(id, params = {})
982
+ end
983
+ end
984
+
985
+ ###############################################
986
+ # payment methods metadata
987
+ ###############################################
988
+ shared_context 'payment_method_metadata' do
989
+ include_context 'payins'
990
+
991
+ def get_payment_method_metadata
992
+
993
+ wlt = new_wallet
994
+ pay_in = create_new_payin_card_direct(wlt, 1000)
995
+
996
+ MangoPay::PaymentMethodMetadata.get_metadata(
997
+ Type: 'BIN',
998
+ Bin: pay_in['CardInfo']['BIN']
999
+ )
1000
+ end
1001
+ end