Before 660dc0ebaf it was possible to use Authorize to pay via your bank
account using the "Redirection to payment acquirer" option. Since the
refactor removed the redirect it was no longer possible. This commit
reintroduces that feature.
It does so by adding new form elements that accept bank account
information. Additionally it reintroduces the `billTo` and `customer`
parameters that Authorize requires when processing ACH payments.
task-2628318
closes odoo/odoo#75289
Signed-off-by: Antoine Vandevenne (anv) <AntoineVDV@users.noreply.github.com>
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import logging
|
|
import pprint
|
|
|
|
from odoo import _, fields, models
|
|
from odoo.exceptions import UserError
|
|
|
|
from .authorize_request import AuthorizeAPI
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class PaymentToken(models.Model):
|
|
_inherit = 'payment.token'
|
|
|
|
authorize_profile = fields.Char(
|
|
string="Authorize.Net Profile ID",
|
|
help="The unique reference for the partner/token combination in the Authorize.net backend.")
|
|
authorize_payment_method_type = fields.Selection(
|
|
string="Authorize.Net Payment Type",
|
|
help="The type of payment method this token is linked to.",
|
|
selection=[("credit_card", "Credit Card"), ("bank_account", "Bank Account (USA Only)")],
|
|
)
|
|
|
|
def _handle_deactivation_request(self):
|
|
""" Override of payment to request Authorize.Net to delete the token.
|
|
|
|
Note: self.ensure_one()
|
|
|
|
:return: None
|
|
"""
|
|
super()._handle_deactivation_request()
|
|
if self.provider != 'authorize':
|
|
return
|
|
|
|
authorize_API = AuthorizeAPI(self.acquirer_id)
|
|
res_content = authorize_API.delete_customer_profile(self.authorize_profile)
|
|
_logger.info("delete_customer_profile request response:\n%s", pprint.pformat(res_content))
|
|
|
|
def _handle_reactivation_request(self):
|
|
""" Override of payment to raise an error informing that Auth.net tokens cannot be restored.
|
|
|
|
Note: self.ensure_one()
|
|
|
|
:return: None
|
|
"""
|
|
super()._handle_reactivation_request()
|
|
if self.provider != 'authorize':
|
|
return
|
|
|
|
raise UserError(_("Saved payment methods cannot be restored once they have been deleted."))
|