创建已验证 Token
在单个请求中,使用我们的 Verified Tokens API 来协调验证您的客户支付详情并创建 Token。
创建已验证 Token 请求
若要创建已验证 Token,请将您的请求 POST
到在verifiedTokens:cardOnFile
在创建已验证 Token 时,您可以选择纳入 namespace
参数。请选择以下的具有命名空间的卡或具有命名空间的会话选项卡以查看示例。
注释:有关命名空间的更多信息,请参见
POST https://try.access.worldpay.com/verifiedTokens/cardOnFile
已验证 Token 创建请求正文:
{
"description": "Token-Description",
"paymentInstrument": {
"type": "card/plain",
"cardHolderName": "Sherlock Holmes",
"cardNumber": "4444333322221111",
"cardExpiryDate": {
"month": 5,
"year": 2035
},
"cvc": "123",
"billingAddress": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"address3": "Westminster",
"postalCode": "NW1 6XE",
"city": "London",
"state": "Greater London",
"countryCode": "GB"
}
},
"narrative": {
"line1": "The Mind Palace Ltd",
"line2": "Memory265-13-08-1876"
},
"merchant": {
"entity": "MindPalaceLtd"
},
"verificationCurrency": "GBP"
}
{
"description": "Token-Description",
"paymentInstrument": {
"type": "card/plain",
"cardHolderName": "Sherlock Holmes",
"cardNumber": "4444333322221111",
"cardExpiryDate": {
"month": 5,
"year": 2035
},
"cvc": "123",
"billingAddress": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"address3": "Westminster",
"postalCode": "NW1 6XE",
"city": "London",
"state": "Greater London",
"countryCode": "GB"
}
},
"narrative": {
"line1": "The Mind Palace Ltd",
"line2": "Memory265-13-08-1876"
},
"merchant": {
"entity": "MindPalaceLtd"
},
"verificationCurrency": "GBP",
"namespace": "SHOPPER_ID_1234567890"
}
{
"description": "Token-Description",
"paymentInstrument": {
"type": "card/checkout",
"cardHolderName": "Sherlock Holmes",
"sessionHref": "https://try.access.worldpay.com/verifiedTokens/sessions/eyJrIjoxLCJkIjoiZmJIT1pOOXNRc2xFeWQ1NXc5WEVLWHppUlJUWkpiMGozZkZIdWhFdmp4QTd4UmpNcWVmL0xJQzhHUTE0MCt6NyJ9",
"billingAddress": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"address3": "Westminster",
"postalCode": "NW1 6XE",
"city": "London",
"state": "Greater London",
"countryCode": "GB"
}
},
"narrative": {
"line1": "The Mind Palace Ltd",
"line2": "Memory265-13-08-1876"
},
"merchant": {
"entity": "MindPalaceLtd"
},
"verificationCurrency": "GBP"
}
{
"description": "Token-Description",
"paymentInstrument": {
"type": "card/checkout",
"cardHolderName": "Sherlock Holmes",
"sessionHref": "https://try.access.worldpay.com/verifiedTokens/sessions/eyJrIjoxLCJkIjoiZmJIT1pOOXNRc2xFeWQ1NXc5WEVLWHppUlJUWkpiMGozZkZIdWhFdmp4QTd4UmpNcWVmL0xJQzhHUTE0MCt6NyJ9",
"billingAddress": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"address3": "Westminster",
"postalCode": "NW1 6XE",
"city": "London",
"state": "Greater London",
"countryCode": "GB"
}
},
"narrative": {
"line1": "The Mind Palace Ltd",
"line2": "Memory265-13-08-1876"
},
"merchant": {
"entity": "MindPalaceLtd"
},
"verificationCurrency": "GBP",
"namespace": "SHOPPER_ID_1234567890"
}
请求参数的描述:
参数 | 必需 | 描述 |
---|---|---|
description | Token 描述。如果未提供,则会为您创建默认 description 。 | |
tokenExpiryDateTime | Token 将变得不可用的日期/时间,以 ISO 8601 格式表示。如果未提供,则使用默认的过期日期/时间。 | |
paymentInstrument | 包含支付类型和详情的对象。所有子字段均为必填,但 cvc 和 billingAddress 除外(见下文)。 | |
cvc | 卡上的 CVC 号。这会在验证过程中使用,如果没有提供,则验证通过率可能会降低。 | |
billingAddress | 包含账单邮寄地址信息的对象。如已纳入,则以下字段为必填:
| |
merchant | 包含有关商户信息的对象。请联系您的 | |
verificationCurrency | 3 个字符的货币代码。请参见 | |
namespace | 会使用命名空间来将最多 16 个卡集合为一组,e.g. 用于一个客户。一个卡可以位于多个命名空间。 | |
narrative | narrative 对象可帮助您的客户在其对账单中更好地识别您。如果已纳入,则您必须提供子字段 line1 ,用于提供有关商户的基本详情。您还可以选择纳入子字段 line2 ,用于有关支付或商户的其他上下文。有关更多信息,请参见 |
使用会话
如果您使用paymentInstrument.type
会从 card/plain
更改为 card/checkout
,而且会使用 sessionHref
,而不是 cardNumber
、cardExpiryDate
和 cvc
。
sessionHref
看起来如下:
https://try.access.worldpay.com/verifiedTokens/session/eyJrIjoxLCJkIjoicGtubGtlWDJzeTVTdG1Qa3F5WlZ0emdJY1JEbjIyZVJ6KzlOR245YWlOMFVsVytCYitTa1NWa3l0RU1DQjZXYiJ9
https://try.access.worldpay.com/verifiedTokens/session/eyJrIjoxLCJkIjoicGtubGtlWDJzeTVTdG1Qa3F5WlZ0emdJY1JEbjIyZVJ6KzlOR245YWlOMFVsVytCYitTa1NWa3l0RU1DQjZXYiJ9
注释:会话具有 1 分钟的使用寿命,并且您只能使用一次。
响应
最佳实践:Access Worldpay 在服务响应的头文件中返回 WP-CorrelationId
。我们强烈建议您将此记录下来。我们使用 WP-CorrelationId
检查单个服务请求。
一旦您发送了请求,将会返回以下响应之一:
如果您的已验证 Token 成功,则会返回验证的 outcome
和以下响应代码之一:
201 Created
200 OK
409 Conflict
注释:如果您试图创建与现有 Token 具有相同银行卡资料的新的已验证 Token,则您将在实时环境中收到 409 Conflict
响应,但在测试环境中收到 200 OK
响应。这是因为收到了不同的 schemeTransactionReference
,作为每个
有关这些响应代码的更多信息,请参见
该响应包含以下嵌套的结果:
注释:大部分但并非全部发卡机构会发送 schemeTansactionReference
。
{
"_embedded": {
"verification": {
"outcome": "verified",
"schemeTransactionReference": "000000000000020005060720116005060",
"checkedAt": "2020-08-18T14:29:10.641180Z",
"riskFactors": [
{
"risk": "matched",
"type": "cvc"
},
{
"risk": "matched",
"detail": "postcode",
"type": "avs"
},
{
"risk": "matched",
"detail": "address",
"type": "avs"
}
],
"paymentInstrument": {
"type": "card/plain",
"card": {
"expiryDate": {
"month": 5,
"year": 2035
},
"brand": "visa",
"fundingType": "debit",
"paymentAccountReference": "reference"
}
},
"_links": {
"verifications:verification": {
"href": "https://try.access.worldpay.com/verifications/accounts/{resource}"
},
"curies": [
{
"href": "https://try.access.worldpay.com/rels/verifications/accounts/{rel}",
"name": "verifications",
"templated": true
}
]
}
},
"token": {
"tokenId": "9902480679618049603",
"description": "Test Token Description",
"tokenExpiryDateTime": "2021-08-18T14:30:40Z",
"schemeTransactionReference": "000000000000020005060720116005060",
"tokenPaymentInstrument": {
"type": "card/tokenized",
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0NzI0NE1rdUtjMUFJdjYxVnlibWZuUT0ifQ"
},
"paymentInstrument": {
"type": "card/masked",
"cardNumber": "4444********1111",
"cardHolderName": "Sherlock Holmes",
"cardExpiryDate": {
"month": 5,
"year": 2035
},
"billingAddress": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"address3": "Westminster",
"postalCode": "NW1 6XE",
"city": "London",
"state": "Greater London",
"countryCode": "GB"
},
"bin": "444433",
"brand": "VISA"
},
"_links": {
"tokens:token": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0NzI0NE1rdUtjMUFJdjYxVnlibWZuUT0ifQ"
},
"tokens:description": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0MWJVbkh1WTFGZExUNXJxc04va1ZoTFVzYW1OU1lxSFE2NHI1c2JkY1pWaSJ9"
},
"tokens:cardHolderName": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0d3ltd21ieGo3TlZLYzRYSkExOUhSdUpLN2N3VVc5WUk3czRUTW1RQ2JLdjFnVXlzakdPSXdWWkRhZkZyUmlMd3c9PSJ9"
},
"tokens:cardExpiryDate": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0d3ltd21ieGo3TlZLYzRYSkExOUhSdUpLN2N3VVc5WUk3czRUTW1RQ2JLdkVpVW5GNnBsZThNTXNQWTRGbzFzTXc9PSJ9"
},
"tokens:billingAddress": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0d3ltd21ieGo3TlZLYzRYSkExOUhSdFpSdXFxbWZlNVl1TkpHZEVvZXN3MTlCU0lmdCtxSTUyVDJSdXlmSTIwM3c9PSJ9"
},
"tokens:schemeTransactionReference": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoiSENXWFZQZjNIZ1V3dnpDMElJZS9Zdmc4M0pYM3dDWEJTVnQrWVlacXdDUXFFKzhzaC8xNSs2d3NkTTdFWUFNVU9tdXBmUlZGeVNDY2dPMkhKV2NIcGc9PSJ9"
},
"curies": [
{
"href": "https://try.access.worldpay.com/rels/tokens/{rel}.json",
"name": "tokens",
"templated": true
}
]
}
}
}
}
注释:以上是对成功验证已验证 Token 创建的响应。有关各自嵌套的响应数据的更多信息,请参见
您可以
GET https://try.access.worldpay.com/verifications/accounts/{resource}
如果验证失败,则会返回 206 Partial Content
HTTP 响应状态码。由于创建的 Token 未经验证,响应正文将包含指向
{
"_embedded": {
"verification": {
"outcome": "not verified",
"code": "106",
"description": "INVALID ACCOUNT",
"checkedAt": "2020-08-18T14:29:10.641180Z",
"riskFactors": [
{
"risk": "not_matched",
"type": "cvc"
},
{
"risk": "matched",
"type": "avs",
"detail": "postcode"
},
{
"risk": "not_matched",
"type": "avs",
"detail": "address"
}
],
"paymentInstrument": {
"type": "card/plain",
"card": {
"brand": "visa",
"fundingType": "debit"
}
},
"_links": {
"verifications:verification": {
"href": "https://try.access.worldpay.com/verifications/accounts/{resource}"
},
"curies": [
{
"href": "https://try.access.worldpay.com/rels/verifications/accounts/{rel}",
"name": "verifications",
"templated": true
}
]
}
},
"token": {
"tokenId": "9902480679618049603",
"description": "Test Token Description",
"tokenExpiryDateTime": "2021-08-18T14:30:40Z",
"tokenPaymentInstrument": {
"type": "card/tokenized",
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0NzI0NE1rdUtjMUFJdjYxVnlibWZuUT0ifQ"
},
"paymentInstrument": {
"type": "card/masked",
"cardNumber": "4444********1111",
"cardHolderName": "Sherlock Holmes",
"cardExpiryDate": {
"month": 5,
"year": 2035
},
"billingAddress": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"address3": "Westminster",
"postalCode": "NW1 6XE",
"city": "London",
"state": "Greater London",
"countryCode": "GB"
},
"bin": "444433",
"brand": "VISA"
},
"_links": {
"tokens:token": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0NzI0NE1rdUtjMUFJdjYxVnlibWZuUT0ifQ"
},
"tokens:description": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0MWJVbkh1WTFGZExUNXJxc04va1ZoTFVzYW1OU1lxSFE2NHI1c2JkY1pWaSJ9"
},
"tokens:cardHolderName": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0d3ltd21ieGo3TlZLYzRYSkExOUhSdUpLN2N3VVc5WUk3czRUTW1RQ2JLdjFnVXlzakdPSXdWWkRhZkZyUmlMd3c9PSJ9"
},
"tokens:cardExpiryDate": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0d3ltd21ieGo3TlZLYzRYSkExOUhSdUpLN2N3VVc5WUk3czRUTW1RQ2JLdkVpVW5GNnBsZThNTXNQWTRGbzFzTXc9PSJ9"
},
"tokens:billingAddress": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0d3ltd21ieGo3TlZLYzRYSkExOUhSdFpSdXFxbWZlNVl1TkpHZEVvZXN3MTlCU0lmdCtxSTUyVDJSdXlmSTIwM3c9PSJ9"
},
"curies": [
{
"href": "https://try.access.worldpay.com/rels/tokens/{rel}.json",
"name": "tokens",
"templated": true
}
]
}
}
}
}
如果您获得了 "outcome": "not verified"
,下一个逻辑步骤是要求您的客户重新输入、尝试不同的卡或提供新卡。然后,您可以再次尝试验证 Token。
对于 "outcome": "not verified"
,您会收到 "code": "65"
。最可能的原因是,发卡机构希望在验证 Token 之前对客户进行身份验证。在这种情况下,我们将创建一个未经验证的 Token,并建议您继续使用我们的
- 若您随后想要一次性付款,请直接转至我们的
Payments API 。 - 如果您想要以重复性身份(e.g. 分期或订阅)使用未经验证的 Token,请前往我们的
Verifications API ,单独验证 Token。然后,您可以存储您的已验证 Token,以供将来使用或立即使用。
注释:如果出现错误,您可以在我们的
后续步骤