- 集成指南
- 使用多个付款详细信息来源
使用多个付款详细信息来源
执行多个 QNB ALAHLI<<webServicesIntegration>> 调用(例如,Pay、Authorize、Refund、Capture、Save、 Initiate Authentication、Authenticate Payer)时,必须提供卡详细信息。这些付款详细信息可以使用多个“来源”指定。
支持的来源
- 请求字段:直接在请求中指定的付款详细信息(例如,卡号、卡过期日期、卡安全码)。
- 会话:存储在付款会话中的付款详细信息。
- 卡令牌:按令牌存储在安全库中的付款详细信息(如果使用 <<tokenization>>)。
优先规则
如果卡详细信息(例如,卡号)由于包含在两个或更多来源中而在一个请求中多次提供,优先规则将确定使用哪个来源。优先顺序如下所示︰
- <<webServicesIntegration>> 请求字段
- 会话识别码
- 卡令牌
换言之,包含在 <<webServicesIntegration>> 请求字段中的数据将覆盖会话中存储的数据,而后者将覆盖令牌详细信息。
例如,如果您在 Pay 请求中同时包含会话识别码(包含卡号、卡过期日期和 CSC)和令牌(包含卡号和卡过期日期),那么基于优先顺序,在会话识别码中指定的卡详细信息将用于财务交易。
示例
您可以使用这些来源中的一个或组合来指定付款详细信息。
使用来自令牌和会话的详细信息执行交易
您希望使用存储在令牌中的卡号和过期日期以及在会话中收集的 CSC 来提交 Pay 操作。以下示例请求显示如何在 Pay 请求中同时提供令牌和会话来源:
HTTP 方法 | PUT |
URL | https://qnbalahli.test.gateway.mastercard.com/api/rest/version/72/merchant/<merchant>/order/<orderId>/transaction/<transactionId> |
JSON |
{ "apiOperation": "PAY", "session": { "id": "SESSION000177777777777777777777" }, "sourceOfFunds": { "token": "9999999999999999" }, "order": { "amount": "34.00", "currency": "AUD" } } |
上方 JSON 假设:
- 识别码为 "SESSION000177777777777777777777" 的会话之前已创建并包含 CSC。
- 识别码为 "9999999999999999" 的令牌之前已存储并包含卡号和过期日期。
使用新过期日期更新令牌
您想要使用 Tokenization 操作更新存储的令牌的过期日期(但不更改卡号)。您在请求 URL 中提供的令牌识别您希望更新的令牌。提供此与付款详细信息来源相同的令牌将导致重用之前存储的详细信息。这意味着您无需重新捕获卡号。如果您在请求的“卡详细信息”部分提供新的过期日期,该值将覆盖令牌中已经存储的过期日期(参见优先规则)。
以下示例请求显示如何使用 Tokenization 操作提供付款详细信息和令牌来源:
HTTP 方法 | PUT |
URL | https://qnbalahli.test.gateway.mastercard.com/api/rest/version/72/merchant/<merchant>/token/9999999999999999 |
JSON |
{ "sourceOfFunds": { "provided": { "card": { "expiry": { "month": "05", "year": "13" }, "number": "5123456789012346" } }, "type": "CARD" } } |
上方 JSON 假设:
- ID 为 "9999999999999999" 的令牌之前已存储并包含卡号和过期日期。
此操作的结果将为令牌 "9999999999999999" 现在的过期日期为 05/13(卡号保持不变)。