diff --git a/addons/payment_ogone/models/payment_acquirer.py b/addons/payment_ogone/models/payment_acquirer.py
index bebfafcfc74..3f58482e903 100644
--- a/addons/payment_ogone/models/payment_acquirer.py
+++ b/addons/payment_ogone/models/payment_acquirer.py
@@ -1,7 +1,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
-from hashlib import sha1
+from hashlib import new as hashnew
import requests
@@ -30,6 +30,10 @@ class PaymentAcquirer(models.Model):
string="SHA Key IN", required_if_provider='ogone', groups='base.group_system')
ogone_shakey_out = fields.Char(
string="SHA Key OUT", required_if_provider='ogone', groups='base.group_system')
+ ogone_hash_function = fields.Selection(
+ [('sha1', 'SHA1'), ('sha256', 'SHA256'), ('sha512', 'SHA512')], default='sha512',
+ string="Hash function", required_if_provider='ogone',
+ )
#=== COMPUTE METHODS ===#
@@ -99,7 +103,9 @@ class PaymentAcquirer(models.Model):
formatted_items = [(k.upper(), v) for k, v in values.items()]
sorted_items = sorted(formatted_items)
signing_string = ''.join(f'{k}={v}{key}' for k, v in sorted_items if _filter_key(k) and v)
- return sha1(signing_string.encode()).hexdigest()
+ shasign = hashnew(self.ogone_hash_function)
+ shasign.update(signing_string.encode())
+ return shasign.hexdigest()
def _ogone_make_request(self, payload=None, method='POST'):
""" Make a request to one of Ogone APIs.
diff --git a/addons/payment_ogone/tests/common.py b/addons/payment_ogone/tests/common.py
index 01c0a30083f..82079feffe6 100644
--- a/addons/payment_ogone/tests/common.py
+++ b/addons/payment_ogone/tests/common.py
@@ -15,6 +15,7 @@ class OgoneCommon(PaymentCommon):
'ogone_password': 'dummy',
'ogone_shakey_in': 'dummy',
'ogone_shakey_out': 'dummy',
+ 'ogone_hash_function': 'sha1',
})
cls.acquirer = cls.ogone
diff --git a/addons/payment_ogone/views/payment_views.xml b/addons/payment_ogone/views/payment_views.xml
index db7cf624661..f08ed8d4569 100644
--- a/addons/payment_ogone/views/payment_views.xml
+++ b/addons/payment_ogone/views/payment_views.xml
@@ -13,6 +13,7 @@
+