2025-01-06 10:57:38 +07:00
|
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
|
|
|
|
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
|
|
|
from odoo.addons.payment.tests.common import PaymentCommon
|
|
|
|
|
|
|
|
|
|
|
|
class WorldlineCommon(AccountTestInvoicingCommon, PaymentCommon):
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def setUpClass(cls):
|
|
|
|
super().setUpClass()
|
|
|
|
|
|
|
|
cls.worldline = cls._prepare_provider('worldline', update_values={
|
|
|
|
'worldline_pspid': 'dummy',
|
|
|
|
'worldline_api_key': 'dummy',
|
|
|
|
'worldline_api_secret': 'dummy',
|
|
|
|
'worldline_webhook_key': 'dummy',
|
|
|
|
'worldline_webhook_secret': 'dummy',
|
|
|
|
})
|
|
|
|
|
|
|
|
cls.provider = cls.worldline
|
|
|
|
cls.currency = cls.currency_euro
|
|
|
|
|
|
|
|
cls.notification_data = {
|
|
|
|
'payment': {
|
|
|
|
'paymentOutput': {
|
|
|
|
'references': {
|
|
|
|
'merchantReference': cls.reference,
|
|
|
|
},
|
|
|
|
'cardPaymentMethodSpecificOutput': {
|
|
|
|
'paymentProductId': 1,
|
|
|
|
'card': {
|
|
|
|
'cardNumber': "******4242"
|
|
|
|
},
|
|
|
|
'token': 'whateverToken'
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'id': '1234567890_0',
|
|
|
|
'status': 'CAPTURED',
|
|
|
|
},
|
|
|
|
}
|
2025-03-04 12:23:19 +07:00
|
|
|
|
|
|
|
cls.notification_data_insufficient_funds = {
|
|
|
|
'errorId': 'ffffffff-fff-fffff-ffff-ffffffffffff',
|
|
|
|
'errors': [{
|
|
|
|
'category': 'IO_ERROR',
|
|
|
|
'code': '9999',
|
|
|
|
'errorCode': '30511001',
|
|
|
|
'httpStatusCode': 402,
|
|
|
|
'id': 'EXTERNAL_ACQUIRER_ERROR',
|
|
|
|
'message': '',
|
|
|
|
'retriable': False,
|
|
|
|
}],
|
|
|
|
'paymentResult': {
|
|
|
|
'creationOutput': {
|
|
|
|
'externalReference': 'aaaaaaaa-5555-eeee-eeee-eeeeeeeeeeee',
|
|
|
|
'isNewToken': False,
|
|
|
|
'token': 'aaaaaaaa-5555-eeee-eeee-eeeeeeeeeeee',
|
|
|
|
'tokenizationSucceeded': False,
|
|
|
|
},
|
|
|
|
'payment': {
|
|
|
|
'id': '7777777000_0',
|
|
|
|
'paymentOutput': {
|
|
|
|
'acquiredAmount': {'amount': 0, 'currencyCode': 'EUR'},
|
|
|
|
'amountOfMoney': {'amount': 4990, 'currencyCode': 'EUR'},
|
|
|
|
'cardPaymentMethodSpecificOutput': {
|
|
|
|
'acquirerInformation': {'name': "Test Pay"},
|
|
|
|
'card': {
|
|
|
|
'bin': '50010000',
|
|
|
|
'cardNumber': '************7777',
|
|
|
|
'countryCode': 'BE',
|
|
|
|
'expiryDate': '1244',
|
|
|
|
},
|
|
|
|
'fraudResults': {'cvvResult': 'P', 'fraudServiceResult': 'accepted'},
|
|
|
|
'paymentProductId': 3,
|
|
|
|
'threeDSecureResults': {'eci': '9', 'xid': 'zOMTQ5TcODUxMg=='},
|
|
|
|
'token': 'aaaaaaaa-5555-eeee-eeee-eeeeeeeeeeee',
|
|
|
|
},
|
|
|
|
'customer': {'device': {'ipAddressCountryCode': '99'}},
|
|
|
|
'paymentMethod': 'card',
|
|
|
|
'references': {'merchantReference': cls.reference},
|
|
|
|
},
|
|
|
|
'status': 'REJECTED',
|
|
|
|
'statusOutput': {
|
|
|
|
'errors': [{
|
|
|
|
'category': 'IO_ERROR',
|
|
|
|
'code': '9999',
|
|
|
|
'errorCode': '30511001',
|
|
|
|
'httpStatusCode': 402,
|
|
|
|
'id': 'EXTERNAL_ACQUIRER_ERROR',
|
|
|
|
'message': '',
|
|
|
|
'retriable': False,
|
|
|
|
}],
|
|
|
|
'isAuthorized': False,
|
|
|
|
'isCancellable': False,
|
|
|
|
'isRefundable': False,
|
|
|
|
'statusCategory': 'UNSUCCESSFUL',
|
|
|
|
'statusCode': 2,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
cls.notification_data_expired_card = {
|
|
|
|
'apiFullVersion': 'v1.1',
|
|
|
|
'apiVersion': 'v1',
|
|
|
|
'created': '2025-02-20T03:09:47.3706109+01:00',
|
|
|
|
'id': 'ffffffff-fff-fffff-ffff-ffffffffffff',
|
|
|
|
'merchantId': 'MyCompany',
|
|
|
|
'payment': {
|
|
|
|
'id': '9999999999_0',
|
|
|
|
'paymentOutput': {
|
|
|
|
'acquiredAmount': {'amount': 0, 'currencyCode': 'EUR'},
|
|
|
|
'amountOfMoney': {'amount': 4980, 'currencyCode': 'EUR'},
|
|
|
|
'cardPaymentMethodSpecificOutput': {
|
|
|
|
'acquirerInformation': {'name': "Test Pay"},
|
|
|
|
'card': {
|
|
|
|
'bin': '47777700',
|
|
|
|
'cardNumber': '************9999',
|
|
|
|
'countryCode': 'FR',
|
|
|
|
'expiryDate': '1234',
|
|
|
|
},
|
|
|
|
'fraudResults': {'cvvResult': 'P', 'fraudServiceResult': 'accepted'},
|
|
|
|
'paymentProductId': 1,
|
|
|
|
'threeDSecureResults': {'eci': '9'},
|
|
|
|
'token': 'ODOO-ALIAS-eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'},
|
|
|
|
'customer': {'device': {'ipAddressCountryCode': '99'}},
|
|
|
|
'paymentMethod': 'card',
|
|
|
|
'references': {'merchantReference': cls.reference},
|
|
|
|
},
|
|
|
|
'status': 'REJECTED',
|
|
|
|
'statusOutput': {
|
|
|
|
'errors': [{
|
|
|
|
'category': 'PAYMENT_PLATFORM_ERROR',
|
|
|
|
'code': '9999',
|
|
|
|
'errorCode': '30331001',
|
|
|
|
'httpStatusCode': 402,
|
|
|
|
'id': 'INVALID_CARD',
|
|
|
|
'message': '',
|
|
|
|
'retriable': False,
|
|
|
|
}],
|
|
|
|
'isAuthorized': False,
|
|
|
|
'isCancellable': False,
|
|
|
|
'isRefundable': False,
|
|
|
|
'statusCategory': 'UNSUCCESSFUL',
|
|
|
|
'statusCode': 2
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'type': 'payment.rejected',
|
|
|
|
}
|