This commit replaces the old online payments API of the `payment` module with the new one and adapts to it all the implementing modules. See the merge commit for more details. task-2085989 task-2119838 task-2165982 task-2289255 Co-authored-by: Victor Feyens <vfe@odoo.com>
39 lines
1.7 KiB
Python
39 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.exceptions import AccessError, MissingError, ValidationError
|
|
from odoo.fields import Command
|
|
from odoo.http import route
|
|
|
|
from odoo.addons.payment.controllers import portal as payment_portal
|
|
|
|
|
|
class PaymentPortal(payment_portal.PaymentPortal):
|
|
|
|
@route('/invoice/transaction/<int:invoice_id>', type='json', auth='public')
|
|
def invoice_transaction(self, invoice_id, access_token, **kwargs):
|
|
""" Create a draft transaction and return its processing values.
|
|
|
|
:param int invoice_id: The invoice to pay, as an `account.move` id
|
|
:param str access_token: The access token used to authenticate the request
|
|
:param dict kwargs: Locally unused data passed to `_create_transaction`
|
|
:return: The mandatory values for the processing of the transaction
|
|
:rtype: dict
|
|
:raise: ValidationError if the invoice id or the access token is invalid
|
|
"""
|
|
# Check the invoice id and the access token
|
|
try:
|
|
self._document_check_access('account.move', invoice_id, access_token)
|
|
except MissingError as error:
|
|
raise error
|
|
except AccessError:
|
|
raise ValidationError("The access token is invalid.")
|
|
|
|
kwargs['reference_prefix'] = None # Allow the reference to be computed based on the invoice
|
|
kwargs.pop('custom_create_values', None) # Don't allow passing arbitrary create values
|
|
tx_sudo = self._create_transaction(
|
|
custom_create_values={'invoice_ids': [Command.set([invoice_id])]}, **kwargs,
|
|
)
|
|
|
|
return tx_sudo._get_processing_values()
|