diff --git a/payment_redsys/README.rst b/payment_redsys/README.rst new file mode 100644 index 00000000000..ffe348eede2 --- /dev/null +++ b/payment_redsys/README.rst @@ -0,0 +1,161 @@ +======================= +Pasarela de pago Redsys +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--spain-lightgray.png?logo=github + :target: https://github.com/OCA/l10n-spain/tree/15.0/payment_redsys + :alt: OCA/l10n-spain +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/l10n-spain-15-0/l10n-spain-15-0-payment_redsys + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/webui/builds.html?repo=OCA/l10n-spain&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Este módulo añade la opción de pago a través de la pasarela de Redsys, pudiendo +seleccionar entre los métodos de pago: pago con tarjeta, pago por transferencia, +domiciliación y Bizum. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +Para utilizar este módulo, necesita la biblioteca `pycryptodome +`_ instalada en su sistema:: + + pip3 install pycryptodome + +Configuration +============= + +Parámetros +~~~~~~~~~~ + +* **Nombre del comercio**: Indicaremos el nombre del comercio. + +* **Número de comercio (FUC)**: Indicaremos el número de comercio que + nuestra entidad nos ha comunicado. + +* **Clave secreta de encriptación**: Indicaremos la clave de encriptación + que tiene el comercio. + +* **Número de terminal**: Indicaremos el terminal del TPV. + +* **Tipo de firma**: Seleccionaremos el tipo de firma del comercio. + +* **Tipo de moneda**: Seleccionaremos la moneda de nuestro terminal TPV + (Normalmente EUR - Euros). + +* **Tipo de transacción**: Indicaremos el tipo de transacción, 0. + +* **Idioma TPV**: Indicaremos el idioma en el TPV. + +* **Método de pago**: Indicaremos qué tipo de pago se debe aceptar, pago con + tarjeta, Bizum u otro de los disponibles. + +* **Porcentaje de pago**: Indicar el porcentaje de pago que se permite, si + se deja a 0.0 se entiende 100%. + +Nota +~~~~ + +Se tiene que verificar la configuración del comercio en el +módulo de administración de Redsys, donde la opción “Parámetros en las +URLs” debe tener el valor “SI”. + +En caso de que exista más de una base de datos en la instalación, cuando la +pasarela de pago envía el formulario a "/payment/redsys/return" odoo no sabe +con que base de datos procesar esta información, por lo que hay que establecer +los parametros **dbfilter** y **dbname** en el archivo de configuración. + +Para mostrar simultáneamente en el comercio electrónico varios de los métodos +de pago que proporciona Redsys, como pago con tarjeta y Bizum por ejemplo, +debemos duplicar el medio de pago y escoger en el campo método de pago el que +corresponda en cada caso. + +En el caso de Bizum, el titular del TPV deberá solicitar al banco su activación. + +Known issues / Roadmap +====================== + +De acuerdo a los requisitos de Redsys, el tamaño máximo del número de pedido +resultante (``Ds_Order``) es de 12 caracteres. Este addon trunca dicho +dato en el comienzo de la transacción, con el resultado de que, aunque Redsys +la aceptará, no se finalizará el pedido pedido en Odoo al retornar y entregará +un Error 500 a Redsys. +Para evitar esto, es recomendable seleccionar secuencias de pedido que se +ajusten a esta limitación, en particular de 10 o menos caracteres, al ser la +referencia un número extendido a partir del pedido, que incluye un guion y un +número secuencial para posibles repeticiones de pago. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Sergio Teruel + * Carlos Dauden + * Carlos Roca + * João Marques + +* Isaac Gallart + +* `Acysos S.L. `_: + + * Ignacio Ibeas + +* `Planes Asesoria y Soluciones Informaticas S.L. `_: + + * Luis Planes + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/l10n-spain `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/payment_redsys/__init__.py b/payment_redsys/__init__.py new file mode 100644 index 00000000000..822e3704ce2 --- /dev/null +++ b/payment_redsys/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + +from . import models +from . import controllers diff --git a/payment_redsys/__manifest__.py b/payment_redsys/__manifest__.py new file mode 100644 index 00000000000..8362b310a0b --- /dev/null +++ b/payment_redsys/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2017 Tecnativa - Sergio Teruel +# Copyright 2020 Tecnativa - João Marques + +{ + "name": "Pasarela de pago Redsys", + "category": "Payment Acquirer", + "summary": "Payment Acquirer: Redsys Implementation", + "version": "15.0.1.0.0", + "author": "Tecnativa, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/l10n-spain", + "depends": ["payment", "website_sale"], + "external_dependencies": {"python": ["pycryptodome"]}, + "data": [ + "views/payment_acquirer.xml", + "views/payment_redsys_templates.xml", + "data/payment_redsys.xml", + ], + "license": "AGPL-3", + "installable": True, +} diff --git a/payment_redsys/controllers/__init__.py b/payment_redsys/controllers/__init__.py new file mode 100644 index 00000000000..12a7e529b67 --- /dev/null +++ b/payment_redsys/controllers/__init__.py @@ -0,0 +1 @@ +from . import main diff --git a/payment_redsys/controllers/main.py b/payment_redsys/controllers/main.py new file mode 100644 index 00000000000..e1b2d0d1310 --- /dev/null +++ b/payment_redsys/controllers/main.py @@ -0,0 +1,51 @@ +# Copyright 2016-2017 Tecnativa - Sergio Teruel +# Copyright 2019 Ignacio Ibeas +# Copyright 2023 Planesnet - Luis Planes, Laia Espinosa, Raul Solana +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import logging +import pprint + +from odoo import http +from odoo.http import request + +_logger = logging.getLogger(__name__) + + +class RedsysController(http.Controller): + _return_url = "/payment/redsys/return" + _cancel_url = "/payment/redsys/cancel" + _exception_url = "/payment/redsys/error" + _reject_url = "/payment/redsys/reject" + + @http.route( + [ + "/payment/redsys/return", + "/payment/redsys/cancel", + "/payment/redsys/error", + "/payment/redsys/reject", + ], + type="http", + auth="public", + csrf=False, + ) + def redsys_return(self, **post): + """Redsys.""" + _logger.info( + "Redsys: entering form_feedback with post data %s", pprint.pformat(post) + ) + if post: + request.env["payment.transaction"].sudo()._handle_feedback_data( + "redsys", post + ) + return request.redirect("/payment/status") + + @http.route( + ["/payment/redsys/result/"], + type="http", + auth="public", + methods=["GET"], + website=True, + ) + def redsys_result(self, page, **vals): + return request.redirect("/payment/status") diff --git a/payment_redsys/data/payment_redsys.xml b/payment_redsys/data/payment_redsys.xml new file mode 100644 index 00000000000..aeb3133b1a1 --- /dev/null +++ b/payment_redsys/data/payment_redsys.xml @@ -0,0 +1,44 @@ + + + + + Redsys + + redsys + + + Bussines name + 8888888 + Bussines description + xxxxxxxxxxxx -- SHA256 + + +

+ A payment gateway to accept online payments via credit cards. +

+
    +
  • eCommerce
  • +
+
+ You will be redirected to the Redsys payment gateway after clicking on the payment button.

]]>
+
+ + Bizum + + + + + Redsys + redsys + inbound + + +
diff --git a/payment_redsys/i18n/bg.po b/payment_redsys/i18n/bg.po new file mode 100644 index 00000000000..8f036f28b7c --- /dev/null +++ b/payment_redsys/i18n/bg.po @@ -0,0 +1,288 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * payment_redsys +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: l10n-spain (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-09-17 19:27+0000\n" +"PO-Revision-Date: 2016-09-25 14:07+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Bulgarian (http://www.transifex.com/oca/OCA-l10n-spain-8-0/" +"language/bg/)\n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__005 +msgid "Alemán" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Bank Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__z +msgid "Bizum" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__001 +msgid "Castellano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__003 +msgid "Catalán" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_currency +msgid "Currency" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__display_name +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__display_name +msgid "Display Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__d +msgid "Domiciliacion" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__013 +msgid "Euskera" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__004 +msgid "Francés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__012 +msgid "Gallego" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_signature_version__hmac_sha256_v1 +msgid "HMAC SHA256 V1" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__006 +msgid "Holandés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__id +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__id +msgid "ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__002 +msgid "Inglés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__007 +msgid "Italiano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer____last_update +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction____last_update +msgid "Last Modified on" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_lang +msgid "Merchant Consumer Language" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_data +msgid "Merchant Data" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_name +msgid "Merchant Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_code +msgid "Merchant code" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Ok: %s" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__t +msgid "Pago con Tarjeta" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__r +msgid "Pago por Transferencia" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Partial payment percent must be between 0 and 100" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_acquirer +msgid "Payment Acquirer" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_pay_method +msgid "Payment Method" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_transaction +msgid "Payment Transaction" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__011 +msgid "Polaco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__009 +msgid "Portugués" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_description +msgid "Product Description" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__provider +msgid "Provider" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__provider__redsys +#: model:payment.acquirer,name:payment_redsys.payment_acquirer_redsys +msgid "Redsys" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_signature_version +msgid "Redsys Signature Version" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Redsys: feedback error %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "Reduction percent" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_secret_key +msgid "Secret Key" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__008 +msgid "Sueco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_terminal +msgid "Terminal" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__redsys_txnid +msgid "Transaction ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_transaction_type +msgid "Transtaction Type" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__010 +msgid "Valenciano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,help:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "" +"Write percent reduction payment, for this method payment.With this option " +"you can allow partial payments in your shop online, the residual amount in " +"pending for do a manual payment later." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pre_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"You will be redirected to the Redsys payment gateway after clicking on the " +"payment button." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,auth_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been authorized." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,cancel_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been cancelled." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pending_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"Your payment has been successfully processed but is waiting for approval." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,done_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been successfully processed. Thank you!" +msgstr "" + +#~ msgid "Order" +#~ msgstr "Поръчка" + +#~ msgid "Taxes:" +#~ msgstr "Данъци:" + +#~ msgid "Untaxed Amount:" +#~ msgstr "Сума без Данъци" diff --git a/payment_redsys/i18n/ca.po b/payment_redsys/i18n/ca.po new file mode 100644 index 00000000000..78e85c05d41 --- /dev/null +++ b/payment_redsys/i18n/ca.po @@ -0,0 +1,358 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * payment_redsys +# +# Translators: +# Carles Antoli , 2016 +# Carles Antoli , 2016 +# Eric Antones , 2015-2016 +msgid "" +msgstr "" +"Project-Id-Version: l10n-spain (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-26 16:03+0000\n" +"PO-Revision-Date: 2021-03-30 09:46+0000\n" +"Last-Translator: Daniel Martinez Vila \n" +"Language-Team: Catalan (http://www.transifex.com/oca/OCA-l10n-spain-8-0/" +"language/ca/)\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__005 +msgid "Alemán" +msgstr "Alemany" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Bank Error: %s (%s)" +msgstr "Error del banc: %s (%s)" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__z +msgid "Bizum" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__001 +msgid "Castellano" +msgstr "Castellà" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__003 +msgid "Catalán" +msgstr "Català" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_currency +msgid "Currency" +msgstr "Moneda" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__display_name +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__display_name +msgid "Display Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__d +msgid "Domiciliacion" +msgstr "Domiciliació" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Error: %s (%s)" +msgstr "Error: %s (%s)" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__013 +msgid "Euskera" +msgstr "Basc" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__004 +msgid "Francés" +msgstr "Francès" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__012 +msgid "Gallego" +msgstr "Gallec" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_signature_version__hmac_sha256_v1 +msgid "HMAC SHA256 V1" +msgstr "HMAC SHA256 V1" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__006 +msgid "Holandés" +msgstr "Holandès" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__id +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__id +msgid "ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__002 +msgid "Inglés" +msgstr "Anglès" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__007 +msgid "Italiano" +msgstr "Italià" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer____last_update +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction____last_update +msgid "Last Modified on" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_lang +msgid "Merchant Consumer Language" +msgstr "Llenguatge del consumidor comercial" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_data +msgid "Merchant Data" +msgstr "Dades de comerciant" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_name +msgid "Merchant Name" +msgstr "Dades de comerciant" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_code +msgid "Merchant code" +msgstr "Codi de comerciant" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Ok: %s" +msgstr "Ok: %s" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__t +msgid "Pago con Tarjeta" +msgstr "Pagament amb targeta" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__r +msgid "Pago por Transferencia" +msgstr "Pagament per transferència" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Partial payment percent must be between 0 and 100" +msgstr "El percentatge de pagament parcial ha d’estar entre 0 i 100" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_acquirer +msgid "Payment Acquirer" +msgstr "Adquirent de pagaments" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_pay_method +msgid "Payment Method" +msgstr "Mètode de pagament" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_transaction +msgid "Payment Transaction" +msgstr "Transacció de pagament" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__011 +msgid "Polaco" +msgstr "Polac" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__009 +msgid "Portugués" +msgstr "Portuguès" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_description +msgid "Product Description" +msgstr "Descripció del producte" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__provider +msgid "Provider" +msgstr "Proveïdor" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__provider__redsys +#: model:payment.acquirer,name:payment_redsys.payment_acquirer_redsys +msgid "Redsys" +msgstr "Redsys" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_signature_version +msgid "Redsys Signature Version" +msgstr "Versió de signatura Redsys" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Redsys: feedback error %s (%s)" +msgstr "Redsys: error de retroalimentació %s (%s)" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "Reduction percent" +msgstr "Percentatge de reducció" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_secret_key +msgid "Secret Key" +msgstr "Clau secreta" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__008 +msgid "Sueco" +msgstr "Suec" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_terminal +msgid "Terminal" +msgstr "Terminal" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__redsys_txnid +msgid "Transaction ID" +msgstr "ID de transacció" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_transaction_type +msgid "Transtaction Type" +msgstr "Tipus de transacció" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__010 +msgid "Valenciano" +msgstr "Valencià" + +#. module: payment_redsys +#: model:ir.model.fields,help:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "" +"Write percent reduction payment, for this method payment.With this option " +"you can allow partial payments in your shop online, the residual amount in " +"pending for do a manual payment later." +msgstr "" +"Escriviu un percentatge de reducció de pagament per aquest mètode de " +"pagament. Amb aquesta opció podeu permetre pagaments parcials a la vostra " +"botiga en línia, l'import residual pendent de fer un pagament manual més " +"tard." + +#. module: payment_redsys +#: model_terms:payment.acquirer,pre_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"You will be redirected to the Redsys payment gateway after clicking on the " +"payment button." +msgstr "" +"Després de fer clic al botó de pagament, se us redirigirà a la passarel·la " +"de pagament de Redsys." + +#. module: payment_redsys +#: model_terms:payment.acquirer,auth_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been authorized." +msgstr "El vostre pagament s'ha autoritzat." + +#. module: payment_redsys +#: model_terms:payment.acquirer,cancel_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been cancelled." +msgstr "El vostre pagament s'ha cancel·lat." + +#. module: payment_redsys +#: model_terms:payment.acquirer,pending_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"Your payment has been successfully processed but is waiting for approval." +msgstr "" +"El vostre pagament s’ha processat correctament, però espera l’aprovació." + +#. module: payment_redsys +#: model_terms:payment.acquirer,done_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been successfully processed. Thank you!" +msgstr "El vostre pagament s'ha processat correctament. Gràcies!" + +#~ msgid "Send quotation" +#~ msgstr "Enviar pressupost" + +#~ msgid "Merchant Titular" +#~ msgstr "Titular de comerciant" + +#, fuzzy +#~ msgid "Invoicing Address" +#~ msgstr "Adreça de facturació" + +#, fuzzy +#~ msgid "Shipping Address" +#~ msgstr "Adreça d'enviament" + +#~ msgid "Back to shop" +#~ msgstr "Tornar a la botiga" + +#, fuzzy +#~ msgid "" +#~ "En error ocurred.
Please contact with us and inform you about your " +#~ "order." +#~ msgstr "" +#~ "Si us plau, poseu-vos en contacte amb nosaltres i l'informarem sobre la " +#~ "seva comanda." + +#~ msgid "Order" +#~ msgstr "Comanda" + +#~ msgid "Taxes:" +#~ msgstr "Impostos:" + +#, fuzzy +#~ msgid "Thanks for you order.
We will inform you of your order status" +#~ msgstr "T'informarem sobre l'estat de la comanda" + +#~ msgid "The payment of your order has failed" +#~ msgstr "El pagament de la teva comanda ha fallat" + +#~ msgid "Untaxed Amount:" +#~ msgstr "Import sense impostos:" + +#~ msgid "Date:" +#~ msgstr "Data:" + +#~ msgid "Discount (%)" +#~ msgstr "Descompte (%)" + +#~ msgid "En error ocurred." +#~ msgstr "S'ha produït un error." + +#~ msgid "Product" +#~ msgstr "Producte" + +#~ msgid "Quantity" +#~ msgstr "Quantitat" + +#~ msgid "Subtotal" +#~ msgstr "Subtotal" + +#~ msgid "Thanks for you order." +#~ msgstr "Gràcies per la teva comanda." + +#~ msgid "Total:" +#~ msgstr "Total:" + +#~ msgid "Unit Price" +#~ msgstr "Preu unitari" diff --git a/payment_redsys/i18n/es.po b/payment_redsys/i18n/es.po new file mode 100644 index 00000000000..80a9ff6782e --- /dev/null +++ b/payment_redsys/i18n/es.po @@ -0,0 +1,412 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * payment_redsys +# +# Translators: +# Alejandro Santana , 2015 +# Antonio Trueba, 2016 +# Antonio Trueba, 2016 +# Eric Antones , 2015-2016 +# Oihane Crucelaegui , 2015 +# Pedro M. Baeza , 2015 +msgid "" +msgstr "" +"Project-Id-Version: l10n-spain (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-26 16:03+0000\n" +"PO-Revision-Date: 2020-07-27 09:19+0000\n" +"Last-Translator: Daniel Martinez Vila \n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-l10n-spain-8-0/" +"language/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__005 +msgid "Alemán" +msgstr "Alemán" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Bank Error: %s (%s)" +msgstr "Error del banco: %s (%s)" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__z +msgid "Bizum" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__001 +msgid "Castellano" +msgstr "Castellano" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__003 +msgid "Catalán" +msgstr "Catalán" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_currency +msgid "Currency" +msgstr "Moneda" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__display_name +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__display_name +msgid "Display Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__d +msgid "Domiciliacion" +msgstr "Domiciliación" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Error: %s (%s)" +msgstr "Error: %s (%s)" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__013 +msgid "Euskera" +msgstr "Euskera" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__004 +msgid "Francés" +msgstr "Francés" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__012 +msgid "Gallego" +msgstr "Gallego" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_signature_version__hmac_sha256_v1 +msgid "HMAC SHA256 V1" +msgstr "HMAC SHA256 V1" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__006 +msgid "Holandés" +msgstr "Holandés" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__id +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__id +msgid "ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__002 +msgid "Inglés" +msgstr "Inglés" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__007 +msgid "Italiano" +msgstr "Italiano" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer____last_update +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction____last_update +msgid "Last Modified on" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_lang +msgid "Merchant Consumer Language" +msgstr "Idioma del consumidor del comerciante" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_data +msgid "Merchant Data" +msgstr "Datos del comerciante" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_name +msgid "Merchant Name" +msgstr "Nombre del comerciante" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_code +msgid "Merchant code" +msgstr "Código de comerciante" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Ok: %s" +msgstr "Ok: %s" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__t +msgid "Pago con Tarjeta" +msgstr "Pago con Tarjeta" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__r +msgid "Pago por Transferencia" +msgstr "Pago por Transferencia" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Partial payment percent must be between 0 and 100" +msgstr "El porcentaje de pago parcial debe estar entre 0 y 100" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_acquirer +msgid "Payment Acquirer" +msgstr "Proceso de pago" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_pay_method +msgid "Payment Method" +msgstr "Método de pago" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_transaction +msgid "Payment Transaction" +msgstr "Transacción de pago" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__011 +msgid "Polaco" +msgstr "Polaco" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__009 +msgid "Portugués" +msgstr "Portugués" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_description +msgid "Product Description" +msgstr "Descripción del producto" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__provider +msgid "Provider" +msgstr "Proveedor" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__provider__redsys +#: model:payment.acquirer,name:payment_redsys.payment_acquirer_redsys +msgid "Redsys" +msgstr "Redsys" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_signature_version +msgid "Redsys Signature Version" +msgstr "Versión de Redsys de la firma" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Redsys: feedback error %s (%s)" +msgstr "Redsys: feedback error %s (%s)" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "Reduction percent" +msgstr "Porcentaje de reducción" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_secret_key +msgid "Secret Key" +msgstr "Clave secreta" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__008 +msgid "Sueco" +msgstr "Sueco" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_terminal +msgid "Terminal" +msgstr "Terminal" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__redsys_txnid +msgid "Transaction ID" +msgstr "ID de la transacción" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_transaction_type +msgid "Transtaction Type" +msgstr "Tipo de transacción" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__010 +msgid "Valenciano" +msgstr "Valenciano" + +#. module: payment_redsys +#: model:ir.model.fields,help:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "" +"Write percent reduction payment, for this method payment.With this option " +"you can allow partial payments in your shop online, the residual amount in " +"pending for do a manual payment later." +msgstr "" +"Escriba el porcentaje que se reducirá en el pago para este método de pago. " +"Con esta opción puede permitir pagos parciales en su tienda online, la " +"cantidad restante quedará pendiente para realizar un pago manual más tarde." + +#. module: payment_redsys +#: model_terms:payment.acquirer,pre_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"You will be redirected to the Redsys payment gateway after clicking on the " +"payment button." +msgstr "" +"Después de hacer clic en el botón de pago será redirigido a la pasarela de " +"pago de Redsys." + +#. module: payment_redsys +#: model_terms:payment.acquirer,auth_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been authorized." +msgstr "Su pago ha sido autorizado." + +#. module: payment_redsys +#: model_terms:payment.acquirer,cancel_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been cancelled." +msgstr "Tu pago ha sido cancelado." + +#. module: payment_redsys +#: model_terms:payment.acquirer,pending_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"Your payment has been successfully processed but is waiting for approval." +msgstr "Su pago ha sido procesado con éxito pero está esperando su aprobación." + +#. module: payment_redsys +#: model_terms:payment.acquirer,done_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been successfully processed. Thank you!" +msgstr "Su pago ha sido realizado correctamente. Gracias!" + +#~ msgid "Send quotation" +#~ msgstr "Enviar presupuesto" + +#~ msgid "Merchant Titular" +#~ msgstr "Titular del comerciante" + +#~ msgid "" +#~ "Error, Please be aware that an error occurred during the " +#~ "transaction. The order has been confirmed but will not be paid. Do not " +#~ "hesitate to contact us if you have any questions on the status of your " +#~ "order." +#~ msgstr "" +#~ "Error, Tenga en cuenta que se produjo un error durante la " +#~ "transacción. El pedido ha sido confirmado pero no ha sido pagado. No dude " +#~ "en contactarnos si tiene alguna pregunta sobre el estado de su pedido." + +#~ msgid "" +#~ "Pending, Your online payment has been successfully " +#~ "processed. But your order is not validated yet." +#~ msgstr "" +#~ "Pendiente, Su pago en línea ha sido procesado con éxito. " +#~ "Pero tu pedido aún no está validado." + +#~ msgid "Manual Configuration" +#~ msgstr "Configuración manual" + +#~ msgid "Wire Transfer" +#~ msgstr "Transferencia bancaria" + +#~ msgid " Order" +#~ msgstr " Pedido" + +#~ msgid "Date:" +#~ msgstr "Fecha:" + +#~ msgid "Discount (%)" +#~ msgstr "Descuento (%)" + +#~ msgid "Invoicing Address" +#~ msgstr "Dirección de facturación" + +#~ msgid "Product" +#~ msgstr "Producto" + +#~ msgid "Quantity" +#~ msgstr "Cantidad" + +#~ msgid "Shipping Address" +#~ msgstr "Dirección de envío" + +#~ msgid "Subtotal" +#~ msgstr "Sub Total" + +#~ msgid "Total:" +#~ msgstr "Total :" + +#~ msgid "Unit Price" +#~ msgstr "Precio unidad" + +#~ msgid "Back to shop" +#~ msgstr "Volver a la tienda" + +#~ msgid "" +#~ "En error ocurred.
Please contact with us and inform you about your " +#~ "order." +#~ msgstr "" +#~ "Ha ocurrido un error.
Por favor, póngase en contacto con nosotros y " +#~ "le informarémos sobre su pedido." + +#~ msgid "Order" +#~ msgstr "Pedido" + +#~ msgid "Taxes:" +#~ msgstr "Impuestos:" + +#~ msgid "Thanks for you order.
We will inform you of your order status" +#~ msgstr "Gracias por tu pedido.
Te informaremos del estado de tu pedido" + +#~ msgid "The payment of your order has failed" +#~ msgstr "El pago de su pedido ha fallado" + +#~ msgid "Untaxed Amount:" +#~ msgstr "Importe sin impuestos:" + +#~ msgid "Your order has been paid correctly" +#~ msgstr "Su pedido ha sido pagado correctamente" + +#~ msgid "Date:" +#~ msgstr "Fecha:" + +#~ msgid "Discount (%)" +#~ msgstr "Descuento (%)" + +#~ msgid "En error ocurred." +#~ msgstr "Ha ocurrido un error" + +#~ msgid "Merchant URL" +#~ msgstr "URL del comerciante" + +#~ msgid "Product" +#~ msgstr "Producto" + +#~ msgid "Quantity" +#~ msgstr "Cantidad" + +#~ msgid "Redsys TX Details" +#~ msgstr "Detalles de transmisión Redsys" + +#~ msgid "Subtotal" +#~ msgstr "Subtotal" + +#~ msgid "Thanks for you order." +#~ msgstr "¡Gracias por su pedido!" + +#~ msgid "Total:" +#~ msgstr "Total:" + +#~ msgid "Unit Price" +#~ msgstr "Precio unidad" diff --git a/payment_redsys/i18n/fr.po b/payment_redsys/i18n/fr.po new file mode 100644 index 00000000000..3649ee66b91 --- /dev/null +++ b/payment_redsys/i18n/fr.po @@ -0,0 +1,347 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * payment_redsys +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: l10n-spain (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-13 10:45+0000\n" +"PO-Revision-Date: 2016-11-18 14:15+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: French (http://www.transifex.com/oca/OCA-l10n-spain-8-0/" +"language/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__005 +msgid "Alemán" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Bank Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__z +msgid "Bizum" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__001 +msgid "Castellano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__003 +msgid "Catalán" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_currency +msgid "Currency" +msgstr "Devise" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__display_name +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__display_name +msgid "Display Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__d +msgid "Domiciliacion" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__013 +msgid "Euskera" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__004 +msgid "Francés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__012 +msgid "Gallego" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_signature_version__hmac_sha256_v1 +msgid "HMAC SHA256 V1" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__006 +msgid "Holandés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__id +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__id +msgid "ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__002 +msgid "Inglés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__007 +msgid "Italiano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer____last_update +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction____last_update +msgid "Last Modified on" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_lang +msgid "Merchant Consumer Language" +msgstr "Merchant consommateurs Langue" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_data +msgid "Merchant Data" +msgstr "Data Merchant" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_name +msgid "Merchant Name" +msgstr "Nom du commerçant" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_code +msgid "Merchant code" +msgstr "Code Merchant" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Ok: %s" +msgstr "Ok: %s" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__t +msgid "Pago con Tarjeta" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__r +msgid "Pago por Transferencia" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Partial payment percent must be between 0 and 100" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_acquirer +msgid "Payment Acquirer" +msgstr "Paiement acquéreur" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_pay_method +msgid "Payment Method" +msgstr "Mode de paiement" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_transaction +msgid "Payment Transaction" +msgstr "Opération de paiement" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__011 +msgid "Polaco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__009 +msgid "Portugués" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_description +msgid "Product Description" +msgstr "Description du produit" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__provider +msgid "Provider" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__provider__redsys +#: model:payment.acquirer,name:payment_redsys.payment_acquirer_redsys +msgid "Redsys" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_signature_version +#, fuzzy +msgid "Redsys Signature Version" +msgstr "La version de la signature Redsys" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Redsys: feedback error %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "Reduction percent" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_secret_key +msgid "Secret Key" +msgstr "Clef secréte" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__008 +msgid "Sueco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_terminal +msgid "Terminal" +msgstr "Terminal" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__redsys_txnid +msgid "Transaction ID" +msgstr "Identifiant de transaction" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_transaction_type +msgid "Transtaction Type" +msgstr "Type de Transtaction" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__010 +msgid "Valenciano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,help:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "" +"Write percent reduction payment, for this method payment.With this option " +"you can allow partial payments in your shop online, the residual amount in " +"pending for do a manual payment later." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pre_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"You will be redirected to the Redsys payment gateway after clicking on the " +"payment button." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,auth_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been authorized." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,cancel_msg:payment_redsys.payment_acquirer_redsys +#, fuzzy +msgid "Your payment has been cancelled." +msgstr "Votre commande a été payée correctement" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pending_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"Your payment has been successfully processed but is waiting for approval." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,done_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been successfully processed. Thank you!" +msgstr "" + +#~ msgid "Send quotation" +#~ msgstr "Envoyer cotation" + +#~ msgid "Merchant Titular" +#~ msgstr "Merchant titulaire" + +#, fuzzy +#~ msgid "Invoicing Address" +#~ msgstr "Adresse de facturation" + +#, fuzzy +#~ msgid "Shipping Address" +#~ msgstr "Adresse de livraison" + +#~ msgid "Back to shop" +#~ msgstr "Retour à la boutique" + +#, fuzzy +#~ msgid "" +#~ "En error ocurred.
Please contact with us and inform you about your " +#~ "order." +#~ msgstr "S'il vous plaît nous contacter et vous informer sur votre commande." + +#~ msgid "Order" +#~ msgstr "Commande" + +#~ msgid "Taxes:" +#~ msgstr "impôts:" + +#, fuzzy +#~ msgid "Thanks for you order.
We will inform you of your order status" +#~ msgstr "Nous allons vous informer de votre statut de la commande" + +#~ msgid "The payment of your order has failed" +#~ msgstr "Le paiement de votre commande a échoué" + +#~ msgid "Untaxed Amount:" +#~ msgstr "Montant non taxé:" + +#~ msgid "En error ocurred." +#~ msgstr "En ocurred erreur." + +#~ msgid "Merchant URL" +#~ msgstr "Merchant URL" + +#~ msgid "Product" +#~ msgstr "Produit" + +#~ msgid "Quantity" +#~ msgstr "Quantité" + +#~ msgid "Redsys TX Details" +#~ msgstr "Redsys TX Détails" + +#~ msgid "Subtotal" +#~ msgstr "Subtotal" + +#~ msgid "Thanks for you order." +#~ msgstr "Merci pour votre commande." + +#~ msgid "Total:" +#~ msgstr "Total:" + +#~ msgid "Unit Price" +#~ msgstr "Prix unitaire" diff --git a/payment_redsys/i18n/gl.po b/payment_redsys/i18n/gl.po new file mode 100644 index 00000000000..e2413344930 --- /dev/null +++ b/payment_redsys/i18n/gl.po @@ -0,0 +1,289 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * payment_redsys +# +# Translators: +# Alejandro Santana , 2015 +msgid "" +msgstr "" +"Project-Id-Version: l10n-spain (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-26 16:03+0000\n" +"PO-Revision-Date: 2016-08-21 12:03+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Galician (http://www.transifex.com/oca/OCA-l10n-spain-8-0/" +"language/gl/)\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__005 +msgid "Alemán" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Bank Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__z +msgid "Bizum" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__001 +msgid "Castellano" +msgstr "Castelán" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__003 +msgid "Catalán" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_currency +msgid "Currency" +msgstr "Moeda" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__display_name +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__display_name +msgid "Display Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__d +msgid "Domiciliacion" +msgstr "Domiciliación" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__013 +msgid "Euskera" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__004 +msgid "Francés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__012 +msgid "Gallego" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_signature_version__hmac_sha256_v1 +msgid "HMAC SHA256 V1" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__006 +msgid "Holandés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__id +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__id +msgid "ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__002 +msgid "Inglés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__007 +msgid "Italiano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer____last_update +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction____last_update +msgid "Last Modified on" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_lang +msgid "Merchant Consumer Language" +msgstr "Linguaxe do comerciante" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_data +msgid "Merchant Data" +msgstr "Datos do comerciante" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_name +msgid "Merchant Name" +msgstr "Nome do comerciante" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_code +msgid "Merchant code" +msgstr "Código do comerciante" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Ok: %s" +msgstr "OK: %s" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__t +msgid "Pago con Tarjeta" +msgstr "Pagamento con tarxeta" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__r +msgid "Pago por Transferencia" +msgstr "Pagamento por transferencia" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Partial payment percent must be between 0 and 100" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_acquirer +msgid "Payment Acquirer" +msgstr "Medio de pagamento" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_pay_method +msgid "Payment Method" +msgstr "Método de pagamento" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_transaction +msgid "Payment Transaction" +msgstr "Transación de pagamento" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__011 +msgid "Polaco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__009 +msgid "Portugués" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_description +msgid "Product Description" +msgstr "Descrición do produto" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__provider +msgid "Provider" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__provider__redsys +#: model:payment.acquirer,name:payment_redsys.payment_acquirer_redsys +msgid "Redsys" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_signature_version +msgid "Redsys Signature Version" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Redsys: feedback error %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "Reduction percent" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_secret_key +msgid "Secret Key" +msgstr "Chave secreta" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__008 +msgid "Sueco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_terminal +msgid "Terminal" +msgstr "Terminal" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__redsys_txnid +msgid "Transaction ID" +msgstr "ID da transacción" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_transaction_type +msgid "Transtaction Type" +msgstr "Tipo de transacción" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__010 +msgid "Valenciano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,help:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "" +"Write percent reduction payment, for this method payment.With this option " +"you can allow partial payments in your shop online, the residual amount in " +"pending for do a manual payment later." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pre_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"You will be redirected to the Redsys payment gateway after clicking on the " +"payment button." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,auth_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been authorized." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,cancel_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been cancelled." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pending_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"Your payment has been successfully processed but is waiting for approval." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,done_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been successfully processed. Thank you!" +msgstr "" + +#~ msgid "Merchant Titular" +#~ msgstr "Comerciante titular" + +#~ msgid "Merchant URL" +#~ msgstr "URL do comerciante" + +#~ msgid "Redsys TX Details" +#~ msgstr "Detalles Redsys TX" diff --git a/payment_redsys/i18n/hr.po b/payment_redsys/i18n/hr.po new file mode 100644 index 00000000000..8e070db2cd2 --- /dev/null +++ b/payment_redsys/i18n/hr.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * payment_redsys +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: l10n-spain (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-09-17 19:27+0000\n" +"PO-Revision-Date: 2016-10-05 06:35+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Croatian (http://www.transifex.com/oca/OCA-l10n-spain-8-0/" +"language/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__005 +msgid "Alemán" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Bank Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__z +msgid "Bizum" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__001 +msgid "Castellano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__003 +msgid "Catalán" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_currency +msgid "Currency" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__display_name +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__display_name +msgid "Display Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__d +msgid "Domiciliacion" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__013 +msgid "Euskera" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__004 +msgid "Francés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__012 +msgid "Gallego" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_signature_version__hmac_sha256_v1 +msgid "HMAC SHA256 V1" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__006 +msgid "Holandés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__id +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__id +msgid "ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__002 +msgid "Inglés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__007 +msgid "Italiano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer____last_update +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction____last_update +msgid "Last Modified on" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_lang +msgid "Merchant Consumer Language" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_data +msgid "Merchant Data" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_name +msgid "Merchant Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_code +msgid "Merchant code" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Ok: %s" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__t +msgid "Pago con Tarjeta" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__r +msgid "Pago por Transferencia" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Partial payment percent must be between 0 and 100" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_acquirer +msgid "Payment Acquirer" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_pay_method +msgid "Payment Method" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_transaction +msgid "Payment Transaction" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__011 +msgid "Polaco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__009 +msgid "Portugués" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_description +msgid "Product Description" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__provider +msgid "Provider" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__provider__redsys +#: model:payment.acquirer,name:payment_redsys.payment_acquirer_redsys +msgid "Redsys" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_signature_version +msgid "Redsys Signature Version" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Redsys: feedback error %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "Reduction percent" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_secret_key +msgid "Secret Key" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__008 +msgid "Sueco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_terminal +msgid "Terminal" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__redsys_txnid +msgid "Transaction ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_transaction_type +msgid "Transtaction Type" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__010 +msgid "Valenciano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,help:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "" +"Write percent reduction payment, for this method payment.With this option " +"you can allow partial payments in your shop online, the residual amount in " +"pending for do a manual payment later." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pre_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"You will be redirected to the Redsys payment gateway after clicking on the " +"payment button." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,auth_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been authorized." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,cancel_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been cancelled." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pending_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"Your payment has been successfully processed but is waiting for approval." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,done_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been successfully processed. Thank you!" +msgstr "" + +#~ msgid "Product" +#~ msgstr "Proizvod" diff --git a/payment_redsys/i18n/payment_redsys.pot b/payment_redsys/i18n/payment_redsys.pot new file mode 100644 index 00000000000..43c2e2bdebf --- /dev/null +++ b/payment_redsys/i18n/payment_redsys.pot @@ -0,0 +1,274 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * payment_redsys +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__005 +msgid "Alemán" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Bank Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__z +msgid "Bizum" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__001 +msgid "Castellano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__003 +msgid "Catalán" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_currency +msgid "Currency" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__display_name +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__display_name +msgid "Display Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__d +msgid "Domiciliacion" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__013 +msgid "Euskera" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__004 +msgid "Francés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__012 +msgid "Gallego" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_signature_version__hmac_sha256_v1 +msgid "HMAC SHA256 V1" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__006 +msgid "Holandés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__id +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__id +msgid "ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__002 +msgid "Inglés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__007 +msgid "Italiano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer____last_update +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction____last_update +msgid "Last Modified on" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_lang +msgid "Merchant Consumer Language" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_data +msgid "Merchant Data" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_name +msgid "Merchant Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_code +msgid "Merchant code" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Ok: %s" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__t +msgid "Pago con Tarjeta" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__r +msgid "Pago por Transferencia" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Partial payment percent must be between 0 and 100" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_acquirer +msgid "Payment Acquirer" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_pay_method +msgid "Payment Method" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_transaction +msgid "Payment Transaction" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__011 +msgid "Polaco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__009 +msgid "Portugués" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_description +msgid "Product Description" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__provider +msgid "Provider" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__provider__redsys +#: model:payment.acquirer,name:payment_redsys.payment_acquirer_redsys +msgid "Redsys" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_signature_version +msgid "Redsys Signature Version" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Redsys: feedback error %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "Reduction percent" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_secret_key +msgid "Secret Key" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__008 +msgid "Sueco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_terminal +msgid "Terminal" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__redsys_txnid +msgid "Transaction ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_transaction_type +msgid "Transtaction Type" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__010 +msgid "Valenciano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,help:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "" +"Write percent reduction payment, for this method payment.With this option " +"you can allow partial payments in your shop online, the residual amount in " +"pending for do a manual payment later." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pre_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"You will be redirected to the Redsys payment gateway after clicking on the " +"payment button." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,auth_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been authorized." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,cancel_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been cancelled." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pending_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"Your payment has been successfully processed but is waiting for approval." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,done_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been successfully processed. Thank you!" +msgstr "" diff --git a/payment_redsys/i18n/pt_BR.po b/payment_redsys/i18n/pt_BR.po new file mode 100644 index 00000000000..1fef352b9b7 --- /dev/null +++ b/payment_redsys/i18n/pt_BR.po @@ -0,0 +1,291 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * payment_redsys +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: l10n-spain (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-13 10:45+0000\n" +"PO-Revision-Date: 2016-10-14 10:32+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-l10n-" +"spain-8-0/language/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__005 +msgid "Alemán" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Bank Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__z +msgid "Bizum" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__001 +msgid "Castellano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__003 +msgid "Catalán" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_currency +msgid "Currency" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__display_name +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__display_name +msgid "Display Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__d +msgid "Domiciliacion" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__013 +msgid "Euskera" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__004 +msgid "Francés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__012 +msgid "Gallego" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_signature_version__hmac_sha256_v1 +msgid "HMAC SHA256 V1" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__006 +msgid "Holandés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__id +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__id +msgid "ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__002 +msgid "Inglés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__007 +msgid "Italiano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer____last_update +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction____last_update +msgid "Last Modified on" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_lang +msgid "Merchant Consumer Language" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_data +msgid "Merchant Data" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_name +msgid "Merchant Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_code +msgid "Merchant code" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Ok: %s" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__t +msgid "Pago con Tarjeta" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__r +msgid "Pago por Transferencia" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Partial payment percent must be between 0 and 100" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_acquirer +msgid "Payment Acquirer" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_pay_method +msgid "Payment Method" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_transaction +msgid "Payment Transaction" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__011 +msgid "Polaco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__009 +msgid "Portugués" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_description +msgid "Product Description" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__provider +msgid "Provider" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__provider__redsys +#: model:payment.acquirer,name:payment_redsys.payment_acquirer_redsys +msgid "Redsys" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_signature_version +msgid "Redsys Signature Version" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Redsys: feedback error %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "Reduction percent" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_secret_key +msgid "Secret Key" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__008 +msgid "Sueco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_terminal +msgid "Terminal" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__redsys_txnid +msgid "Transaction ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_transaction_type +msgid "Transtaction Type" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__010 +msgid "Valenciano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,help:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "" +"Write percent reduction payment, for this method payment.With this option " +"you can allow partial payments in your shop online, the residual amount in " +"pending for do a manual payment later." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pre_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"You will be redirected to the Redsys payment gateway after clicking on the " +"payment button." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,auth_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been authorized." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,cancel_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been cancelled." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pending_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"Your payment has been successfully processed but is waiting for approval." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,done_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been successfully processed. Thank you!" +msgstr "" + +#~ msgid "Order" +#~ msgstr "Pedido" + +#~ msgid "Taxes:" +#~ msgstr "Impostos:" + +#~ msgid "Untaxed Amount:" +#~ msgstr "Total sem impostos:" + +#~ msgid "Product" +#~ msgstr "Produto" diff --git a/payment_redsys/i18n/sl.po b/payment_redsys/i18n/sl.po new file mode 100644 index 00000000000..e42e929b281 --- /dev/null +++ b/payment_redsys/i18n/sl.po @@ -0,0 +1,292 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * payment_redsys +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: l10n-spain (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-27 18:55+0000\n" +"PO-Revision-Date: 2016-09-09 11:33+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-l10n-spain-8-0/" +"language/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__005 +msgid "Alemán" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Bank Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__z +msgid "Bizum" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__001 +msgid "Castellano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__003 +msgid "Catalán" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_currency +msgid "Currency" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__display_name +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__display_name +msgid "Display Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__d +msgid "Domiciliacion" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Error: %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__013 +msgid "Euskera" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__004 +msgid "Francés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__012 +msgid "Gallego" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_signature_version__hmac_sha256_v1 +msgid "HMAC SHA256 V1" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__006 +msgid "Holandés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__id +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__id +msgid "ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__002 +msgid "Inglés" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__007 +msgid "Italiano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer____last_update +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction____last_update +msgid "Last Modified on" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_lang +msgid "Merchant Consumer Language" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_data +msgid "Merchant Data" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_name +msgid "Merchant Name" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_code +msgid "Merchant code" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Ok: %s" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__t +msgid "Pago con Tarjeta" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_pay_method__r +msgid "Pago por Transferencia" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Partial payment percent must be between 0 and 100" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_acquirer +msgid "Payment Acquirer" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_pay_method +msgid "Payment Method" +msgstr "" + +#. module: payment_redsys +#: model:ir.model,name:payment_redsys.model_payment_transaction +msgid "Payment Transaction" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__011 +msgid "Polaco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__009 +msgid "Portugués" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_merchant_description +msgid "Product Description" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__provider +msgid "Provider" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__provider__redsys +#: model:payment.acquirer,name:payment_redsys.payment_acquirer_redsys +msgid "Redsys" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_signature_version +msgid "Redsys Signature Version" +msgstr "" + +#. module: payment_redsys +#: code:addons/payment_redsys/models/redsys.py:0 +#, python-format +msgid "Redsys: feedback error %s (%s)" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "Reduction percent" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_secret_key +msgid "Secret Key" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__008 +msgid "Sueco" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_terminal +msgid "Terminal" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_transaction__redsys_txnid +msgid "Transaction ID" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,field_description:payment_redsys.field_payment_acquirer__redsys_transaction_type +msgid "Transtaction Type" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields.selection,name:payment_redsys.selection__payment_acquirer__redsys_merchant_lang__010 +msgid "Valenciano" +msgstr "" + +#. module: payment_redsys +#: model:ir.model.fields,help:payment_redsys.field_payment_acquirer__redsys_percent_partial +msgid "" +"Write percent reduction payment, for this method payment.With this option " +"you can allow partial payments in your shop online, the residual amount in " +"pending for do a manual payment later." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pre_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"You will be redirected to the Redsys payment gateway after clicking on the " +"payment button." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,auth_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been authorized." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,cancel_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been cancelled." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,pending_msg:payment_redsys.payment_acquirer_redsys +msgid "" +"Your payment has been successfully processed but is waiting for approval." +msgstr "" + +#. module: payment_redsys +#: model_terms:payment.acquirer,done_msg:payment_redsys.payment_acquirer_redsys +msgid "Your payment has been successfully processed. Thank you!" +msgstr "" + +#~ msgid "Order" +#~ msgstr "Nalog" + +#~ msgid "Taxes:" +#~ msgstr "Davki:" + +#~ msgid "Untaxed Amount:" +#~ msgstr "Neobdavčeni znesek" + +#~ msgid "Product" +#~ msgstr "Proizvod" diff --git a/payment_redsys/models/__init__.py b/payment_redsys/models/__init__.py new file mode 100644 index 00000000000..e8b59de0eac --- /dev/null +++ b/payment_redsys/models/__init__.py @@ -0,0 +1,3 @@ +from . import account_payment_method +from . import payment_acquirer +from . import payment_transaction diff --git a/payment_redsys/models/account_payment_method.py b/payment_redsys/models/account_payment_method.py new file mode 100644 index 00000000000..5548145c5f9 --- /dev/null +++ b/payment_redsys/models/account_payment_method.py @@ -0,0 +1,14 @@ +# Copyright 2023 Planesnet - Luis Planes, Laia Espinosa, Raul Solana +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class AccountPaymentMethod(models.Model): + _inherit = "account.payment.method" + + @api.model + def _get_payment_method_information(self): + res = super()._get_payment_method_information() + res["redsys"] = {"mode": "multi", "domain": [("type", "=", "bank")]} + return res diff --git a/payment_redsys/models/payment_acquirer.py b/payment_redsys/models/payment_acquirer.py new file mode 100644 index 00000000000..9c3ca2a066d --- /dev/null +++ b/payment_redsys/models/payment_acquirer.py @@ -0,0 +1,201 @@ +# Copyright 2016-2017 Tecnativa - Sergio Teruel +# Copyright 2019 Ignacio Ibeas +# Copyright 2020 Tecnativa - João Marques +# Copyright 2023 Planesnet - Luis Planes, Laia Espinosa, Raul Solana +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import base64 +import hashlib +import hmac +import json +import logging +import urllib + +from Crypto.Cipher import DES3 # pylint: disable=W7936 - No real warning +from werkzeug import urls + +from odoo import api, fields, http, models +from odoo.tools import config + +_logger = logging.getLogger(__name__) + + +class AcquirerRedsys(models.Model): + _inherit = "payment.acquirer" + + def _redsys_get_api_url(self): + if self.state == "enabled": + return "https://sis.redsys.es/sis/realizarPago/" + else: # test environment + return "https://sis-t.redsys.es:25443/sis/realizarPago/" + + provider = fields.Selection( + selection_add=[("redsys", "Redsys")], ondelete={"redsys": "set default"} + ) + redsys_merchant_name = fields.Char("Merchant Name", required_if_provider="redsys") + redsys_merchant_code = fields.Char("Merchant code", required_if_provider="redsys") + redsys_merchant_description = fields.Char( + "Product Description", required_if_provider="redsys" + ) + redsys_secret_key = fields.Char("Secret Key", required_if_provider="redsys") + redsys_terminal = fields.Char( + "Terminal", default="1", required_if_provider="redsys" + ) + redsys_currency = fields.Char( + "Currency", default="978", required_if_provider="redsys" + ) + redsys_transaction_type = fields.Char( + "Transtaction Type", default="0", required_if_provider="redsys" + ) + redsys_merchant_data = fields.Char("Merchant Data") + redsys_merchant_lang = fields.Selection( + [ + ("001", "Castellano"), + ("002", "Inglés"), + ("003", "Catalán"), + ("004", "Francés"), + ("005", "Alemán"), + ("006", "Holandés"), + ("007", "Italiano"), + ("008", "Sueco"), + ("009", "Portugués"), + ("010", "Valenciano"), + ("011", "Polaco"), + ("012", "Gallego"), + ("013", "Euskera"), + ], + "Merchant Consumer Language", + default="001", + ) + redsys_pay_method = fields.Selection( + [ + ("T", "Pago con Tarjeta"), + ("R", "Pago por Transferencia"), + ("D", "Domiciliacion"), + ("z", "Bizum"), + ], + "Payment Method", + default="T", + ) + redsys_signature_version = fields.Selection( + [("HMAC_SHA256_V1", "HMAC SHA256 V1")], default="HMAC_SHA256_V1" + ) + + @api.model + def _get_website_callback_url(self): + """For force a callback url from Redsys distinct to base url website, + only apply to a Redsys response. + """ + get_param = self.env["ir.config_parameter"].sudo().get_param + return get_param("payment_redsys.callback_url") + + @api.model + def _get_website_url(self): + """ + For a single website setting the domain website name is not accesible + for the user, by default is localhost so the system get domain from + system parameters instead of domain of website record. + """ + if config["test_enable"]: + return self.env["ir.config_parameter"].sudo().get_param("web.base.url") + # For a JSON request, there's no `website` attribute. Fallback to context if any + website = ( + hasattr(http.request, "website") + and http.request.website + or self.env.context.get("website_id") + and self.env["website"].browse(self.env.context["website_id"]) + ) + domain = website and website.domain or "" + if domain and domain != "localhost": + # Check domain scheme as Odoo does in `website._get_http_domain()` + parsed_url = urls.url_parse(domain) + base_url = ( + "{}://{}".format( + http.request.httprequest.environ["wsgi.url_scheme"], domain + ) + if not parsed_url.scheme + else domain + ) + else: + base_url = self.env["ir.config_parameter"].sudo().get_param("web.base.url") + return base_url or "" + + def _prepare_merchant_parameters(self, tx_values): + # Check multi-website + base_url = self._get_website_url() + callback_url = self._get_website_callback_url() + values = { + "Ds_Sermepa_Url": self.redsys_get_form_action_url(), + "Ds_Merchant_Amount": str(int(round(tx_values["amount"] * 100))), + "Ds_Merchant_Currency": self.redsys_currency or "978", + "Ds_Merchant_Order": ( + tx_values["reference"] and tx_values["reference"][-12:] or False + ), + "Ds_Merchant_MerchantCode": ( + self.redsys_merchant_code and self.redsys_merchant_code[:9] + ), + "Ds_Merchant_Terminal": self.redsys_terminal or "1", + "Ds_Merchant_TransactionType": (self.redsys_transaction_type or "0"), + "Ds_Merchant_Titular": tx_values.get( + "billing_partner", self.env.user.partner_id + ).display_name[:60], + "Ds_Merchant_MerchantName": ( + self.redsys_merchant_name and self.redsys_merchant_name[:25] + ), + "Ds_Merchant_MerchantUrl": ( + "%s/payment/redsys/return" % (callback_url or base_url) + )[:250], + "Ds_Merchant_MerchantData": self.redsys_merchant_data or "", + "Ds_Merchant_ProductDescription": ( + self._product_description(tx_values["reference"]) + or self.redsys_merchant_description + and self.redsys_merchant_description[:125] + ), + "Ds_Merchant_ConsumerLanguage": (self.redsys_merchant_lang or "001"), + "Ds_Merchant_UrlOk": "%s/payment/redsys/result/redsys_result_ok" % base_url, + "Ds_Merchant_UrlKo": "%s/payment/redsys/result/redsys_result_ko" % base_url, + "Ds_Merchant_Paymethods": self.redsys_pay_method or "T", + } + return self._url_encode64(json.dumps(values)).decode("utf-8") + + def _url_encode64(self, data): + data = base64.b64encode(data.encode()) + return data + + def _url_decode64(self, data): + return json.loads(base64.b64decode(data).decode()) + + def sign_parameters(self, secret_key, params64): + params_dic = self._url_decode64(params64) + if "Ds_Merchant_Order" in params_dic: + order = str(params_dic["Ds_Merchant_Order"]) + else: + order = str(urllib.parse.unquote(params_dic.get("Ds_Order", "Not found"))) + cipher = DES3.new( + key=base64.b64decode(secret_key), mode=DES3.MODE_CBC, IV=b"\0\0\0\0\0\0\0\0" + ) + diff_block = len(order) % 8 + zeros = diff_block and (b"\0" * (8 - diff_block)) or b"" + key = cipher.encrypt(str.encode(order + zeros.decode())) + if isinstance(params64, str): + params64 = params64.encode() + dig = hmac.new(key=key, msg=params64, digestmod=hashlib.sha256).digest() + return base64.b64encode(dig).decode() + + def redsys_get_form_action_url(self): + self.ensure_one() + return self._redsys_get_api_url() + + def _product_description(self, order_ref): + sale_order = self.env["sale.order"].search([("name", "=", order_ref)]) + res = "" + if sale_order: + description = "|".join(x.name for x in sale_order.order_line) + res = description[:125] + return res + + def _get_default_payment_method_id(self): + self.ensure_one() + if self.provider != "redsys": + return super()._get_default_payment_method_id() + return self.env.ref("payment_redsys.payment_method_redsys").id diff --git a/payment_redsys/models/payment_transaction.py b/payment_redsys/models/payment_transaction.py new file mode 100644 index 00000000000..83cc792c67f --- /dev/null +++ b/payment_redsys/models/payment_transaction.py @@ -0,0 +1,153 @@ +# Copyright 2016-2017 Tecnativa - Sergio Teruel +# Copyright 2019 Ignacio Ibeas +# Copyright 2020 Tecnativa - João Marques +# Copyright 2023 Planesnet - Luis Planes, Laia Espinosa, Raul Solana +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import base64 +import json +import logging +import urllib + +from odoo import _, api, fields, http, models +from odoo.tools import config + +from odoo.addons.payment.models.payment_acquirer import ValidationError + +_logger = logging.getLogger(__name__) + + +class TxRedsys(models.Model): + _inherit = "payment.transaction" + + redsys_txnid = fields.Char("Transaction ID") + + def merchant_params_json2dict(self, data): + parameters = data.get("Ds_MerchantParameters", "") + return json.loads(base64.b64decode(parameters).decode()) + + # -------------------------------------------------- + # FORM RELATED METHODS + # -------------------------------------------------- + + @api.model + def _get_tx_from_feedback_data(self, provider, data): + """Given a data dict coming from redsys, verify it and + find the related transaction record.""" + tx = super()._get_tx_from_feedback_data(provider, data) + if provider != "redsys": + return tx + + parameters = data.get("Ds_MerchantParameters", "") + parameters_dic = json.loads(base64.b64decode(parameters).decode()) + reference = urllib.parse.unquote(parameters_dic.get("Ds_Order", "")) + pay_id = parameters_dic.get("Ds_AuthorisationCode") + shasign = data.get("Ds_Signature", "").replace("_", "/").replace("-", "+") + test_env = config["test_enable"] + if not reference or not pay_id or not shasign: + error_msg = ( + "Redsys: received data with missing reference" + " (%s) or pay_id (%s) or shashign (%s)" % (reference, pay_id, shasign) + ) + if not test_env: + _logger.info(error_msg) + raise ValidationError(error_msg) + # For tests + http.OpenERPSession.tx_error = True + tx = self.search([("reference", "=", reference)]) + if not tx or len(tx) > 1: + error_msg = "Redsys: received data for reference %s" % (reference) + if not tx: + error_msg += "; no order found" + else: + error_msg += "; multiple order found" + _logger.info(error_msg) + raise ValidationError(error_msg) + if tx and not test_env: + # verify shasign + shasign_check = tx.acquirer_id.sign_parameters( + tx.acquirer_id.redsys_secret_key, parameters + ) + if shasign_check != shasign: + error_msg = ( + "Redsys: invalid shasign, received %s, computed %s, " + "for data %s" % (shasign, shasign_check, data) + ) + _logger.info(error_msg) + raise ValidationError(error_msg) + return tx + + @api.model + def _get_redsys_state(self, status_code): + if 0 <= status_code <= 100: + return "done" + elif status_code <= 203: + return "pending" + elif 912 <= status_code <= 9912: + return "cancel" + else: + return "error" + + def _process_feedback_data(self, data): + super()._process_feedback_data(data) + if self.provider != "redsys": + return + + params = self.merchant_params_json2dict(data) + status_code = int(params.get("Ds_Response", "29999")) + state = self._get_redsys_state(status_code) + + vals = { + "state": state, + "redsys_txnid": params.get("Ds_AuthorisationCode"), + "create_date": fields.Datetime.now(), + } + + state_message = "" + feedback_error = False + if state == "done": + vals["state_message"] = _("Ok: %s") % params.get("Ds_Response") + self._set_done() + self._finalize_post_processing() + elif state == "pending": # 'Payment error: code: %s.' + state_message = _("Error: %(status_code)s (%(error_code)s)") + self._set_pending() + elif state == "cancel": # 'Payment error: bank unavailable.' + state_message = _("Bank Error: %(status_code)s (%(error_code)s)") + self._set_canceled() + else: + state_message = _( + "Redsys: feedback error: %(status_code)s (%(error_code)s)" + ) + self._set_error(state_message) + feedback_error = True + if state_message: + vals["state_message"] = state_message % { + "status_code": params.get("Ds_Response"), + "error_code": params.get("Ds_ErrorCode"), + } + if state == "error": + _logger.warning(vals["state_message"]) + if feedback_error: + self._set_error(state_message) + self.write(vals) + + def _get_specific_rendering_values(self, processing_values): + res = super()._get_specific_rendering_values(processing_values) + if self.acquirer_id.provider != "redsys": + return res + redsys_values = dict(processing_values) + merchant_parameters = self.acquirer_id._prepare_merchant_parameters( + processing_values + ) + redsys_values.update( + { + "api_url": self.acquirer_id._redsys_get_api_url(), + "Ds_SignatureVersion": str(self.acquirer_id.redsys_signature_version), + "Ds_MerchantParameters": merchant_parameters, + "Ds_Signature": self.acquirer_id.sign_parameters( + self.acquirer_id.redsys_secret_key, merchant_parameters + ), + } + ) + return redsys_values diff --git a/payment_redsys/readme/CONFIGURE.rst b/payment_redsys/readme/CONFIGURE.rst new file mode 100644 index 00000000000..18d91cfbbaa --- /dev/null +++ b/payment_redsys/readme/CONFIGURE.rst @@ -0,0 +1,46 @@ +Parámetros +~~~~~~~~~~ + +* **Nombre del comercio**: Indicaremos el nombre del comercio. + +* **Número de comercio (FUC)**: Indicaremos el número de comercio que + nuestra entidad nos ha comunicado. + +* **Clave secreta de encriptación**: Indicaremos la clave de encriptación + que tiene el comercio. + +* **Número de terminal**: Indicaremos el terminal del TPV. + +* **Tipo de firma**: Seleccionaremos el tipo de firma del comercio. + +* **Tipo de moneda**: Seleccionaremos la moneda de nuestro terminal TPV + (Normalmente EUR - Euros). + +* **Tipo de transacción**: Indicaremos el tipo de transacción, 0. + +* **Idioma TPV**: Indicaremos el idioma en el TPV. + +* **Método de pago**: Indicaremos qué tipo de pago se debe aceptar, pago con + tarjeta, Bizum u otro de los disponibles. + +* **Porcentaje de pago**: Indicar el porcentaje de pago que se permite, si + se deja a 0.0 se entiende 100%. + +Nota +~~~~ + +Se tiene que verificar la configuración del comercio en el +módulo de administración de Redsys, donde la opción “Parámetros en las +URLs” debe tener el valor “SI”. + +En caso de que exista más de una base de datos en la instalación, cuando la +pasarela de pago envía el formulario a "/payment/redsys/return" odoo no sabe +con que base de datos procesar esta información, por lo que hay que establecer +los parametros **dbfilter** y **dbname** en el archivo de configuración. + +Para mostrar simultáneamente en el comercio electrónico varios de los métodos +de pago que proporciona Redsys, como pago con tarjeta y Bizum por ejemplo, +debemos duplicar el medio de pago y escoger en el campo método de pago el que +corresponda en cada caso. + +En el caso de Bizum, el titular del TPV deberá solicitar al banco su activación. diff --git a/payment_redsys/readme/CONTRIBUTORS.rst b/payment_redsys/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..331bd1d89aa --- /dev/null +++ b/payment_redsys/readme/CONTRIBUTORS.rst @@ -0,0 +1,16 @@ +* `Tecnativa `_: + + * Sergio Teruel + * Carlos Dauden + * Carlos Roca + * João Marques + +* Isaac Gallart + +* `Acysos S.L. `_: + + * Ignacio Ibeas + +* `Planes Asesoria y Soluciones Informaticas S.L. `_: + + * Luis Planes diff --git a/payment_redsys/readme/DESCRIPTION.rst b/payment_redsys/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..bca0e2eac4a --- /dev/null +++ b/payment_redsys/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +Este módulo añade la opción de pago a través de la pasarela de Redsys, pudiendo +seleccionar entre los métodos de pago: pago con tarjeta, pago por transferencia, +domiciliación y Bizum. diff --git a/payment_redsys/readme/INSTALL.rst b/payment_redsys/readme/INSTALL.rst new file mode 100644 index 00000000000..5180b389c7a --- /dev/null +++ b/payment_redsys/readme/INSTALL.rst @@ -0,0 +1,4 @@ +Para utilizar este módulo, necesita la biblioteca `pycryptodome +`_ instalada en su sistema:: + + pip3 install pycryptodome diff --git a/payment_redsys/readme/ROADMAP.rst b/payment_redsys/readme/ROADMAP.rst new file mode 100644 index 00000000000..e7a4f6d6ae3 --- /dev/null +++ b/payment_redsys/readme/ROADMAP.rst @@ -0,0 +1,9 @@ +De acuerdo a los requisitos de Redsys, el tamaño máximo del número de pedido +resultante (``Ds_Order``) es de 12 caracteres. Este addon trunca dicho +dato en el comienzo de la transacción, con el resultado de que, aunque Redsys +la aceptará, no se finalizará el pedido pedido en Odoo al retornar y entregará +un Error 500 a Redsys. +Para evitar esto, es recomendable seleccionar secuencias de pedido que se +ajusten a esta limitación, en particular de 10 o menos caracteres, al ser la +referencia un número extendido a partir del pedido, que incluye un guion y un +número secuencial para posibles repeticiones de pago. diff --git a/payment_redsys/static/description/icon.png b/payment_redsys/static/description/icon.png new file mode 100644 index 00000000000..3d7100f0b78 Binary files /dev/null and b/payment_redsys/static/description/icon.png differ diff --git a/payment_redsys/static/description/index.html b/payment_redsys/static/description/index.html new file mode 100644 index 00000000000..12319209487 --- /dev/null +++ b/payment_redsys/static/description/index.html @@ -0,0 +1,500 @@ + + + + + + +Pasarela de pago Redsys + + + +
+

Pasarela de pago Redsys

+ + +

Beta License: AGPL-3 OCA/l10n-spain Translate me on Weblate Try me on Runboat

+

Este módulo añade la opción de pago a través de la pasarela de Redsys, pudiendo +seleccionar entre los métodos de pago: pago con tarjeta, pago por transferencia, +domiciliación y Bizum.

+

Table of contents

+ +
+

Installation

+

Para utilizar este módulo, necesita la biblioteca pycryptodome instalada en su sistema:

+
+pip3 install pycryptodome
+
+
+
+

Configuration

+
+

Parámetros

+
    +
  • Nombre del comercio: Indicaremos el nombre del comercio.
  • +
  • Número de comercio (FUC): Indicaremos el número de comercio que +nuestra entidad nos ha comunicado.
  • +
  • Clave secreta de encriptación: Indicaremos la clave de encriptación +que tiene el comercio.
  • +
  • Número de terminal: Indicaremos el terminal del TPV.
  • +
  • Tipo de firma: Seleccionaremos el tipo de firma del comercio.
  • +
  • Tipo de moneda: Seleccionaremos la moneda de nuestro terminal TPV +(Normalmente EUR - Euros).
  • +
  • Tipo de transacción: Indicaremos el tipo de transacción, 0.
  • +
  • Idioma TPV: Indicaremos el idioma en el TPV.
  • +
  • Método de pago: Indicaremos qué tipo de pago se debe aceptar, pago con +tarjeta, Bizum u otro de los disponibles.
  • +
  • Porcentaje de pago: Indicar el porcentaje de pago que se permite, si +se deja a 0.0 se entiende 100%.
  • +
+
+
+

Nota

+

Se tiene que verificar la configuración del comercio en el +módulo de administración de Redsys, donde la opción “Parámetros en las +URLs” debe tener el valor “SI”.

+

En caso de que exista más de una base de datos en la instalación, cuando la +pasarela de pago envía el formulario a “/payment/redsys/return” odoo no sabe +con que base de datos procesar esta información, por lo que hay que establecer +los parametros dbfilter y dbname en el archivo de configuración.

+

Para mostrar simultáneamente en el comercio electrónico varios de los métodos +de pago que proporciona Redsys, como pago con tarjeta y Bizum por ejemplo, +debemos duplicar el medio de pago y escoger en el campo método de pago el que +corresponda en cada caso.

+

En el caso de Bizum, el titular del TPV deberá solicitar al banco su activación.

+
+
+
+

Known issues / Roadmap

+

De acuerdo a los requisitos de Redsys, el tamaño máximo del número de pedido +resultante (Ds_Order) es de 12 caracteres. Este addon trunca dicho +dato en el comienzo de la transacción, con el resultado de que, aunque Redsys +la aceptará, no se finalizará el pedido pedido en Odoo al retornar y entregará +un Error 500 a Redsys. +Para evitar esto, es recomendable seleccionar secuencias de pedido que se +ajusten a esta limitación, en particular de 10 o menos caracteres, al ser la +referencia un número extendido a partir del pedido, que incluye un guion y un +número secuencial para posibles repeticiones de pago.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/l10n-spain project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/payment_redsys/static/img/bizum.png b/payment_redsys/static/img/bizum.png new file mode 100644 index 00000000000..8af46a769ce Binary files /dev/null and b/payment_redsys/static/img/bizum.png differ diff --git a/payment_redsys/static/src/img/redsys_icon.png b/payment_redsys/static/src/img/redsys_icon.png new file mode 100644 index 00000000000..e9ddbae18a4 Binary files /dev/null and b/payment_redsys/static/src/img/redsys_icon.png differ diff --git a/payment_redsys/tests/__init__.py b/payment_redsys/tests/__init__.py new file mode 100644 index 00000000000..b6b8cd7d100 --- /dev/null +++ b/payment_redsys/tests/__init__.py @@ -0,0 +1,2 @@ +from . import common +from . import test_redsys diff --git a/payment_redsys/tests/common.py b/payment_redsys/tests/common.py new file mode 100644 index 00000000000..3e4469f682a --- /dev/null +++ b/payment_redsys/tests/common.py @@ -0,0 +1,27 @@ +# Copyright 2022 Planesnet - Luis Planes, Laia Espinosa, Raul Solana +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.addons.payment.tests.common import PaymentCommon + + +class RedsysCommon(PaymentCommon): + @classmethod + def setUpClass(cls, chart_template_ref=None): + super().setUpClass(chart_template_ref=chart_template_ref) + cls.redsys = cls._prepare_acquirer( + "redsys", + update_values={ + # Set values for create a new acquirer Redsys + "redsys_merchant_name": "Redsys test acquirer", + "redsys_merchant_code": "069611024", + "redsys_merchant_description": "Product description for Redsys test acquirer", + "redsys_secret_key": "sq7HjrUOBfKmC576ILgskD5srU870gJ8", + "redsys_merchant_data": "Merchant data", + }, + ) + # Override default values + cls.acquirer = cls.redsys + cls.currency = cls.currency_euro + cls.country_spain = cls.env.ref("base.es") + cls.country = cls.country_spain + cls.company = cls.env.company diff --git a/payment_redsys/tests/test_redsys.py b/payment_redsys/tests/test_redsys.py new file mode 100644 index 00000000000..69ec71433b3 --- /dev/null +++ b/payment_redsys/tests/test_redsys.py @@ -0,0 +1,160 @@ +# Copyright 2016-2017 Tecnativa - Sergio Teruel +# Copyright 2023 Planesnet - Luis Planes, Laia Espinosa, Raul Solana +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import json +import logging + +from odoo.exceptions import ValidationError +from odoo.tests import tagged +from odoo.tools import mute_logger + +from .common import RedsysCommon + +_logger = logging.getLogger(__name__) + + +@tagged("post_install", "-at_install") +class RedsysTest(RedsysCommon): + def _get_expected_values(self, reference=None): + if not reference: + reference = self.reference + values = { + "reference": reference, + "amount": self.amount, + } + rendering_values = self._get_tx(reference)._get_specific_rendering_values( + values + ) + return { + "data_set": None, + "Ds_SignatureVersion": rendering_values["Ds_SignatureVersion"], + "Ds_MerchantParameters": rendering_values["Ds_MerchantParameters"], + "Ds_Signature": rendering_values["Ds_Signature"], + } + + def test_compatible_acquirers(self): + acquirers = self.env["payment.acquirer"]._get_compatible_acquirers( + partner_id=self.partner.id, + currency_id=self.currency_euro.id, + company_id=self.company.id, + ) + self.assertIn(self.redsys, acquirers) + + def test_redirect_form_values(self): + tx = self.create_transaction(flow="redirect", reference="Valid transaction") + expected_values = self._get_expected_values(tx.reference) + + with mute_logger("odoo.addons.payment.models.payment_transaction"): + processing_values = tx._get_processing_values() + + form_info = self._extract_values_from_html_form( + processing_values["redirect_form_html"] + ) + + self.assertEqual( + form_info["action"], "https://sis-t.redsys.es:25443/sis/realizarPago/" + ) + self.assertDictEqual( + expected_values, + form_info["inputs"], + "Redsys: invalid inputs specified in the redirect form.", + ) + + def _prepare_post_data(self, values): + # Simulate data received from Redsys + merchant_parameters = self.redsys._url_encode64(json.dumps(values)) + + return { + "Ds_MerchantParameters": merchant_parameters, + "Ds_Signature": self.redsys.sign_parameters( + self.redsys.redsys_secret_key, merchant_parameters.decode("utf8") + ), + } + + def test_process_feedback_data(self): + tx = self.create_transaction(flow="redirect", reference="Valid transaction") + values = { + "Ds_Order": tx.reference, + "Ds_AuthorisationCode": "999999", + "Ds_Response": "100", + } + post_data = self._prepare_post_data(values) + + tx = self.env["payment.transaction"]._get_tx_from_feedback_data( + "redsys", post_data + ) + tx._process_feedback_data(post_data) + self.assertEqual( + tx.state, "done", "Redsys: validation did not put tx into done state" + ) + + def test_unknown_transaction(self): + # typical data posted by Redsys after client has successfully paid + # unknown transaction + values = { + "Ds_Order": "unknown transaction", + "Ds_AuthorisationCode": "999999", + } + post_data = self._prepare_post_data(values) + with self.assertRaises(ValidationError): + self.env["payment.transaction"]._handle_feedback_data("redsys", post_data) + + def test_feedback_processing(self): + # typical data posted by Redsys after client has successfully paid + + # redsys not authorisation code + values = { + "Ds_Order": "Valid transaction", + "Ds_AuthorisationCode": "", + } + post_data = self._prepare_post_data(values) + with self.assertRaises(ValidationError): + self.env["payment.transaction"]._handle_feedback_data("redsys", post_data) + + # Valid transaction. status: done + tx = self.create_transaction(flow="redirect", reference="Valid transaction") + values = { + "Ds_Order": tx.reference, + "Ds_AuthorisationCode": "999999", + "Ds_Response": "100", + } + post_data = self._prepare_post_data(values) + + tx._handle_feedback_data("redsys", post_data) + self.assertEqual( + tx.state, "done", "Redsys: validation did not put tx into done state" + ) + + # No valid card transaction. status: pending + tx = self.create_transaction(flow="redirect", reference="Pending transaction") + values = { + "Ds_Order": tx.reference, + "Ds_AuthorisationCode": "999999", + "Ds_Response": "203", + } + post_data = self._prepare_post_data(values) + tx._handle_feedback_data("redsys", post_data) + self.assertEqual(tx.state, "pending", "Redsys: pending transaction status") + + # Cancel status + tx = self.create_transaction(flow="redirect", reference="Cancel transaction") + values = { + "Ds_Order": tx.reference, + "Ds_AuthorisationCode": "999999", + "Ds_Response": "913", + } + post_data = self._prepare_post_data(values) + tx._handle_feedback_data("redsys", post_data) + self.assertEqual(tx.state, "cancel", "Redsys: 913-9912 generic invalid card") + + # Error transction status + tx = self.create_transaction(flow="redirect", reference="Error transaction") + values = { + "Ds_Order": tx.reference, + "Ds_AuthorisationCode": "999999", + "Ds_Response": "9999", + } + post_data = self._prepare_post_data(values) + tx._handle_feedback_data("redsys", post_data) + self.assertEqual(tx.state, "error", "Redsys: response error") diff --git a/payment_redsys/views/payment_acquirer.xml b/payment_redsys/views/payment_acquirer.xml new file mode 100644 index 00000000000..a143a86d172 --- /dev/null +++ b/payment_redsys/views/payment_acquirer.xml @@ -0,0 +1,70 @@ + + + + + acquirer.form.redsys + payment.acquirer + + + + + + + + + + + + + + + + + + + + + acquirer.transaction.form.redsys + payment.transaction + + + + + + + + diff --git a/payment_redsys/views/payment_redsys_templates.xml b/payment_redsys/views/payment_redsys_templates.xml new file mode 100644 index 00000000000..3f2903eafdc --- /dev/null +++ b/payment_redsys/views/payment_redsys_templates.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/requirements.txt b/requirements.txt index b187e714016..f2c8f66d86b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,7 @@ chardet cryptography pycountry +pycryptodome qrcode requests requests_pkcs12 diff --git a/setup/payment_redsys/odoo/addons/payment_redsys b/setup/payment_redsys/odoo/addons/payment_redsys new file mode 120000 index 00000000000..142839d2fa2 --- /dev/null +++ b/setup/payment_redsys/odoo/addons/payment_redsys @@ -0,0 +1 @@ +../../../../payment_redsys \ No newline at end of file diff --git a/setup/payment_redsys/setup.py b/setup/payment_redsys/setup.py new file mode 100644 index 00000000000..28c57bb6403 --- /dev/null +++ b/setup/payment_redsys/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)