summaryrefslogtreecommitdiff
path: root/addons/payment_authorize
AgeCommit message (Collapse)Author
2021-05-17[FIX] *: update documentation links Following the recent reorganisation of ↵Victor Feyens
the documentation in 12.0+, the majority of the documents have been moved and their old links are no longer valid. Some redirection rules will soon be deployed, but those rules might be dropped in some years and we want the links to still work, which is why we still replace the links to the new ones. FW-Port of odoo/odoo#70675 (13.0) closes odoo/odoo#70728 X-original-commit: 85c24961ab9ff5c1c79eb7415c97c46d9a77cca3 Related: odoo/enterprise#18283 Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2021-04-25[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-04-18[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-04-11[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-04-04[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-03-28[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-03-21[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-03-07[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-02-21[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-02-14[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-01-31[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-01-24[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-01-17[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-01-13[FIX] payment_authorize: Show UserError to usernie
Steps: - Install website_sale and payment_authorize - Set up a tunnel (e.g. ngrok) - Log in to Authorize.Net backend - Go to Account > Response/Receipt URLs > Add Url - Enter the tunnel URL - In Odoo, go to Website > Configuration > eCommerce > Payment Acquirers - Edit "Authorize.Net" - Credentials tab: - State: Test Mode - API Login Id, Transaction and Signature key - Save, then Generate Client Key - Configuration tab: - Payment Flow: Payment from Odoo - Stop the server - Replace https://github.com/odoo/odoo/blob/1b9b99dc2643910c1412b564affccf02ba1e55d9/addons/payment_authorize/models/authorize_request.py#L46 with `resp = {'messages': {'resultCode': 'Error', 'message': [{'code': 'E00027', 'text': 'An error occurred during processing. Call Merchant Service Provider.'}]}}` - Restart the server - Go to "Website" > "Go to Website" > Shop - Add a product to the basket - Check out the basket - Choose "Credit Card (powered by Authorize) Test Mode" - Pay Now - Enter any card data (e.g. 4111 1111 1111 1111 - 01/22 - 900) Bug: When the Pay Now process is done, the customer is redirected to `/shop?error=invalid_token_id`. No errors are shown. Explanation: The patch simulates an error from Authorize.Net happening during their process. Using the special card numbers won't trigger the wanted behavior. When getting an error from Authorize.net, a `UserError` is raised. This error is then caught in the controller to return a formatted message. However, returning a dict in this part of the code embeds it inside `{'result': [...]}`. The error message is, thus, not blocking the form's redirection and the user gets redirected to the form action, i.e. `/shop/payment/token`. This route requires `pm_id`, but, in this scenario, it's an empty string. This leads to another redirection to `/shop/?error=invalid_token_id` as seen here: https://github.com/odoo/odoo/blob/1b9b99dc2643910c1412b564affccf02ba1e55d9/addons/website_sale/controllers/main.py#L938-L941 Letting the error bubble up forces the backend to return a blocking error response. This makes the fronted display the Authorize.Net error underneath the provider selection, and prevents it from redirecting. opw:2419260 closes odoo/odoo#64462 X-original-commit: c7a387b93cd49e6fb2bf5d240de81f4485830f4c Signed-off-by: backspac <backspac@users.noreply.github.com>
2021-01-10[I18N] Update translation terms from TransifexOdoo Translation Bot
2021-01-05[FIX] payment_authorize: send the full reference for s2s transactionsJoren Van Onder
invoiceNumber is limited to 20 characters so if the reference in Odoo is longer we send an incomplete reference. This makes it hard to match up S2S payment.transactions in Odoo with their counterparts in the Authorize.net portal. To solve this send the full reference in the description field (which has a max length of 255 characters [1]). [1] https://developer.authorize.net/api/reference/index.html#payment-transactions-charge-a-customer-profile closes odoo/odoo#64119 Signed-off-by: jorenvo <jorenvo@users.noreply.github.com>
2020-11-15[I18N] Update translation terms from TransifexOdoo Translation Bot
2020-11-05[FIX] payment_authorize: support references longer than 20 charactersJoren Van Onder
We can have payment.transaction references of >20 characters. This happens automatically if you have long sale.{order,subscription} sequences (especially through website_payment because it adds multiple suffixes, e.g. SO2020/1234567 could turn into SO2020/1234567-12-1-1-1). We POST the full reference via the x_invoice_num variable. Unfortunately Authorize specifies a maximum length of 20 for this field [1]. So when Authorize POSTs back to /payment/authorize/return it only specifies the first 20 characters in x_invoice_num. E.g. when POSTing { ... 'x_invoice_num': 'SO2020/1234567-12-1-1-1', ... } we receive back in /payment/authorize/return: { ... 'x_invoice_num': 'SO2020/1234567-12-1-', ... } This causes _authorize_form_get_tx_from_data() to not find the transaction which results in a ValidationError. To fix this also pass the reference in the x_description field. It has a more generous 255 character limit [1]. Then search using both. We can't get rid of x_invoice_num entirely because we cannot assume the payment_authorize.authorize_form will be updated (even more so because it's a noupdate="1" template). By still using it in _authorize_form_get_tx_from_data() we ensure that everything keeps working regardless of whether or not x_description is included in the template. [1] p39 in https://www.authorize.net/content/dam/anet-redesign/documents/AIM_guide.pdf opw-2373433 closes odoo/odoo#61446 X-original-commit: 3a220d3ad2999a21d54924940574ba96a9c07154 Signed-off-by: jorenvo <jorenvo@users.noreply.github.com> Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-11-08[I18N] Update translation terms from TransifexOdoo Translation Bot
2020-10-27[FIX] payment_authorize: make it possible to pay after closing popupJoren Van Onder
Closing the Authorize.net popup with the little "x" doesn't call the responseHandler. Looking at the documentation (and source) of AcceptUI.js it seems there's no clean way to detect this. Because of this the "Pay & Confirm" button remains disabled, requiring the user to refresh the page. To solve this don't disable the button at all. Presumably it was added to avoid issues when spamming the button with clicks on a slow connection. But simulating this with a slow connection doesn't cause any issues. When AcceptJS is not yet loaded it's loaded with web.ajax.loadJS(). It correctly handles parallel calls before loading is finished and returns the same promise. AcceptJS correctly ignores subsequent click events on the button, because it immediately blocks all clicks on the body (and grays it out). Using a MutationObserver was also considered but this approach is much less messy. opw-2367166 closes odoo/odoo#60869 X-original-commit: 63f759b63284efc5fb9f5dc7dfbe4e2aed982ad0 Signed-off-by: jorenvo <jorenvo@users.noreply.github.com>
2020-10-27[I18N] *: Update translation terms from TransifexMartin Trigaux
Except Spanish, waiting for cleanup closes odoo/odoo#60848 Related: odoo/enterprise#14421 Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2020-10-21[REV] *: revert fb7407c for spanish translationsOlivier Dony
There was a problem in the Transifex translations for Spanish and all translations were overwritten by mistake with english defaults. This commit reverts all modified es.po files to their previous version while we work to restore the translations on Transifex.
2020-10-18[I18N] Update translation terms from TransifexOdoo Translation Bot
2020-10-11[I18N] Update translation terms from TransifexOdoo Translation Bot
2020-10-05[I18N] Update translation terms from TransifexOdoo Translation Bot
2020-09-27[I18N] Update translation terms from TransifexOdoo Translation Bot
2020-09-15[FIX] payment_authorize: make it possible to customize AcceptJS paramsJoren Van Onder
Without this you have to overwrite the entire function. closes odoo/odoo#57695 X-original-commit: c2e980c3798c3cf75e4f96b71c7bc81dbad6b78c Signed-off-by: jorenvo <jorenvo@users.noreply.github.com>
2020-09-01[I18N] export saas-13.5 source termsMartin Trigaux
Without demo data closes odoo/odoo#56839 Related: odoo/enterprise#12821 Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2020-08-14[IMP] various: Reseuence the module and module categoryBarad Mahendra
The purpose of this task is to improve the UI of the 'Apps', by improving the clarity of the kanban, sequencing the apps and simplifying the app categories in the searchpanel So in this commit, Added the new sequences for ir.module.module and ir.module.category records. TaskID: 2240257 Related Enterprise: https://github.com/odoo/enterprise/pull/12413 Closes: #55907
2020-07-16[IMP] payment(_*): Remove dependency to AccountTestCommonLaurent Smet
l10n runbot builds are all failing when running at least one test depending of AccountTestCommon because it: - doesn't create a sandboxed testing environnement to manage the multi-currency, multi-company, the default company's currency, the exchange rates... - doesn't setup a testing user then all tests are done using the superuser. - doesn't provide a fully setup chart of accounts: exchange difference journal is not set, accounts have bad types, etc... - is run sometimes at-install. --task: 2296213
2020-06-30[FIX] *: correct all or improve code translation lookupMartin Trigaux
This commit fixes all issues detected by the new pylint gettext-variable test. It converts some calls to the new syntax _("Foo %s", bar) to progressively migrate the code to the new syntax. A few calls were not technically incorrect but still detected by the linter. _("Foo" + "Bar") has been converted to _("Foo" "Bar") as it has the same effect and make sure the argument is of type asteroid.Const instead of BinOp). closes odoo/odoo#53683 Related: odoo/enterprise#11467 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
2020-04-22[FIX] payment_authorize: display errors to customersDamien Bouvy
Set the transaction to the state 'error' when Authorize.net responds with that status, as it will display a message to the customer to detail the problem. opw-2231276 X-original-commit: 005607fce4a22394a9f67cc4eaa52f8bf89780f0
2020-04-08[REF] base: Remove deprecated exceptions and osvJulien Castiaux
TL;DR: remember `osv` and `except_orm` ? You can forget about them. * Deprecated `except_orm` dropped. * `UserError` elevated as super type of all user-related errors. * Unused `DeferredException` dropped. * Unused `QWebException` dropped (real one is in `qweb.py`). * `MailDeliveryException` made a python exception. * `name` legacy exception attribute made an alias of the python standard `args[0]` attribute and deprecated. * `value` legacy exception attribute dropped. * `exception_type` RPC error response key dropped. * Deprecated `osv` module dropped. * `--osv-memory-age-limit` cli option made an alias of `--transient-age-limit` and deprecated. The `odoo.exceptions.Warning` have long been a deprecated alias to `UserError`. It is going to be removed in a future version but first we explicitly deprecate it with a warning. The `odoo.exceptions.DeferredException` was a very old internal exception, it has been removed without deprecation notice as it is never raised. The `odoo.exceptions.except_orm` has been a deprecated exception type with deprecation warning for 5 years, it has been removed in favor of UserError which becomes the super class of all user-related errors. The `odoo.base.models.ir_mail_server.MailDeliveryException` was inheriting `except_orm`. As it is not related to a user error but is more of a problem an admin much take care of, the exception has been made a Python error. The `exception_type` JSON key in RPC error responses was holding an hardcoded value derived from the exception type. Its usage has been dropped in favor of the `name` JSON key that holds the precise exception name. Again as it was hardly used in the source code (beside the crash manager) it has been dropped without deprecation warning. Since we are here trying to clean odoo custom exceptions, we are also deprecating the `name` exception attribute in favor of the more standard `args[0]` attribute. The `name` (along with `value`) were two attributes used to raise `except_orm` exceptions before the introduction of `UserError`, `AccessError` and related exceptions. The `name` attribute, at the time, was holding the exception type/title. Nowadays it contains the error message. The `value` attribute, at the time, was holding the error message. Nowadays it is no more used. The `osv` module contains very old deprecated aliases. There is no simple way to log a deprecation warning for osv, osv_memory and osv_abstract but as they have not been in use for ages, they have been removed too. To be consistent, the `--osv-memory-age-limit` cli option has been made a deprecated alias to the `--transient-age-limit`. closes odoo/odoo#45723 Task: 2187728 Related: odoo/enterprise#9162 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
2020-04-02[FIX] payment_*: reset payment acquirers to default on uninstallAdrian Torres
The `payment` module introduces a certain amount of payment acquirers, each one corresponding to a `payment_` module. When a `payment_` module is installed, this data is updated so that payments done with the corresponding acquirer change in behaviour using the provider installed by the `payment_` module. When a `payment_` module is uninstalled, this data should be reset to default, more especifically the `view_template_id` and the `provider` fields of `payment.acquirer`. This was not possible before this commit, and more importantly it would make the uninstallation of such `payment_` module impossible as the `view_template_id` is a required m2o ondelete='set null', which will make the registry crash. Even if the former wasn't a problem, the provider field would remain set to a non-existing selection option, which would make the registry crash (eventually, when checking a record with such a selection option). With this commit, we reset these fields to their default value upon module uninstall. In 13, the issue with `view_template_id` should be fixed, as required m2o that are ondelete='set null' are no longer possible. As for the provider Selection field, a fix should arrive in master soon. opw-2225333 closes odoo/odoo#48916 X-original-commit: 4f0c1c1bfd71dd1ff6793d0a91b49984c54d1351 Signed-off-by: Raphael Collet (rco) <rco@openerp.com> Signed-off-by: Adrian Torres (adt) <adt@odoo.com>
2020-03-30[FIX] *: set ondelete policy of required Selection fieldsAdrian Torres
With this commit, Selection fields with `required=True` which are extended via `selection_add` are given proper ondelete policies to ensure the cleanup of records containing these extended options during uninstall of the extending module. This commit also cleans up leftover uninstall hooks that were being used to handle the same set of problems prior to the ondelete mechanism being implemented for Selection fields. closes odoo/odoo#46325 Related: odoo/enterprise#9117 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
2020-03-26[FIX] payment_authorize: include phone in customer profileDamien Bouvy
It is possible to define required fields from the Authorize.net backend without which no customer profile can be created. These fields include data that Odoo sometimes does not have at all (fax number, anyone?); however including the phone number is a meaningful option. Before this commit, if the 'phone number' was required by the Authorize.net configuration and was correctly set in Odoo, this still did not work because we did not include the phone number with the customer profile creation request payload. We do now. opw-2215332 closes odoo/odoo#48420 X-original-commit: 034c04efa4ccecd40f657eae97ef2b04934d570c Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
2020-03-05[IMP] base: Display searchpanel on ir.module.module viewsYannick Tivisse
Purpose ======= The current kanban view is messy. It is difficult to identify which apps are installed or not. The user can completely miss a module that might have interested him. A search panel would make things way more readable. closes odoo/odoo#44401 Taskid: 2181557 Related: odoo/enterprise#8144 Related: odoo/upgrade#879 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-02-25[FIX] payment_authorize: change order of keysAtchuthan Ubendran
- Select 'capture manually' in Authorize.net Payment acquirer - Do an online transaction - Click on the Capture button at Payment transaction windows. An error message is returned: The element 'transactionRequest' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd' has invalid child element 'amount' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'. List of possible elements expected: 'splitTenderId, order, lineItems...'. This because the keys `amount` and `refTransId` are inverted in `createTransactionRequest`: https://developer.authorize.net/api/reference/index.html#payment-transactions-capture-a-previously-authorized-amount A simple fix is to swtich them. Indeed, the Odoo 13.0 requirements is Python 3.6+, in which the keys order at iteration is the insertion order. Although this was officially part of the specification in 3.7, the change is already available in 3.6. Closes #45891 opw-2201667 closes odoo/odoo#46206 X-original-commit: ae3885295795f8c150bd40af266004016fd300c5 Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-02-14[FIX] payment_authorize: always send an amount with the correct decimalsJoren Van Onder
We cannot assume reading the value of a monetary field has the decimals specified by the currency in decimal_places. Right after creating a record with a monetary field it may have a different amount of decimals. To reproduce this: >>> tx = env['payment.transaction'].create({ 'amount': 10.87, 'acquirer_id': env['payment.acquirer'].search([], limit=1).id, 'currency_id': env.ref('base.USD').id, 'reference': 'test' }) >>> tx.id 130 >>> tx.amount 10.870000000000001 <Restart odoo> >>> env['payment.transaction'].browse(130).amount 10.87 Authorize requires us to send a correctly rounded amount. The following response is returned when sending 10.870000000000001: {'messages': {'message': [{'code': 'E00027', 'text': 'The transaction was unsuccessful.'}], 'resultCode': 'Error'}, 'transactionResponse': {'SupplementalDataQualificationIndicator': 0, 'accountNumber': '', 'accountType': '', 'authCode': '', 'avsResultCode': 'P', 'cavvResultCode': '', 'cvvResultCode': '', 'errors': [{'errorCode': '5', 'errorText': 'A valid amount is ' 'required.'}], 'refTransID': '', 'responseCode': '3', 'testRequest': '0', 'transHash': '', 'transHashSha2': '', 'transId': '0'}} To work around the issue always round when we read amount. Lower level solutions were considered in #45248 but for now we'll stick with this higher level and lower risk patch. opw-2188889 closes odoo/odoo#45362 X-original-commit: 7485927f0eb152086efcaaf4a30260e503267c41 Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-02-13[IMP] payment_authorize: log API responsesJoren Van Onder
Makes debugging possible without having to run the db locally and manually adding _loggers everywhere. Parts of the error are logged already, leading to messages like: ...payment_authorize.models.payment: The transaction was unsuccessful Unfortunately they don't show the reason. The entire response is something like: {'messages': {'message': [{'code': 'E00027', 'text': 'The transaction was unsuccessful.'}], 'resultCode': 'Error'}, 'transactionResponse': {'SupplementalDataQualificationIndicator': 0, 'accountNumber': '', 'accountType': '', 'authCode': '', 'avsResultCode': 'P', 'cavvResultCode': '', 'cvvResultCode': '', 'errors': [{'errorCode': '5', 'errorText': 'A valid amount is ' 'required.'}], 'refTransID': '', 'responseCode': '3', 'testRequest': '0', 'transHash': '', 'transHashSha2': '', 'transId': '0'}} Since we log the full request above, let's also log the full response. PS. this was present before but was lost with 26f3d8465d3c6f1da80c186. opw-2188889 closes odoo/odoo#45259 X-original-commit: d269bba3b9f4f4fa567a2a7084396bdf08422fa4 Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-12-10[I18N] *: remove es_AR translationsMartin Trigaux
Followup of a425695e The terms were back in 12.0 Courtesy of Juan José Scarafía closes odoo/odoo#41624 X-original-commit: 85d0c7001a997748d7691205bbb8d066597591a5 Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-12-09[REV] web: reverts update to fontawesome 5.11.2Kevin Baptiste
This reverts commit ff1c35513aecef5fbc30f7c2f3834450e719714e. closes odoo/odoo#41480 X-original-commit: 116057b26e71db4692280463669f3e80d813ddcc Related: odoo/enterprise#7110 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2019-11-28[IMP] web: update to fontawesome 4.7.0 to 5.11.2Kevin Baptiste
FontAwesome 5 introduced new names for some icons as described on https://fontawesome.com/how-to-use/on-the-web/setup/upgrading-from-version-4#name-changes This commit replaces the old names to the new ones. closes odoo/odoo#35826 Taskid: 2050241 Related: odoo/enterprise#5180 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2019-10-31[FIX] payment_*: multiwebsite base_urlJorge Pinna Puissant
Fine-tunning of 937b5c076e7175bec664ed0cf4b77505e342f1e2 Have a multiwebsite setup have a payment installed for one of the two websites Make an order on that website and try to pay Before this commit, the transaction doesn't come back to odoo's payment success controller This was because the return url was set to the web base url ICP After this commit, the payment success page is opened as we took the request's url as the return url opw-2080352 closes odoo/odoo#39643 X-original-commit: a9fb15b33fd041ee420581a5ba450017db06e0c7 Signed-off-by: Jorge Pinna Puissant (jpp) <jpp@odoo.com>
2019-10-07[I18N] Update translation terms from TransifexOdoo Translation Bot
2019-10-01[I18N] Update translation terms from TransifexOdoo Translation Bot
2019-09-29[I18N] Update translation terms from TransifexOdoo Translation Bot
2019-09-25[IMP] * : manifest module categories cleanupVictor Feyens
closes odoo/odoo#35754 Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
2019-09-15[I18N] Update translation terms from TransifexOdoo Translation Bot
2019-09-08[I18N] Update translation terms from TransifexOdoo Translation Bot