付款会话

付款会话或简单会话是参考会话的操作的所有请求字段和值的暂时容器。 这样您可以在操作中使用会话来参考请求字段和值,而不是在操作请求中直接提供这些信息。 当 Payment Gateway 收到参考会话的操作时,其通过组合会话中的请求字段和请求中直接提供的字段来建立最终请求。

使用会话可以实现更为复杂的集成,在这些集成中,请求的不同部分在付款流的不同阶段或通过不同渠道捕获。 例如,Hosted Session 和电子钱包(例如,Masterpass)的付款流使用会话来收集和存储敏感的付款人信息。 由于您不需要在服务器上处理或存储任何付款详细信息,因此可以降低 PCI 合规性和实施成本。

主要优点 Copied to Clipboard

  • 您不处理或存储任何付款详细信息,因而降低了 PCI 合规成本。
  • 由于不需要直接处理会话中存储的请求字段的值,因此使集成更轻松。
  • 您的员工只能有限访问付款人的详细信息,因而减少了内部欺诈。
  • 允许您更新会话中存储的请求字段和值。 当信用卡过期或其他付款人详细信息改变时,此功能非常有用。
  • 允许您通过指定会话识别码来检索会话中包含的请求字段和值。

使用会话 Copied to Clipboard

创建会话

作为第一步,您必须创建会话,然后您可以使用希望存储在会话中的请求字段和值更新会话。

您可以使用以下方法创建会话:

  • Create Session 调用,其返回唯一的会话识别码,您必须在后续请求中提供此识别码以引用会话内容。

    您可以选择提供身份验证限制 (session.authenticationLimit),其指示使用会话 ID 作为密码可以提交给网关的操作数。 如果未提供,网关将设置默认值。

    它返回以下字段:

    • session.id: 您必须在后续请求中提供以引用会话内容的唯一会话识别码。
    • session.authenticationLimit: 您在请求中提供的限制或网关的默认值。
    • session.aes256Key: 您可以用来解密通过付款人浏览器或移动设备传递到您网站的敏感数据的密钥。
    • session.version: 您可以使用此字段来实现会话内容的乐观锁。
    • session.updateStatus: 上次尝试修改会话的结果的摘要。

    Create Session API 参考[REST][NVP]

  • Hosted Session 服务

    session.js 参考[JavaScript]

更新会话

您可以使用以下方法在会话中添加或更新请求字段:

您无法从会话中删除字段,只能覆盖现有字段的值。
使用会话

包含请求字段和值的会话可以在以下任何一项操作中使用:

建议您使用 Retrieve Session 操作来检索会话详细信息,并在发起付款或令牌化操作前检查会话内容。

您可以使用同一个会话执行多项操作,例如,Pay 和 Tokenization。 如果您希望付款并保存卡详细信息,这很有用。 请注意,参考会话的操作的 Direct API 版本必须与更新或向会话中添加请求字段时使用的 Direct API 版本匹配。

在您开始参考会话的操作后(Open WalletUpdate SessionUpdate Session From Wallet 除外),卡安全码将被删除(如果存储在会话中)。 这是遵守 PCI 法规的必要做法。 如果您希望保存卡详细信息供以后使用,您可以通过使用会话执行 Tokenization 操作来实现此目的。

优先规则

提交操作请求时,会话中存储的请求字段和值仅在您未在请求中直接提供这些值时使用

从会话中检索字段

您可以通过提供会话识别码来获取会话中存储的请求字段和值。

Retrieve Session API 参考[REST][NVP]

根据会话内容做出业务决策 Copied to Clipboard

如果您根据从会话获得的数据做出业务决策,则应该使用会话的乐观锁定功能。 这可确保您用于做出决策的数据与用于处理请求操作的数据相同。

若要使用乐观锁功能,您应该:

  • 使用 Retrieve Session 操作安全地检索会话内容。
  • 在返回的会话内容中记录 session.version 值。
  • 根据返回的会话内容做出业务决定。
  • 在将请求操作提交到网关时,在操作中将 session.version 与会话识别码一并传送。

如果会话内容自您记录 session.version 后发生了变化,网关将拒绝操作并返回 error.cause=INVALID_REQUEST

根据会话内容做业务决定的示例包括:

  • 根据付款人提供的卡类型计算附加费金额。
  • 根据付款人提供的送货地址计算运费金额。

Retrieve Session API 参考[REST][NVP]

Pay[REST][NVP]