支付提供商

class odoo.addons.payment.models.payment_provider.PaymentProvider[源代码]
_build_request_auth(**kwargs)[源代码]

设置请求的基本 HTTP 认证

此方法作为钩子,允许提供商构建请求的基本 HTTP 认证。

参数

kwargs (dict) – 提供商特定数据。

返回

基本 HTTP 认证(如果有)。

返回类型

tuple

_build_request_headers(method, endpoint, payload, **kwargs)[源代码]

构建请求的头部。

此方法作为钩子,允许提供商构建请求头部。

参数
  • method (str) – 请求的 HTTP 方法。

  • endpoint (str) – 请求要到达的 API 端点。

  • payload (dict) – 请求的有效载荷。

  • kwargs (dict) – 提供商特定数据。

返回

请求头部。

返回类型

dict

_build_request_url(endpoint, **kwargs)[源代码]

构建请求的 URL。

此方法作为钩子,允许提供商构建请求 URL。

参数
  • endpoint (str) – 请求要到达的 API 端点。

  • kwargs (dict) – 提供商特定数据。

返回

请求 URL。

返回类型

str

_compute_feature_support_fields()[源代码]

根据提供商计算功能支持字段。

功能支持字段用于指定某个提供商支持哪些附加功能。这些字段如下:

  • support_express_checkout :是否支持“快速结账”功能,默认为 False

  • support_manual_capture :是否支持“手动捕获”功能,默认为 False

  • support_refund: Which type of the “refunds” feature is supported: None, 'full_only', or 'partial'. None by default.

  • support_tokenization :是否支持“令牌化功能”,默认为 False

为了指定某个提供商支持附加功能,它必须重写此方法,并在适当的 payment.provider 记录上将相关功能支持字段设置为所需的值。

返回

_get_code()[源代码]

返回提供商的代码。

注意:self.ensure_one()

返回

提供商的代码。

返回类型

str

_get_compatible_providers(company_id, partner_id, amount, currency_id=None, force_tokenization=False, is_express_checkout=False, is_validation=False, report=None, **kwargs)[源代码]

搜索并返回符合兼容性条件的提供商。

兼容性条件包括:提供商不得被禁用;必须属于所提供的公司;如果存在,则支持合作伙伴所在国家;如果提供货币,则必须与之兼容。如果提供,可选的关键字参数将进一步细化条件。

参数
  • company_id (int) – 提供商必须所属的公司,作为 res.company ID。

  • partner_id (int) – 进行支付的合作伙伴,作为 res.partner ID。

  • amount (float) – 需支付的金额。对于验证交易为 0

  • currency_id (int) – 如果事先已知,支付货币作为 res.currency ID。

  • force_tokenization (bool) – 是否仅允许支持令牌化的提供商匹配。

  • is_express_checkout (bool) – 支付是否通过快速结账完成。

  • is_validation (bool) – 操作是否为验证。

  • report (dict) – 每个提供商的可用状态和原因必须记录在其中的报告。

  • kwargs (dict) – 可选数据。此参数在此处未使用。

返回

兼容的提供商。

返回类型

payment.provider

_get_default_payment_method_codes()[源代码]

返回此提供商的默认付款方式。

注意:self.ensure_one()

返回

默认付款方式代码。

返回类型

set

_get_redirect_form_view(is_validation=False)[源代码]

返回用于渲染重定向表单的模板视图。

如果提供商需要根据操作是否为验证返回不同的视图,则必须覆盖此方法并返回适当的视图。

注意:self.ensure_one()

参数

is_validation (bool) – 操作是否为验证。

返回

重定向表单模板的视图。

返回类型

ir.ui.view 的记录

_get_provider_domain(provider_code, **kwargs)[源代码]

返回付款提供商域。

参数
  • provider_code (str) – 要搜索的提供商代码。

  • kwargs (dict) – 附加关键字参数。

返回

搜索提供商的域。

返回类型

list[tuple]

_get_removal_values()[源代码]

当其模块卸载时,返回用于更新提供商的值。

为了使模块指定额外的移除值,它必须重写此方法,并用其特定值补充通用值。

返回

用于更新已移除提供商的移除值。

返回类型

dict

_get_supported_currencies()[源代码]

返回付款提供商支持的货币。

默认情况下,所有货币(包括非活跃货币)都被视为受支持。如果提供商要过滤掉特定货币,必须重写此方法并返回受支持货币的子集。

注意:self.ensure_one()

返回

支持的货币。

返回类型

res.currency

_get_validation_amount()[源代码]

返回用于验证操作的金额。

为了支持令牌化,提供商必须覆盖此方法并返回验证金额。如果金额为 0 ,则无需创建覆盖。

注意:self.ensure_one()

返回

验证金额。

返回类型

float

_get_validation_currency()[源代码]

返回用于验证操作的货币。

验证货币必须同时被提供商和支付方式支持。如果未传递支付方式,则仅考虑提供商支持的货币。如果未找到合适的货币,则返回提供商公司的货币。

为了使提供商支持令牌化并指定不同的验证货币,它必须重写此方法并返回适当的验证货币。

注意:self.ensure_one()

返回

验证货币。

返回类型

res.currency 的记录集

_is_tokenization_required(**kwargs)[源代码]

根据交易上下文返回是否需要对交易进行令牌化。

为了使模块基于支付上下文要求令牌化,它必须重写此方法并返回是否需要令牌化。

参数

kwargs (dict) – 支付上下文。此参数在此处未使用。

返回

是否需要对交易进行令牌化。

返回类型

bool

_parse_response_content(response, **kwargs)[源代码]

检索响应的 JSON 格式内容。

此方法用作钩子,允许提供商解析响应内容。

参数
  • response (requests.Response) – 要解析的响应。

  • kwargs (dict) – 提供商特定数据。

返回

响应内容。

返回类型

dict

_parse_response_error(response)[源代码]

从响应中检索错误消息。

此方法用作钩子,允许提供商解析响应的错误消息。

参数

response (requests.Response) – 要解析的响应。

返回

错误消息。

返回类型

str

_send_api_request(method, endpoint, *, params=None, data=None, json=None, reference=None, **kwargs)[源代码]

向 API 发送请求。

尽可能将此方法的调用包装在 try-except 块中,以防止请求失败时引发的 ValidationError 向上传播。此规则的例外情况包括必须将错误消息返回给客户端的控制器调用。

注意:self.ensure_one()

参数
  • method (str) – 请求的 HTTP 方法。

  • endpoint (str) – 请求要到达的 API 端点。

  • params (dict) – 请求的查询字符串参数。

  • data (dict|str) – 请求的正文。

  • json (dict) – 请求的 JSON 格式正文。

  • reference (str) – 交易的参考(如果有)。

  • kwargs (dict) – 转发给专门辅助方法的提供商特定数据。

返回

响应的格式化内容。

返回类型

dict|str

引发

ValidationError – 如果发生 HTTP 错误。

_should_build_inline_form(is_validation=False)[源代码]

返回是否应实例化内联支付表单。

为了使提供商同时处理直接支付和带重定向的支付,它必须重写此方法,并根据操作(在线支付或验证)返回是否应实例化内联支付表单(即,如果支付应为直接支付)。

参数

is_validation (bool) – 操作是否为验证。

返回

是否应实例化内联表单。

返回类型

bool