Odoo18-Base/addons/payment_sips/models/payment_provider.py

64 lines
2.4 KiB
Python
Raw Permalink Normal View History

2025-03-10 10:52:11 +07:00
# Part of Odoo. See LICENSE file for full copyright and licensing details.
# Original Copyright 2015 Eezee-It, modified and maintained by Odoo.
from hashlib import sha256
from odoo import fields, models
from odoo.addons.payment_sips import const
class PaymentProvider(models.Model):
_inherit = 'payment.provider'
code = fields.Selection(
selection_add=[('sips', "Sips")], ondelete={'sips': 'set default'})
sips_merchant_id = fields.Char(
string="Merchant ID", help="The ID solely used to identify the merchant account with Sips",
required_if_provider='sips')
sips_secret = fields.Char(
string="SIPS Secret Key", size=64, required_if_provider='sips', groups='base.group_system')
sips_key_version = fields.Integer(
string="Secret Key Version", required_if_provider='sips', default=2)
sips_test_url = fields.Char(
string="Test URL", required_if_provider='sips',
default="https://payment-webinit.simu.sips-services.com/paymentInit")
sips_prod_url = fields.Char(
string="Production URL", required_if_provider='sips',
default="https://payment-webinit.sips-services.com/paymentInit")
sips_version = fields.Char(
string="Interface Version", required_if_provider='sips', default="HP_2.31")
def _get_supported_currencies(self):
""" Override of `payment` to return the supported currencies. """
supported_currencies = super()._get_supported_currencies()
if self.code == 'sips':
supported_currencies = supported_currencies.filtered(
lambda c: c.name in const.SUPPORTED_CURRENCIES.keys()
)
return supported_currencies
def _sips_generate_shasign(self, data):
""" Generate the shasign for incoming or outgoing communications.
Note: self.ensure_one()
:param str data: The data to use to generate the shasign
:return: shasign
:rtype: str
"""
self.ensure_one()
key = self.sips_secret
shasign = sha256((data + key).encode('utf-8'))
return shasign.hexdigest()
# === BUSINESS METHODS ===#
def _get_default_payment_method_codes(self):
""" Override of `payment` to return the default payment method codes. """
default_codes = super()._get_default_payment_method_codes()
if self.code != 'sips':
return default_codes
return const.DEFAULT_PAYMENT_METHODS_CODES