diff --git a/payment_paytabs_odoo/README.rst b/payment_paytabs_odoo/README.rst new file mode 100755 index 000000000..e1b1858aa --- /dev/null +++ b/payment_paytabs_odoo/README.rst @@ -0,0 +1,45 @@ +.. image:: https://img.shields.io/badge/licence-LGPL--3-green.svg + :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +PayTabs Payment Acquirer +======================= +PayTabs Payment Gateway For Website + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.gnu.org/licenses/lgpl-3.0-standalone.html) + +Credits +------- +Developer: (V16) Anfas Faisal K, Rosmy John, Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/payment_paytabs_odoo/__init__.py b/payment_paytabs_odoo/__init__.py new file mode 100644 index 000000000..87d39bc0b --- /dev/null +++ b/payment_paytabs_odoo/__init__.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import controllers +from . import models +from odoo.addons.payment import setup_provider, reset_payment_provider + + +def post_init_hook(cr, registry): + """Function to set up the payment provider 'paytabs' after + module installation.""" + setup_provider(cr, registry, 'paytabs') + + +def uninstall_hook(cr, registry): + """Function to reset the payment provider 'paytabs' before module + uninstallation.""" + reset_payment_provider(cr, registry, 'paytabs') diff --git a/payment_paytabs_odoo/__manifest__.py b/payment_paytabs_odoo/__manifest__.py new file mode 100644 index 000000000..79d132b21 --- /dev/null +++ b/payment_paytabs_odoo/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################### +{ + 'name': 'PayTabs Payment Acquirer', + 'version': '16.0.1.0.0', + 'category': 'eCommerce,Marketing', + 'summary': 'PayTabs Payment Gateway For Website', + 'description': "This module enables seamless payments through PayTabs, " + "ensuring secure and convenient online transactions.", + 'author': "Cybrosys Techno Solutions", + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'images': ['static/description/banner.png'], + 'depends': ['payment', 'account', 'website_sale'], + 'data': [ + 'views/payment_provider_views.xml', + 'views/payment_paytabs_templates.xml', + 'data/payment_provider_data.xml', + ], + 'post_init_hook': 'post_init_hook', + 'uninstall_hook': 'uninstall_hook', + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/payment_paytabs_odoo/controllers/__init__.py b/payment_paytabs_odoo/controllers/__init__.py new file mode 100644 index 000000000..7c2799d40 --- /dev/null +++ b/payment_paytabs_odoo/controllers/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import payment_paytabs_odoo diff --git a/payment_paytabs_odoo/controllers/payment_paytabs_odoo.py b/payment_paytabs_odoo/controllers/payment_paytabs_odoo.py new file mode 100644 index 000000000..d998ce7bf --- /dev/null +++ b/payment_paytabs_odoo/controllers/payment_paytabs_odoo.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import http +from odoo.http import request + + +class PaymentPaytabs(http.Controller): + """ + Controller for handling payment-related operations with Paytabs. + Methods: + paytabs_return: Handle the return from Paytabs payment gateway. + """ + _return_url = '/payment/paytabs/return' + + @http.route(_return_url, type='http', auth='public', + methods=['POST'], csrf=False, save_session=False) + def paytabs_return(self, **post): + """ + Handle the return from PayTabs payment gateway. + + This method is used when PayTabs sends a notification with payment + data. It retrieves the transaction data, handles the notification + data, and redirects the user to the payment status page. + + :param post: The POST data received from PayTabs. + :return: A redirect response to the payment status page. + """ + tx_sudo = request.env[ + 'payment.transaction'].sudo()._get_tx_from_notification_data( + 'paytabs', post) + tx_sudo._handle_notification_data('paytabs', post) + return request.redirect('/payment/status') diff --git a/payment_paytabs_odoo/data/payment_provider_data.xml b/payment_paytabs_odoo/data/payment_provider_data.xml new file mode 100644 index 000000000..a3991c7a2 --- /dev/null +++ b/payment_paytabs_odoo/data/payment_provider_data.xml @@ -0,0 +1,15 @@ + + + + + + paytabs + PayTabs + + + + + + + diff --git a/payment_paytabs_odoo/doc/RELEASE_NOTES.md b/payment_paytabs_odoo/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..f4b25c293 --- /dev/null +++ b/payment_paytabs_odoo/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 14.11.2023 +#### Version 16.0.1.0.0 +#### ADD + +- Initial commit for PayTabs Payment Acquirer diff --git a/payment_paytabs_odoo/models/__init__.py b/payment_paytabs_odoo/models/__init__.py new file mode 100644 index 000000000..40c0fe6a0 --- /dev/null +++ b/payment_paytabs_odoo/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import payment_provider +from . import payment_transaction diff --git a/payment_paytabs_odoo/models/payment_provider.py b/payment_paytabs_odoo/models/payment_provider.py new file mode 100644 index 000000000..71d11ad45 --- /dev/null +++ b/payment_paytabs_odoo/models/payment_provider.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################### +import logging +import requests + +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + +_logger = logging.getLogger(__name__) + + +class PaymentProvider(models.Model): + """ Inherit Payment Provider to add new payment into the Payment Provider + page. + Methods: + _get_payment_method_information: Override to add PayTabs payment + method information to the existing methods. + _paytabs_make_request: Create a request to PayTabs + """ + _inherit = 'payment.provider' + + code = fields.Selection(selection_add=[('paytabs', 'paytabs')], + ondelete={'paytabs': 'set default'}, + help="The technical code of this payment provider", + string="Code") + profile_key = fields.Char(string='Profile ID', groups='base.group_user', + help="PayTabs profile id of the user") + api_key = fields.Char(string='Api Key', required_if_provider='paytabs', + groups='base.group_user', help="PayTabs Server key") + domain = fields.Char(string='Domain', help='Domain for the url,' + 'It should not contain PORT' + 'Number') + + @api.model + def _get_payment_method_information(self): + """Override to add PayTabs payment method information to the + existing methods. + """ + res = super()._get_payment_method_information() + res['paytabs'] = {'mode': 'unique', 'domain': [('type', '=', 'bank')]} + return res + + def _paytabs_make_request(self, url, data=None, method='POST'): + """Create a request to PayTabs + + :param url: The URL for the request. + :param data: The data to be sent with the request. + :param method: The HTTP method for the request (default is 'POST'). + :return: The response content.""" + self.ensure_one() + data.pop('api_url') + try: + response = requests.request( + method, url, json=data, + headers={ + "Authorization": self.api_key, + "Content-Type": "application/json", + }, + timeout=60) + response_content = response.json() + if 'code' in response_content and response_content['code'] == 1: + raise ValidationError( + _("PayTabs: Check profile ID and Api Key")) + if 'code' in response_content and response_content['code'] == 206: + raise ValidationError(_("PayTabs: Currency not available.")) + return response_content + except requests.exceptions.RequestException: + _logger.exception("Unable to communicate with Paytabs: %s", url) + raise ValidationError( + _("PayTabs: Could not establish a connection to the API.")) + diff --git a/payment_paytabs_odoo/models/payment_transaction.py b/payment_paytabs_odoo/models/payment_transaction.py new file mode 100644 index 000000000..f9d95fbac --- /dev/null +++ b/payment_paytabs_odoo/models/payment_transaction.py @@ -0,0 +1,202 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################### +import logging +from werkzeug import urls +from odoo import api, models, _ +from odoo.exceptions import ValidationError +from odoo.addons.payment import utils as payment_utils +from odoo.addons.payment_paytabs_odoo.controllers.payment_paytabs_odoo import PaymentPaytabs + +_logger = logging.getLogger(__name__) + + +class PaymentTransaction(models.Model): + """ + Inherit the payment transactions, to add Paytabs specific functionality. + + Methods: + _compute_reference: Override of `payment` to ensure that APS' + requirements for references are satisfied. + _get_specific_rendering_values: Override of + `_get_specific_rendering_values` to handle specific rendering values + for Paytabs. + execute_payment: Fetching data and Executing Payment. + _get_tx_from_notification_data: Get payment status from Paytabs. + + _handle_notification_data: Handle the notification data received + from Paytabs. + + _process_notification_data: Process the notification data received + from Paytabs. + """ + _inherit = 'payment.transaction' + + @api.model + def _compute_reference(self, provider_code, prefix=None, separator='-', + **kwargs): + """ Override of `payment` to ensure that APS' requirements for + references are satisfied. + + APS' requirements for transaction are as follows: - References can + only be made of alphanumeric characters and/or '-' and '_'. The + prefix is generated with 'tx' as default. This prevents the prefix + from being generated based on document names that may contain + non-allowed characters (eg: INV/2020/...). + + :param str provider_code: The code of the provider handling the + transaction. + :param str prefix: The custom prefix used to compute the + full reference. + :param str separator: The custom separator used to separate the prefix + from the suffix. + :return: The unique reference + for the transaction. + :rtype: str + """ + if provider_code == 'paytabs': + prefix = payment_utils.singularize_reference_prefix() + return super()._compute_reference(provider_code, prefix=prefix, + separator=separator, **kwargs) + + def _get_specific_rendering_values(self, processing_values): + """ Override of `_get_specific_rendering_values` to handle specific + rendering values for PayTabs. + + :param processing_values: The processing values dictionary. + :return: The rendering values.""" + res = super()._get_specific_rendering_values(processing_values) + if self.provider_code != 'paytabs': + return res + return self.execute_payment() + + def execute_payment(self): + """Fetching data and Executing Payment + :return: The response content.""" + api_url = 'https://secure-global.paytabs.com/payment/request' + domain_url = self.env['payment.provider'].search( + [('code', '=', 'paytabs')]).domain + sale_order = self.env['payment.transaction'].search( + [('id', '=', self.id)]).sale_order_ids + paytabs_values = { + "profile_id": int(self.provider_id.profile_key), + "tran_type": "sale", + "tran_class": "ecom", + "cart_description": self.reference, + "cart_id": self.reference, + "cart_currency": self.currency_id.name, + "cart_amount": (self.amount - sale_order.amount_tax), + 'return': urls.url_join(domain_url, + PaymentPaytabs._return_url), + 'callback': urls.url_join(domain_url, + PaymentPaytabs._return_url), + "api_url": api_url, + "customer_details": { + "name": self.partner_name, + "email": self.partner_email, + "street1": self.partner_address, + "city": self.partner_city, + "state": self.partner_state_id.code, + "country": self.partner_country_id.code, + "zip": self.partner_zip + }, + "shipping_details": { + "name": self.partner_name, + "email": self.partner_email, + "street1": self.partner_address, + "city": self.partner_city, + "state": self.partner_state_id.code, + "country": self.partner_country_id.code, + "zip": self.partner_zip + }, + } + response_content = self.provider_id._paytabs_make_request( + api_url, paytabs_values) + response_content['api_url'] = response_content.get('redirect_url') + return response_content + + def _get_tx_from_notification_data(self, provider_code, notification_data): + """ + Get payment status from Paytabs. + + :param provider_code: The code of the provider handling the transaction. + :param notification_data: The data received from Paytabs notification. + :return: The transaction matching the reference. + """ + tx = super()._get_tx_from_notification_data(provider_code, + notification_data) + if provider_code != 'paytabs': + return tx + reference = notification_data.get('cartId', False) + if not reference: + raise ValidationError(_("PayTabs: No reference found.")) + tx = self.search( + [('reference', '=', reference), ('provider_code', '=', 'paytabs')]) + if not tx: + raise ValidationError( + _("PayTabs: No transaction found matching reference" + "%s.") % reference) + return tx + + def _handle_notification_data(self, provider_code, notification_data): + """ + Handle the notification data received from Paytabs. + + This method retrieves the transaction corresponding to the + notification data, processes the notification data, and executes the + callback. + + :param provider_code: The code of the provider handling the transaction. + :param notification_data: The data received from Paytabs notification. + :return: The transaction object. + """ + tx = self._get_tx_from_notification_data(provider_code, + notification_data) + tx._process_notification_data(notification_data) + tx._execute_callback() + return tx + + def _process_notification_data(self, notification_data): + """ + Process the notification data received from PayTabs. + + This method processes the notification data and updates the payment + state of the transaction accordingly. + + :param notification_data: The data received from PayTabs notification. + """ + super()._process_notification_data(notification_data) + if self.provider_code != 'paytabs': + return + + status = notification_data.get('respStatus') + if status == 'A': + self._set_done(state_message="Authorised") + elif status == 'APPROVED': + self._set_pending(state_message="Authorised but on hold for " + "further anti-fraud review") + elif status in ('E', 'D'): + self._set_canceled(state_message="Error") + else: + _logger.warning("Received unrecognized payment state %s for " + "transaction with reference %s", + status, self.reference) + self._set_error("PayTabs: " + _("Invalid payment status.")) diff --git a/payment_paytabs_odoo/static/description/assets/icons/check.png b/payment_paytabs_odoo/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/check.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/chevron.png b/payment_paytabs_odoo/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/chevron.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/cogs.png b/payment_paytabs_odoo/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/cogs.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/consultation.png b/payment_paytabs_odoo/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/consultation.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/ecom-black.png b/payment_paytabs_odoo/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/ecom-black.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/education-black.png b/payment_paytabs_odoo/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/education-black.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/hotel-black.png b/payment_paytabs_odoo/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/hotel-black.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/license.png b/payment_paytabs_odoo/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/license.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/lifebuoy.png b/payment_paytabs_odoo/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/lifebuoy.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/manufacturing-black.png b/payment_paytabs_odoo/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/manufacturing-black.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/pos-black.png b/payment_paytabs_odoo/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/pos-black.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/puzzle.png b/payment_paytabs_odoo/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/puzzle.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/restaurant-black.png b/payment_paytabs_odoo/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/restaurant-black.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/service-black.png b/payment_paytabs_odoo/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/service-black.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/trading-black.png b/payment_paytabs_odoo/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/trading-black.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/training.png b/payment_paytabs_odoo/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/training.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/update.png b/payment_paytabs_odoo/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/update.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/user.png b/payment_paytabs_odoo/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/user.png differ diff --git a/payment_paytabs_odoo/static/description/assets/icons/wrench.png b/payment_paytabs_odoo/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/wrench.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/categories.png b/payment_paytabs_odoo/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/categories.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/check-box.png b/payment_paytabs_odoo/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/check-box.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/compass.png b/payment_paytabs_odoo/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/compass.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/corporate.png b/payment_paytabs_odoo/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/corporate.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/customer-support.png b/payment_paytabs_odoo/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/customer-support.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/cybrosys-logo.png b/payment_paytabs_odoo/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/cybrosys-logo.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/features.png b/payment_paytabs_odoo/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/features.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/logo.png b/payment_paytabs_odoo/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/logo.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/pictures.png b/payment_paytabs_odoo/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/pictures.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/pie-chart.png b/payment_paytabs_odoo/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/pie-chart.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/right-arrow.png b/payment_paytabs_odoo/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/right-arrow.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/star.png b/payment_paytabs_odoo/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/star.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/support.png b/payment_paytabs_odoo/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/support.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/whatsapp.png b/payment_paytabs_odoo/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/whatsapp.png differ diff --git a/payment_paytabs_odoo/static/description/assets/modules/1.png b/payment_paytabs_odoo/static/description/assets/modules/1.png new file mode 100644 index 000000000..991fc77ec Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/modules/1.png differ diff --git a/payment_paytabs_odoo/static/description/assets/modules/2.jpg b/payment_paytabs_odoo/static/description/assets/modules/2.jpg new file mode 100644 index 000000000..481577d72 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/modules/2.jpg differ diff --git a/payment_paytabs_odoo/static/description/assets/modules/3.jpg b/payment_paytabs_odoo/static/description/assets/modules/3.jpg new file mode 100644 index 000000000..5e0523196 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/modules/3.jpg differ diff --git a/payment_paytabs_odoo/static/description/assets/modules/4.png b/payment_paytabs_odoo/static/description/assets/modules/4.png new file mode 100644 index 000000000..d9374733c Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/modules/4.png differ diff --git a/payment_paytabs_odoo/static/description/assets/modules/5.png b/payment_paytabs_odoo/static/description/assets/modules/5.png new file mode 100644 index 000000000..c3a620a56 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/modules/5.png differ diff --git a/payment_paytabs_odoo/static/description/assets/modules/6.jpg b/payment_paytabs_odoo/static/description/assets/modules/6.jpg new file mode 100644 index 000000000..cbcc848e2 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/modules/6.jpg differ diff --git a/payment_paytabs_odoo/static/description/assets/screenshots/.gif.zip b/payment_paytabs_odoo/static/description/assets/screenshots/.gif.zip new file mode 100644 index 000000000..86c278389 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/screenshots/.gif.zip differ diff --git a/payment_paytabs_odoo/static/description/assets/screenshots/1.png b/payment_paytabs_odoo/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..6787ad1b7 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/screenshots/1.png differ diff --git a/payment_paytabs_odoo/static/description/assets/screenshots/2.png b/payment_paytabs_odoo/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..0aee9d147 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/screenshots/2.png differ diff --git a/payment_paytabs_odoo/static/description/assets/screenshots/3.png b/payment_paytabs_odoo/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..953b34d27 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/screenshots/3.png differ diff --git a/payment_paytabs_odoo/static/description/assets/screenshots/4.png b/payment_paytabs_odoo/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..41e84d979 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/screenshots/4.png differ diff --git a/payment_paytabs_odoo/static/description/assets/screenshots/9.png b/payment_paytabs_odoo/static/description/assets/screenshots/9.png new file mode 100644 index 000000000..9b44a6114 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/screenshots/9.png differ diff --git a/payment_paytabs_odoo/static/description/assets/screenshots/hero.gif b/payment_paytabs_odoo/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..eb3243524 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/screenshots/hero.gif differ diff --git a/payment_paytabs_odoo/static/description/banner.png b/payment_paytabs_odoo/static/description/banner.png new file mode 100644 index 000000000..75f3b32b1 Binary files /dev/null and b/payment_paytabs_odoo/static/description/banner.png differ diff --git a/payment_paytabs_odoo/static/description/icon.png b/payment_paytabs_odoo/static/description/icon.png new file mode 100644 index 000000000..0183d4187 Binary files /dev/null and b/payment_paytabs_odoo/static/description/icon.png differ diff --git a/payment_paytabs_odoo/static/description/index.html b/payment_paytabs_odoo/static/description/index.html new file mode 100644 index 000000000..fa5591f35 --- /dev/null +++ b/payment_paytabs_odoo/static/description/index.html @@ -0,0 +1,630 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+ +

+ PayTabs Payment Acquirer +

+

+ A Module For Configuring Paytabs Payment Methods In Website. +

+ + +
+
+
+
+ + +
+
+ +
+

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview

+
+
+
+ This module enables seamless payments through PayTabs, ensuring secure and convenient online transactions. + + +
+
+ +
+

+ Features +

+
+
+
+ + Enable Paytabs Payment Provider. + +
+
+ + Clicking on the "Pay Now" button will initiate a seamless redirection to the PayTabs page for a secure and hassle-free payment process. +
+ +
+ + Additionally, their relevant customer details will be automatically included, enhancing the overall payment experience with streamlined information. + +
+
+
+
+ + +
+
+ +
+

Screenshots

+
+ +
+
+
+

+ In the PayTabs Payment Acquirer fill the details. +

+ +
+ +
+

+ After choosing the products and checking out, choose PayTabs as shown in the figure. +

+ +
+
+

+ It will redirect us to the Payment Page. From here we can choose the Payment option and can further do the remaining payment. +

+ +
+ +
+

+ Once the Payment is done it will redirect us to the Payment status page. +

+ +
+
+
+ + + +
+
+ +
+

+ Related + Products +

+
+
+
+ +
+
+ + +
+
+ +
+

+ Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire Odoo Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + +
+
+ +
+

+ Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

+ Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need + help? Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on + WhatsApp!

+ +

+ +91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+
+
+ diff --git a/payment_paytabs_odoo/static/src/img/paytabs_icon.png b/payment_paytabs_odoo/static/src/img/paytabs_icon.png new file mode 100644 index 000000000..b42d7f280 Binary files /dev/null and b/payment_paytabs_odoo/static/src/img/paytabs_icon.png differ diff --git a/payment_paytabs_odoo/views/payment_paytabs_templates.xml b/payment_paytabs_odoo/views/payment_paytabs_templates.xml new file mode 100644 index 000000000..1e874c462 --- /dev/null +++ b/payment_paytabs_odoo/views/payment_paytabs_templates.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/payment_paytabs_odoo/views/payment_provider_views.xml b/payment_paytabs_odoo/views/payment_provider_views.xml new file mode 100644 index 000000000..d073f7d31 --- /dev/null +++ b/payment_paytabs_odoo/views/payment_provider_views.xml @@ -0,0 +1,21 @@ + + + + + payment.provider.view.form.inherit.payment.paytabs.odoo + payment.provider + + + + + + + + + + + +