- 集成指南
- 使用多个付款详细信息来源
使用多个付款详细信息来源
执行多个 Mastercard GatewayAPI 调用(例如,Pay、Authorize、Refund、Capture、Save、 Initiate Authentication、Authenticate Payer)时,必须提供卡详细信息。 这些付款详细信息可以使用多个“来源”指定。
支持的来源
- 请求字段: 请求中直接指定的付款详细信息(例如卡号、卡有效期、卡安全码)。
- 会话: 按付款会话存储的付款详细信息。
- 卡令牌: 按令牌存储在安全库中的付款详细信息(如果使用 Tokenization)。
优先规则
如果卡详细信息(例如卡号)在单个请求中提供多次,因为它包含在两个或多个来源中,则优先规则将确定所使用的来源。 优先顺序如下:
- API 请求字段
- 会话标识符
- 卡令牌
换言之,包含在 API 请求字段中的数据将覆盖会话中存储的数据,而后者将覆盖令牌详细信息。
例如,如果您在 Pay 请求中同时包含会话标识符(包含卡号、卡过期日期和 CSC)和令牌(包含卡号和卡过期日期),那么基于优先顺序,在会话标识符中指定的卡详细信息将用于财务交易。
示例
您可以使用其中一个来源或者多个来源组合来指定付款详情。
使用来自令牌和会话的详细信息执行交易
您希望使用存储在令牌中的卡号和过期日期以及在会话中收集的 CSC 来提交 Pay 操作。 以下示例请求显示如何在 Pay 请求中同时提供令牌和会话来源:
HTTP 方法 | PUT |
URL | https://network.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://network.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(卡号保持不变)。