支付交易

class odoo.addons.payment.models.payment_transaction.PaymentTransaction[源代码]
_compute_reference(provider_code, prefix=None, separator='-', **kwargs)[源代码]

为交易计算唯一参考编号。

如果不存在具有相同前缀的其他交易,则参考编号对应于前缀。否则,它遵循以下模式:{computed_prefix}{separator}{sequence_number},其中:

  • {computed_prefix} 是:

    • 提供的自定义前缀(如果有)。

    • 如果未填写自定义前缀但填写了 kwargs,则为 _compute_reference_prefix() 的计算结果。

    • 'tx-{datetime}' 如果既未填写自定义前缀也未填写 kwargs。

  • {separator} 是用于分隔前缀和序列号的字符串。

  • {sequence_number} 是共享相同前缀的参考编号序列中的下一个整数。如果只有一个匹配的参考编号,序列从 1 开始。

Example

  • 给定自定义前缀 'example',且其与现有参考编号无匹配项,则完整参考编号将为 'example'

  • 给定自定义前缀 'example',且其与现有参考编号 'example' 匹配,并使用自定义分隔符 '-',则完整参考编号将为 'example-1'

  • 给定 kwargs {'invoice_ids': [1, 2]}、自定义分隔符 '-' 且无自定义前缀,如果没有现有参考编号具有相同前缀,则完整参考编号将为 'INV1-INV2'`(或类似),或者如果有 `n 个现有参考编号具有相同前缀,则为 'INV1-INV2-n'

参数
  • provider_code (str) – 处理交易的提供商代码。

  • prefix (str) – 用于计算完整参考编号的自定义前缀。

  • separator (str) – 用于分隔前缀和后缀的自定义分隔符。

  • kwargs (dict) – 如果没有提供自定义前缀,则传递给 _compute_reference_prefix() 的可选值。

返回

交易的唯一参考编号。

返回类型

str

_compute_reference_prefix(provider_code, separator, **values)[源代码]

根据交易值计算参考前缀。

注意:此方法应在 sudo 模式下调用,以便访问交易值中引用的文档(如发票、销售订单)。

参数
  • provider_code (str) – 处理交易的提供商代码。

  • separator (str) – 用于分隔计算参考前缀各部分的自定义分隔符。

  • values (dict) – 用于计算参考前缀的交易值。

返回

计算出的参考前缀。

返回类型

str

_get_specific_create_values(provider_code, values)[源代码]

使用提供商特定的值完成 create 方法的值。

为了添加自己的创建值,提供商必须覆盖此方法并返回一个值字典。提供商特定的值优先于通用创建值字典中的值。

参数
  • provider_code (str) – 处理交易的提供商代码。

  • values (dict) – 原始创建值。

返回

提供商特定的创建值字典。

返回类型

dict

_get_specific_processing_values(processing_values)[源代码]

返回用于处理交易的提供商特定值的字典。

为了使提供商添加自己的处理值,它必须重写此方法,并基于此方法返回的通用值返回一个包含提供商特定值的字典。提供商特定值优先于通用处理值字典中的值。

参数

processing_values (dict) – 交易的通用处理值。

返回

提供商特定处理值的字典。

返回类型

dict

_get_specific_rendering_values(processing_values)[源代码]

返回用于渲染重定向表单的提供商特定值的字典。

为了使提供商添加自己的渲染值,它必须重写此方法,并基于处理值(包括提供商特定处理值)返回一个包含提供商特定值的字典。

参数

processing_values (dict) – 交易的处理值。

返回

提供商特定渲染值的字典。

返回类型

dict

_get_tx_from_notification_data(provider_code, notification_data)[源代码]

根据通知数据查找交易。

为了使提供商处理交易,它必须重写此方法并返回与通知数据匹配的交易。

参数
  • provider_code (str) – 处理交易的提供商代码。

  • notification_data (dict) – 提供商发送的通知数据。

返回

找到的交易。

返回类型

payment.transaction 的记录集

_handle_notification_data(provider_code, notification_data)[源代码]

将交易与通知数据匹配,更新其状态并返回。

参数
  • provider_code (str) – 处理交易的提供商代码。

  • notification_data (dict) – 提供商发送的通知数据。

返回

交易。

返回类型

payment.transaction 的记录集

_process_notification_data(notification_data)[源代码]

根据通知数据更新交易状态和提供商参考信息。

通常不应直接调用此方法。接收通知数据时应调用的正确方法是 _handle_notification_data()

为了处理交易,提供商必须覆盖此方法并处理通知数据。

注意:self.ensure_one()

参数

notification_data (dict) – 提供商发送的通知数据。

返回

_send_capture_request(amount_to_capture=None)[源代码]

请求处理交易的提供商捕获付款。

对于部分捕获,创建一个链接到源交易的子交易。

为了支持授权,提供商必须覆盖此方法并通过 API 请求捕获付款。

注意:self.ensure_one()

参数

amount_to_capture (float) – 要捕获的金额。

返回

创建的捕获子交易(如果有)。

返回类型

payment.transaction

_send_payment_request()[源代码]

请求处理交易的提供商进行付款。

此方法专门用于通过令牌进行付款,对应于 online_tokenoffline 交易的 operation 字段。

为了支持令牌化,提供商必须覆盖此方法并通过 API 请求进行付款。

注意:self.ensure_one()

返回

_send_refund_request(amount_to_refund=None)[源代码]

请求处理交易的提供商进行退款。

为了使提供商支持退款,它必须重写此方法并发起 API 请求以执行退款。

注意:self.ensure_one()

参数

amount_to_refund (float) – 要退款的金额。

返回

为处理退款请求而创建的退款交易。

返回类型

payment.transaction 的记录集

_send_void_request(amount_to_void=None)[源代码]

请求处理交易的提供商取消支付。

对于部分取消,创建一个与源交易相关联的子交易。

为了使提供商支持授权,它必须重写此方法并发起 API 请求以取消支付。

注意:self.ensure_one()

参数

amount_to_void (float) – 要取消的金额。

返回

如果存在,则为创建的取消子交易。

返回类型

payment.transaction

_set_authorized(state_message=None, extra_allowed_states=())[源代码]

将交易状态更新为 已授权

参数
  • state_message (str) – 将交易设置为 已授权 状态的原因。

  • extra_allowed_states (tuple[str]) – 应被视为源状态 已授权 的允许目标状态的额外状态。

返回

已更新的交易。

返回类型

payment.transaction 的记录集

_set_canceled(state_message=None, extra_allowed_states=())[源代码]

将交易状态更新为 已取消

参数
  • state_message (str) – 将交易设置为 已取消 状态的原因。

  • extra_allowed_states (tuple[str]) – 应被视为源状态 已取消 的允许目标状态的额外状态。

返回

已更新的交易。

返回类型

payment.transaction 的记录集

_set_done(state_message=None, extra_allowed_states=())[源代码]

将交易状态更新为 已完成

参数
  • state_message (str) – 将交易设置为 已完成 状态的原因。

  • extra_allowed_states (tuple[str]) – 应被视为源状态 已完成 的允许目标状态的额外状态。

返回

已更新的交易。

返回类型

payment.transaction 的记录集

_set_error(state_message, extra_allowed_states=())[源代码]

将交易状态更新为 错误

参数
  • state_message (str) – 将交易设置为 错误 状态的原因。

  • extra_allowed_states (tuple[str]) – 应被视为源状态 ‘错误’ 的允许目标状态的额外状态。

返回

已更新的交易。

返回类型

payment.transaction 的记录集

_set_pending(state_message=None, extra_allowed_states=())[源代码]

将交易状态更新为 待处理

参数
  • state_message (str) – 将交易设置为 待处理 状态的原因。

  • extra_allowed_states (tuple[str]) – 应被视为源状态 ‘待处理’ 的允许目标状态的额外状态。

返回

已更新的交易。

返回类型

payment.transaction 的记录集