使用会话可以实现更为复杂的集成,在这些集成中,请求的不同部分在付款流的不同阶段或通过不同渠道捕获。 例如,Hosted Session 和电子钱包(例如,Masterpass)的付款流使用会话来收集和存储敏感的付款人信息。 由于您不需要在服务器上处理或存储任何付款详细信息,因此可以降低 PCI 合规性和实施成本。
使用会话
创建会话
作为第一步,您必须创建会话,然后您可以使用希望存储在会话中的请求字段和值更新会话。
您可以使用以下方法创建会话:
更新会话
您可以使用以下方法在会话中添加或更新请求字段:
您无法从会话中删除字段,只能覆盖现有字段的值。
使用会话
包含请求字段和值的会话可以在以下任何一项操作中使用:
建议您使用 Retrieve Session 操作来检索会话详细信息,并在发起付款或令牌化操作前检查会话内容。
您可以使用同一个会话执行多项操作,例如,Pay 和 Tokenization。 如果您希望付款并保存卡详细信息,这很有用。 请注意,参考会话的操作的 Web Services Integration 版本必须与更新或向会话中添加请求字段时使用的 Web Services Integration 版本匹配。
在您开始参考会话的操作后(Open Wallet
、Update Session
、Update Session From Wallet
除外),卡安全码将被删除(如果存储在会话中)。 这是遵守 PCI 法规的必要做法。 如果您希望保存卡详细信息供以后使用,您可以通过使用会话执行 Tokenization 操作来实现此目的。
优先规则
提交操作请求时,会话中存储的请求字段和值仅在您未在请求中直接提供这些值时使用。
从会话中检索字段
您可以通过提供会话识别码来获取会话中存储的请求字段和值。
Retrieve Session API 参考[REST][NVP]
根据会话内容做出业务决策
如果您根据从会话获得的数据做出业务决策,则应该使用会话的乐观锁定功能。 这可确保您用于做出决策的数据与用于处理请求操作的数据相同。
若要使用乐观锁功能,您应该:
- 使用
Retrieve Session
操作安全地检索会话内容。
- 在返回的会话内容中记录
session.version
值。
- 根据返回的会话内容做出业务决定。
- 在将请求操作提交到网关时,在操作中将
session.version
与会话识别码一并传送。
如果会话内容自您记录 session.version
后发生了变化,网关将拒绝操作并返回 error.cause=INVALID_REQUEST
。
根据会话内容做业务决定的示例包括:
- 根据付款人提供的卡类型计算附加费金额。
- 根据付款人提供的送货地址计算运费金额。
Retrieve Session API 参考[REST][NVP]
Pay[REST][NVP]