创建 Token
创建卡 Token 来保护您的客户的卡和账单信息,这样将有助于降低您的
注释:如果您拥有以前供提供商的 Token,则可以
创建卡 Token 请求
若要创建 Token,请将您的请求 POST
到在tokens:tokens
在创建 Token 时,您可以选择在请求中包含 namespace
参数。请单击以下的用命名空间创建 Token 选项卡,查看示例请求。
创建 Token 示例请求
POST https://try.access.worldpay.com/tokens
Token 创建请求正文:
{
"description": "Test Token Description",
"paymentInstrument": {
"type": "card/front",
"cardHolderName": "Sherlock Holmes",
"cardNumber": "4444333322221111",
"cardExpiryDate": {
"month": 5,
"year": 2035
},
"billingAddress": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"address3": "Westminster",
"postalCode": "NW1 6XE",
"city": "London",
"state": "Greater London",
"countryCode": "GB"
}
},
"merchant": {
"entity": "MindPalaceLtd"
}
}
{
"description": "Test Token Description",
"paymentInstrument": {
"type": "card/front",
"cardHolderName": "Sherlock Holmes",
"cardNumber": "4444333322221111",
"cardExpiryDate": {
"month": 5,
"year": 2035
},
"billingAddress": {
"address1": "221B Baker Street",
"address2": "Marylebone",
"address3": "Westminster",
"postalCode": "NW1 6XE",
"city": "London",
"state": "Greater London",
"countryCode": "GB"
}
},
"namespace": "SHOPPER_ID_1234567890",
"merchant": {
"entity": "MindPalaceLtd"
}
}
创建 Token 请求参数的描述:
参数 | 必需 | 描述 |
---|---|---|
description | Token 描述。如果未提供,则会为您创建默认 description 。 | |
tokenExpiryDateTime | Token 不可用的日期/时间,以 ISO 8601 格式表示。如果未提供,则使用默认的过期日期/时间。 | |
paymentInstrument | 包含支付 type 和详情的对象。所有子字段均为必填,但 billingAddress 除外(见下文)。 | |
billingAddress | 包含 billingAddress 信息的对象。如已纳入,则以下字段为必填:
| |
namespace | 会使用命名空间来将最多 16 个卡集合为一组,e.g. 用于一个客户。一个卡可以位于多个命名空间。 | |
schemeTransactionReference | 由 Visa 或 Mastercard 提供的值,用于追踪重复性交易。 | |
merchant | 包含有关商户账户的对象。 | |
merchant.entity | 确定商户账户,以进行开单、报告和对账。有关更多详情,请联系您的实施经理。 |
注释:通常不需要您提供 schemeTransactionReference
的值。如果您正在使用
响应
最佳实践:Access Worldpay 在服务响应的头文件中返回WP-CorrelationId
。我们强烈建议您将此记录下来。我们使用WP-CorrelationId
检查单个服务请求。
一旦您发送了创建 Token 请求,将会返回以下响应之一:
如果这是您第一次创建卡 Token,则会返回一个 201 Created
响应。
您的响应包含一个 href
Token 资源的 tokenPaymentInstrument
对象。该响应还包含后续可用操作链接,e.g.,
{
"tokenPaymentInstrument": {
"type": "card/tokenized",
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0NzI0NE1rdUtjMUFJdjYxVnlibWZuUT0ifQ"
},
"tokenId": "9902480679618049603",
"description": "Test Token Description",
"tokenExpiryDateTime": "2021-06-24T09:19:35Z",
"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",
"fundingType": "credit",
"countryCode": "GB"
},
"_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 的链接会在 tokenPaymentInstrument.href
参数中返回。在收到该响应时,您必须保存该链接。
注释:tokenId
供有兴趣将其 eCom 和 POS 解决方案关联起来的客户使用。有关更多详情,请联系您的实施经理。
200 OK
响应表示您以及创建了卡 Token,而且在您创建 Token 请求中提供的所有数据都与存储在 Access Worldpay 中的数据相匹配。
有时候,即使数据并非完全一样,Token 也可以匹配。例如,如果 Access Worldpay 具有已存档的 billingAddress
,并且您的请求中未提供 billingAddress
,则会返回现有的 billingAddress
。此外,您还会收到 200 OK
响应代码。
现有 Token 资源参考号会在 tokenPaymentInstrument
对象中返回。
{
"tokenPaymentInstrument": {
"type": "card/tokenized",
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0NzI0NE1rdUtjMUFJdjYxVnlibWZuUT0ifQ"
},
"tokenId": "9902480679618049603",
"description": "Test Token Description",
"tokenExpiryDateTime": "2021-06-24T09:19:35Z",
"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",
"fundingType": "credit",
"countryCode": "GB"
},
"_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
}]
}
}
409 Conflict
响应表示您以及创建了卡 Token,但在您创建 Token 请求中提供的某些数据不同于现有 Token 中的数据。该冲突可能由 cardHolderName
、卡到期 month
、卡到期 year
、billingAddress
或 schemeTransactionReference
中的差异化所致。
在这种情况下,Access Worldpay 中存档的数据会被保留,而造成冲突的数据会在 conflicts
对象中返回。如果您希望解决该冲突,则可以使用在响应中返回的tokens:conflicts
注释:
- 发生冲突的
schemeTransactionReference
的行为会与其他字段稍有不同。如果现有 Token 未包含schemeTransactionReference
,那么在存在schemeTransactionReference
的情况下,它会自动更新,以包含您的创建 Token 请求 中的那个值。如果 Token 在其他方面相同,则您会收到200 OK
响应。如果 Token 含有其他冲突字段,则你会得到409 Conflict
响应,但schemeTransactionReference
未列为冲突。 - 如果您试图创建与现有 Token 具有相同银行卡资料的新 Token,则您将在实时环境中收到
409 Conflict
响应,但在测试环境中收到200 OK
响应。 这是因为收到了不同的schemeTransactionReference
,作为每个创建 Token 请求 的一部分。
注释:可选字段:如果现有 Token 具有该字段的值,而您的
现有 Token 资源参考号会在 tokenPaymentInstrument
对象中返回。
{
"tokenPaymentInstrument": {
"type": "card/tokenized",
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0NzI0NE1rdUtjMUFJdjYxVnlibWZuUT0ifQ"
},
"tokenId": "9902480679618049603",
"description": "Test Token Description",
"tokenExpiryDateTime": "2021-06-24T09:19:35Z",
"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",
"fundingType": "credit",
"countryCode": "GB"
},
"conflicts": {
"paymentInstrument": {
"cardHolderName": "Sherlock Holmes"
},
"conflictsExpiryDateTime": "2019-06-24T09:49:35Z"
},
"_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"
},
"tokens:conflicts": {
"href": "https://try.access.worldpay.com/tokens/eyJrIjoxLCJkIjoialRBL0FFelBzcnZpNCtzRGNRemh0ODUrN2hvZ0cyK1JvQ3JKdUtFZnU5UTFsdTdwODVHTUcwYy92VW02MDlJd2pHQllvcW0zanhWQ3p3Zk9OUW9CYUZtQ1hNbFhwM3lhSXlkYVlNYWJnQUdQUHFpRVAxVXVpZHM2Y2tvTjEvOGNJdFQ0WkVlVEJIVWF6T1dlWTlQMkpnPT0ifQ"
},
"curies": [{
"href": "https://try.access.worldpay.com/rels/tokens/{rel}.json",
"name": "tokens",
"templated": true
}]
}
}
注释:如果出现错误,您可以在我们的
后续步骤