付款交易

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

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

如果没有其他具有该前缀的交易,则参考文本对应于前缀。否则,它遵循模式 {computed_prefix}{separator}{sequence_number} ,其中:

  • {computed_prefix} is:

    • 如有提供,为所提供的自定义前缀。

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

    • 如果自定义前缀和kwargs都未填写,则为 'tx-{datetime}'

  • {separator} is the string that separates the prefix from the sequence number.

  • {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_post_processing_values()[源代码]

返回一个字典,用于显示交易状态的值。

如果要提供商处理交易状态显示,则必须重写此方法并返回值字典。提供商特定值优先于通用后处理值字典。

返回的字典包含以下条目:

  • provider_code: The code of the provider.

  • reference: The reference of the transaction.

  • amount: The rounded amount of the transaction.

  • currency_id:交易的货币,作为`res.currency`的id。

  • state: 交易状态:`draft`(草稿)、`pending`(待处理)、`authorized`(已授权)、`done`(已完成)、`cancel`(已取消)或`error`(错误)。

  • state_message: The information message about the state.

  • operation: The operation of the transaction.

  • is_post_processed: Whether the transaction has already been post-processed.

  • landing_route: The route the user is redirected to after the transaction.

  • 额外的供应商特定条目。

注意: self.ensure_one()

返回

处理值的字典。

返回类型

dict

_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) – 供应商发送的通知数据。

返回

如果找到,则返回交易。

返回类型

recordset of payment.transaction

_handle_notification_data(provider_code, notification_data)[源代码]

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

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

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

返回

交易。

返回类型

recordset of payment.transaction

_process_notification_data(notification_data)[源代码]

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

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

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

注意: self.ensure_one()

参数

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

返回

_send_capture_request()[源代码]

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

如果一个提供商要支持授权,它必须重写此方法并发出 API 请求以捕获付款。

注意: self.ensure_one()

返回

_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) – The amount to be refunded.

返回

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

返回类型

recordset of payment.transaction

_send_void_request()[源代码]

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

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

注意: self.ensure_one()

返回

_set_authorized(state_message=None)[源代码]

将交易状态更新为 authorized

参数

state_message (str) – 将交易设置为状态 authorized 的原因。

返回

更新后的交易。

返回类型

recordset of payment.transaction

_set_canceled(state_message=None)[源代码]

将交易状态更新为 cancel

参数

state_message (str) – 将交易设置为状态 cancel 的原因。

返回

更新后的交易。

返回类型

recordset of payment.transaction

_set_done(state_message=None)[源代码]

将交易状态更新为 done

参数

state_message (str) – 将交易设置为状态 done 的原因。

返回

更新后的交易。

返回类型

recordset of payment.transaction

_set_error(state_message)[源代码]

将交易状态更新为 error

参数

state_message (str) – 将交易设置为状态 error 的原因。

返回

更新后的交易。

返回类型

recordset of payment.transaction

_set_pending(state_message=None)[源代码]

将交易状态更新为 pending

参数

state_message (str) – 将交易设置为“pending”状态的原因。

返回

更新后的交易。

返回类型

recordset of payment.transaction