diff --git a/payment_paytabs_odoo/README.rst b/payment_paytabs_odoo/README.rst new file mode 100755 index 000000000..cdf3df13c --- /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: (V17) Anfas Faisal K, 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..ebcb205b8 --- /dev/null +++ b/payment_paytabs_odoo/__init__.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Anfas Faisal K (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(env): + """Function to set up the payment provider 'paytabs' after + module installation.""" + setup_provider(env, 'paytabs') + + +def uninstall_hook(env): + """Function to reset the payment provider 'paytabs' before module + uninstallation.""" + reset_payment_provider(env, 'paytabs') diff --git a/payment_paytabs_odoo/__manifest__.py b/payment_paytabs_odoo/__manifest__.py new file mode 100644 index 000000000..15290b359 --- /dev/null +++ b/payment_paytabs_odoo/__manifest__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Anfas Faisal K (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': '17.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_method_data.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..0cae65e48 --- /dev/null +++ b/payment_paytabs_odoo/controllers/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Anfas Faisal K (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..787cbb11e --- /dev/null +++ b/payment_paytabs_odoo/controllers/payment_paytabs_odoo.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Anfas Faisal K (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_method_data.xml b/payment_paytabs_odoo/data/payment_method_data.xml new file mode 100644 index 000000000..ee8a84eb0 --- /dev/null +++ b/payment_paytabs_odoo/data/payment_method_data.xml @@ -0,0 +1,15 @@ + + + + + Paytabs + paytabs + + 2 + True + False + partial + + 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..3ca2b8005 --- /dev/null +++ b/payment_paytabs_odoo/data/payment_provider_data.xml @@ -0,0 +1,17 @@ + + + + + + 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..b93b78433 --- /dev/null +++ b/payment_paytabs_odoo/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 31.01.2024 +#### Version 17.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..98073ebea --- /dev/null +++ b/payment_paytabs_odoo/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-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..53dfb8a7f --- /dev/null +++ b/payment_paytabs_odoo/models/payment_provider.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-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='Api endpoint', help='API endpoint of Paytabs') + + @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..50d346ace --- /dev/null +++ b/payment_paytabs_odoo/models/payment_transaction.py @@ -0,0 +1,202 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-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 = self.env['payment.provider'].search( + [('code', '=', 'paytabs')]).domain + base_url = self.env['ir.config_parameter'].get_param('web.base.url') + 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(base_url, + PaymentPaytabs._return_url), + 'callback': urls.url_join(base_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/capture (1).png b/payment_paytabs_odoo/static/description/assets/icons/capture (1).png new file mode 100644 index 000000000..8824deafc Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/capture (1).png differ 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/img.png b/payment_paytabs_odoo/static/description/assets/icons/img.png new file mode 100644 index 000000000..70197f477 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/img.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/photo-capture.png b/payment_paytabs_odoo/static/description/assets/icons/photo-capture.png new file mode 100644 index 000000000..06c111758 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/icons/photo-capture.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/Cybrosys R.png b/payment_paytabs_odoo/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/misc/Cybrosys R.png differ diff --git a/payment_paytabs_odoo/static/description/assets/misc/email.svg b/payment_paytabs_odoo/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/payment_paytabs_odoo/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/payment_paytabs_odoo/static/description/assets/misc/phone.svg b/payment_paytabs_odoo/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/payment_paytabs_odoo/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/payment_paytabs_odoo/static/description/assets/misc/star (1) 2.svg b/payment_paytabs_odoo/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/payment_paytabs_odoo/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/payment_paytabs_odoo/static/description/assets/misc/support (1) 1.svg b/payment_paytabs_odoo/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/payment_paytabs_odoo/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/payment_paytabs_odoo/static/description/assets/misc/support-email.svg b/payment_paytabs_odoo/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/payment_paytabs_odoo/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/payment_paytabs_odoo/static/description/assets/misc/tick-mark.svg b/payment_paytabs_odoo/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/payment_paytabs_odoo/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/payment_paytabs_odoo/static/description/assets/misc/whatsapp 1.svg b/payment_paytabs_odoo/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/payment_paytabs_odoo/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/payment_paytabs_odoo/static/description/assets/misc/whatsapp.svg b/payment_paytabs_odoo/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/payment_paytabs_odoo/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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..164eb62c7 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..cd62a577c 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..12a613059 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.jpg b/payment_paytabs_odoo/static/description/assets/modules/4.jpg new file mode 100644 index 000000000..5627d58cb Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/modules/4.jpg differ diff --git a/payment_paytabs_odoo/static/description/assets/modules/5.jpg b/payment_paytabs_odoo/static/description/assets/modules/5.jpg new file mode 100644 index 000000000..73781cf50 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/modules/5.jpg 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..fc7017e27 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/1.png b/payment_paytabs_odoo/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..c7eb8875d 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..e82d0d689 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..8c567ae2b 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/hero-v17.gif b/payment_paytabs_odoo/static/description/assets/screenshots/hero-v17.gif new file mode 100644 index 000000000..b8f249fa5 Binary files /dev/null and b/payment_paytabs_odoo/static/description/assets/screenshots/hero-v17.gif differ diff --git a/payment_paytabs_odoo/static/description/banner.jpg b/payment_paytabs_odoo/static/description/banner.jpg new file mode 100644 index 000000000..760ac7a79 Binary files /dev/null and b/payment_paytabs_odoo/static/description/banner.jpg 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..ecc5f5985 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..c8314b199 --- /dev/null +++ b/payment_paytabs_odoo/static/description/index.html @@ -0,0 +1,580 @@ + + + + + + + Odoo App 3 Index + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+

+ PayTabs Payment Acquirer

+

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

+
+ +
+
+
+
+
+

Key Highlights +

+
+
+
+
+
+ +
+
+

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.

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

+ 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.

+
+
+
+
+
+
+
    +
  • + 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. . +
  • + +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on:25th May 2023 +
+

+ + Initial Commit for PayTabs Payment Acquirer.

+
+
+
+
+
+
+
+

Related Products

+
+
+ +
+
+

Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Implementation

+
+
+
+
+
+
+ service-icon +
+
+

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 + 99456767686
+
+
+
+
+
+
+
+
+ + + + + + 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..ecb253eb7 --- /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 + + + + + + + + + + + +