Translation disclaimer

Documentation is written in English and subsequently translated. This page, therefore, might not have the most up-to-date content. If any questions arise relating to the accuracy of the translated content, please refer to the English version of the page.

Menu

验证客户账户


若要验证客户的账户,您必须向支持的资源之一发送验证请求。

智能验证

通过智能验证,Worldpay 可选择要在验证中使用的金额。

智能验证请求

您可以在以下这些资源之一中 POST 您的智能验证请求:

oneTime 智能验证

对于 oneTime 验证,请将您的请求 POST 到在查询验证根资源请求中收到的 verifications:oneTime 操作链接中。

POST https://try.access.worldpay.com/verifications/accounts/intelligent/oneTime


cardOnFile 智能验证

cardOnFile 支付由客户使用已存储的支付工具详情来发起。

对于 cardOnFile 验证,请将您的请求 POST 到在查询验证根资源请求中收到的 verifications:cardOnFile 操作链接中,以实现持卡人启动的交易 (CIT) 合规。

POST https://try.access.worldpay.com/verifications/accounts/intelligent/cardOnFile


示例请求正文

对仅包含必填字段的 cardOnFileoneTime 请求进行智能验证:

Copied!
{
    "currency": "GBP",
    "merchant": {
        "entity": "MindPalaceLtd"
    },
    "paymentInstrument": {
        "type": "card/plain",
        "cardNumber": "4444333322221111",
        "cardExpiryDate": {
            "month": 1,
            "year": 2035
        },
        "cardHolderName": "Sherlock Holmes"
    },
    "transactionReference": "Memory265-13/08/1876"
}
{
    "currency": "GBP",
    "merchant": {
        "entity": "MindPalaceLtd"
    },
    "paymentInstrument": {
        "type": "card/tokenized",
        "href": "https://try.access.worldpay.com/tokens/{}"
    },
    "transactionReference": "Memory265-13/08/1876"
}

您的必需智能验证请求参数的描述:

参数必需描述
currency3 位数货币代码。
请参见支持的货币列表。
transactionReference由您生成的独特参考号,用于在支付的整个生命周期中对其进行识别。请参见交易参考格式,了解更多详情和最佳实践。
paymentInstrument包含您的客户支付详情的对象。
paymentInstrument.type包含您的客户支付类型的对象。可能的值:
  • card/plain
  • card/tokenized
paymentInstrument.cardNumber包含您的客户支付卡号的对象。是 paymentInstrument card/plain 所必需的。
paymentInstrument.cardExpiryDate包含您的客户支付卡过期日期的对象。
paymentInstrument.href包含您的 Token 的对象。是 paymentInstrument "card/tokenized" 所必需的。
merchant包含有关商户信息的对象。
merchant.entity确定您验证的方向,以协助开单、报告和对账。如需更多信息,请联系您的客户关系经理或实施经理。

验证请求中的可选字段

动态验证

我们的动态验证服务可为您提供有关验证所用金额的细化控制。

动态验证请求

您可以将您的验证请求 POST 到其中一个以下这些资源中:

dynamicOneTime 验证

对于 dynamicOneTime 验证,请将您的请求 POST 到在查询验证根资源请求中收到的 verifications:dynamicOneTime 操作链接中。

POST https://try.access.worldpay.com/verifications/accounts/dynamic/oneTime


dynamicCardOnFile 验证

cardOnFile 支付由客户使用已存储的支付工具详情来发起。

对于 dynamicCardOnFile 验证,请将您的请求 POST 到在查询验证根资源请求中收到的 verifications:dynamicCardOnFile 操作链接中,以实现持卡人启动的交易 (CIT) 合规。

POST https://try.access.worldpay.com/verifications/accounts/dynamic/cardOnFile


示例请求正文

对仅包含必填字段的 cardOnFileoneTime 请求进行动态验证:

Copied!
{
    "transactionReference": "Memory265-13/08/1876",
    "merchant": {
        "entity": "MindPalaceLtd"
    },
    "instruction": {
        "value": {
            "currency": "GBP",
            "amount": 250
        },
        "paymentInstrument": {
            "type": "card/plain",
            "cardNumber": "4444333322221111",
            "cardHolderName": "Sherlock Holmes",
            "cardExpiryDate": {
                "month": 12,
                "year": 2023
            }
        }
    }
}
{
    "transactionReference": "Memory265-13/08/1876",
    "merchant": {
        "entity": "MindPalaceLtd"
    },
    "instruction": {
        "value": {
            "currency": "GBP",
            "amount": 250
        },
        "paymentInstrument": {
            "type": "card/tokenized",
            "href": "https://try.access.worldpay.com/tokens/{}"
        }
    }
}

您的必需动态验证请求参数的描述:

参数必需描述
instruction包含与支付相关的所有信息的对象。
value.currency3 位数货币代码。
请参见支持的货币列表。
value.amount支付金额。这是一个包含小数位的整数,e.g.,如果小数位是二,则 250 就表示 2.50.您可以在我们的货币表中查找相关小数位。
transactionReference由您生成的独特参考号,用于在支付的整个生命周期中对其进行识别。请参见交易参考格式,了解更多详情和最佳实践。
instruction.paymentInstrument包含您的客户支付详情的对象。
paymentInstrument.type包含您的客户支付类型的对象。可能的值:
  • card/plain
  • card/tokenized
paymentInstrument.cardNumber包含您的客户支付卡号的对象。
paymentInstrument.cardExpiryDate包含您的客户支付卡过期日期的对象。
merchant包含有关商户信息的对象。
merchant.entity确定您验证的方向,以协助开单、报告和对账。如需更多信息,请联系您的客户关系经理

验证请求中的可选字段


3DS

您可以选择为智能验证和动态验证请求提交 3DS 参数。

若要获得 customer 身份验证对象,您必须使用我们的3DS API填写身份验证请求

您的 3DS 授权请求中的参数描述

参数必需描述
customer包含您的客户验证结果的对象。有关更多详情,请参见3DS 验证
authentication.type3DS
authentication.version用于处理交易的 3DS 版本。
对于 3DS1 - 1.0.2
对于 3DS2 - 2.1.02.2.0

注释:对于授权中的 Mastercard 身份校验交易是必需的。

authentication.eci电子商务指标 (ECI)。
表示3DS 验证的结果。
  • 02 或 05 - 完全身份验证的交易
  • 01 或 06 - 尝试身份验证交易
  • 00 或 07 - 非 3-D 安全交易
  • Mastercard - 02、01、00
  • Visa - 05、06、07
  • Amex - 05、06、07
  • JCB - 05、06、07
  • Diners - 05、06、07
authentication.authenticationValue提供 3DS 验证结果证据的密码值。
  • Visa - 持卡人身份验证的验证值 (CAVV)
  • Mastercard - 通用持卡人身份验证字段 (UCAF)
对于版本 3DS1: authentication.authenticationValue 是必需的 - 如果 authentication.eci 值为 01、02 或 05。
对于版本 3DS2: authentication.authenticationValue 是必需的 - 如果 authentication.eci 值是 01、02、05 或 06。
authentication.authenticationValue 必须最多 28 位,并且必须采用 base64 编码。
authentication.transactionId是必需的 - 如果 authentication.eci 值为 01、02、05 或 06。
由发行机构生成的独特身份验证交易识别码。

对于版本 3DS1: transactionId 必须为 base64 编码且长度为 28 位数。
对于版本 3DS2: transactionId 必须为 UUID 且长度为 36 个字符。

Apple Pay 解码

您可以选择为智能和动态 cardOnFile 请求提交 Apple Pay 解码参数。

验证请求示例:

Copied!
{
   "currency":"EUR",
   "paymentInstrument":{
      "type":"card/networkToken+applepay",
      "cardHolderName":"Sherlock Holmes",
      "cardExpiryDate":{
         "month":1,
         "year":2019
      },
      "dpan":"4444333322221111"
   },
   "narrative":{
      "line1":"The Mind Palace Ltd",
      "line2":"Memory265-13/08/1876"
   },
   "merchant":{
      "entity":"MindPalaceLtd"
   },
   "transactionReference":"Memory265-13/08/1876",
   "customer":{
      "authentication":{
         "type":"card/networkToken",
         "eci":"05",
         "authenticationValue":"MTIzNDU2Nzg5MDEyMzQ1Njc4OTA="
      }
   }
}
{
   "merchant":{
      "entity":"MindPalaceLtd"
   },
   "transactionReference":"Memory265-13/08/1876",
   "instruction":{
      "value":{
         "amount":100,
         "currency":"GBP"
      },
      "paymentInstrument":{
         "type":"card/networkToken+applepay",
         "cardHolderName":"Sherlock Holmes",
         "cardExpiryDate":{
            "month":1,
            "year":2019
         },
         "dpan":"4444333322221111"
      },
      "narrative":{
         "line1":"The Mind Palace Ltd",
         "line2":"Memory265-13/08/1876"
      }
   },
   "customer":{
      "authentication":{
         "type":"card/networkToken",
         "eci":"05",
         "authenticationValue":"MTIzNDU2Nzg5MDEyMzQ1Njc4OTA="
      }
   }
}

您的 Apple Pay 解码授权请求中的参数描述

参数必需描述
paymentInstrument.type包含您的客户支付类型的对象;card/networkToken+applepay
paymentInstrument.dpan包含设备主账号的对象。
customer包含 Apple Pay 解码所需的身份验证信息的对象。
authentication.typecard/networkToken
authentication.eci电子商务指标 (ECI)。
表示 Apple Pay 解码响应中所含的值。
authentication.authenticationValue提供 Apple Pay 解码验证结果证据的密码值。

重要信息:我们目前在响应中不为该 paymentInstrument 返回操作链接。此功能仍在开发之中。与此同时,您可以使用我们的 payments:migrateCardOnFileAuthorize 操作链接来接受支付

验证响应

智能动态验证的响应均相同。

您会接收到:

最佳实践:Access Worldpay 在服务响应的头文件中返回WP-CorrelationId。我们强烈建议您将此记录下来。我们使用WP-CorrelationId检查单个服务请求。

  • 201 HTTP 响应代码
  • 验证 outcomeverifiednot verified
  • 发卡机构响应代码和描述not verified仅结果)
  • schemeTransactionReference 仅适用于预存卡号 (并非所有发卡机构都会返回此信息)
  • riskFactors
  • A paymentInstrument

注释:至少包含请求中发送的 paymentInstrument.typepaymentInstrument。如果您想收到更多银行卡元数据,则必须启用此功能。有关更多信息,请联系您的实施经理。

Copied!
{
    "outcome": "verified",
    "checkedAt": "2018-09-01T10:37:36.923Z",
    "riskFactors": [{
            "risk": "matched",
            "type": "cvc"
        },
        {
            "risk": "matched",
            "detail": "postcode",
            "type": "avs"
        },
        {
            "risk": "matched",
            "detail": "address",
            "type": "avs"
        }
    ],
    "_links": {
        "verifications:verification": {
            "href": "https://try.access.worldpay.com/verifications/accounts/{resource}"
        },
        "curies": [{
            "name": "verifications",
            "href": "https://try.access.worldpay.com/rels/verifications/accounts/{rel}",
            "templated": true
        }]
    }
}
{
    "outcome": "verified",
    "checkedAt": "2019-11-01T10:37:36.923Z",
    "schemeTransactionReference": "000000000000020005060720116005060",
    "riskFactors": [{
            "risk": "matched",
            "type": "cvc"
        },
        {
            "risk": "matched",
            "detail": "postcode",
            "type": "avs"
        },
        {
            "risk": "matched",
            "detail": "address",
            "type": "avs"
        }
    ],
    "_links": {
        "verifications:verification": {
            "href": "https://try.access.worldpay.com/verifications/accounts/{resource}"
        },
        "payments:cardonFileAuthorize": {
            "href": "https://try.access.worldpay.com/payments/authorizations/cardonFile/{resource}"
        },
        "payments:recurringAuthorize": {
            "href": "http://try.access.worldpay.com/payments/authorizations/recurring/{resource}"
        },
        "payments:recurringSale": {
            "href": "https://try.access.worldpay.com/payments/sales/recurring/{resource}"
        },
        "curies": [{
            "name": "verifications:verification",
            "href": "https://try.access.worldpay.com/rels/verifications/accounts/{rel}",
            "templated": true
        }]
    }
}
{
    "outcome": "verified",
    "checkedAt": "2018-09-01T10:37:36.923Z",
    "riskFactors": [{
            "risk": "matched",
            "type": "cvc"
        },
        {
            "risk": "matched",
            "detail": "postcode",
            "type": "avs"
        },
        {
            "risk": "matched",
            "detail": "address",
            "type": "avs"
        }
    ],
    "paymentInstrument": {
        "type": "card/plain",
        "card": {
            "number": {
                "bin": "444433",
                "last4Digits": "1111"
            },
            "countryCode": "GB",
            "expiryDate": {
                "month": 12,
                "year": 2029
            },
            "brand": "visa",
            "fundingType": "debit",
            "issuer": {
                "name": "cardIssuer"
            },
            "category": "consumer",
            "paymentAccountReference": "reference"
        }
    },
    "_links": {
        "verifications:verification": {
            "href": "https://try.access.worldpay.com/verifications/accounts/{resource}"
        },
        "curies": [{
            "name": "verifications",
            "href": "https://try.access.worldpay.com/rels/verifications/accounts/{rel}",
            "templated": true
        }]
    }
}
{
    "outcome": "not verified",
    "code": "106",
    "description": "INVALID ACCOUNT",
    "refusalAdvice": {
        "code":"04"
    },
    "checkedAt": "2019-11-01T10:37:36.923Z",
    "riskFactors": [{
            "risk": "matched",
            "type": "cvc"
        },
        {
            "risk": "matched",
            "detail": "postcode",
            "type": "avs"
        },
        {
            "risk": "matched",
            "detail": "address",
            "type": "avs"
        }
    ],
    "_links": {
        "verifications:verification": {
            "href": "https://try.access.worldpay.com/verifications/accounts/{resource}"
        },
        "curies": [{
            "name": "verifications:verification",
            "href": "https://try.access.worldpay.com/rels/verifications/accounts/{rel}",
            "templated": true
        }]
    }
}

参数 checkedAt 包含显示验证何时执行的时间戳以及验证地点信息,以备未来查询。

最佳实践:如果您收到了 not verifiedoutcome,则意味着您的客户未通过验证。我们强烈建议您拒绝通过此种支付工具进行的支付。

操作链接(资源)描述
verifications:verification显示您验证请求结果的链接。
payments:recurringAuthorize重复性协议中的后续支付。此资源将作为成功verifications:cardOnFileverifications:dynamicCardOnFilepayments:migrateRecurringAuthorize请求的结果返回。
payments:CardOnFileAuthorize预存卡号协议中的后续支付。该资源只会作为成功verifications:cardOnFileverifications:dynamicCardOnFilepayments:migrateCardOnFileAuthorize请求结果返回。
payments:recurringSale重复性协议中的后续支付。此资源仅会作为成功verifications:cardOnFileverifications:dynamicCardOnFile请求的结果返回。

注释:如果出现错误,您可以在我们的错误参考中获取更多信息。

风险因素

我们建议您提供 cvcverificationAddress 以提高成功验证的概率。

下表描述了响应参数:

参数描述
riskFactors.type返回 avscvc
riskFactors.detail仅限 avs
返回 postcodeaddress
riskFactors.risk返回 not_checkednot_matchednot_suppliedmatched

支付工具

如果您启用了元数据功能,则我们只会返回 paymentInstrument 卡元数据。

下表描述了响应参数:

参数描述
paymentInstrument.type返回在您的请求中提供的 paymentInstrument.type。可以是 card/plaincard/tokenized
paymentInstrument.card包含请求中提供的卡/Token 的所有附加元数据的对象。
paymentInstrument.card.number包含卡的 binlast4Digits 的对象。
paymentInstrument.card.countryCode发卡机构的国家/地区代码。
paymentInstrument.card.expiryDate包含您的客户支付卡过期日期的对象。
paymentInstrument.card.brand银行卡方案,e.g. visamastercard
paymentInstrument.card.fundingType可以是 debitcredit
paymentInstrument.card.issuer.name发卡机构的名称。
paymentInstrument.card.paymentAccountReference与卡 PAN 关联的独特参考号。

地点存储

必须存储返回的地点信息。未能存储地点信息意味着验证结果丢失。您无法查询历史验证数据。

地点存储在您的验证响应上收到的 verifications:verification 操作链接的 href 中。

最佳实践:我们建议您存储所有响应。

查询历史验证

若要查询历史验证,可向在您的初始响应中返回的地点提交查询。

查询验证请求

GET https://try.access.worldpay.com/verifications/accounts/{resource}

您可以查询在初始响应中返回的地点,以检索初始验证的 outcome。您只能初始响应中获得地点。

查询验证响应

在您的响应中是 200 HTTP 响应代码和验证的历史 outcome

outcome:

  • verified
  • not verified
Copied!
{
    "outcome": "verified",
    "checkedAt": "2018-09-01T10:37:36.923Z",
    "riskFactors": [{
            "risk": "matched",
            "type": "cvc"
        },
        {
            "risk": "matched",
            "detail": "postcode",
            "type": "avs"
        },
        {
            "risk": "matched",
            "detail": "address",
            "type": "avs"
        }
    ],
    "_links": {
        "verifications:verification": {
            "href": "https://try.access.worldpay.com/verifications/accounts/{resource}"
        },
        "curies": [{
            "name": "verifications",
            "href": "https://try.access.worldpay.com/rels/verifications/accounts/{rel}",
            "templated": true
        }]
    }
}
{
    "outcome": "verified",
    "checkedAt": "2019-11-01T10:37:36.923Z",
    "schemeTransactionReference": "000000000000020005060720116005060",
    "riskFactors": [{
            "risk": "matched",
            "type": "cvc"
        },
        {
            "risk": "matched",
            "detail": "postcode",
            "type": "avs"
        },
        {
            "risk": "matched",
            "detail": "address",
            "type": "avs"
        }
    ],
    "_links": {
        "verifications:verification": {
            "href": "https://try.access.worldpay.com/verifications/accounts/{resource}"
        },
        "payments:cardonFileAuthorize": {
            "href": "https://try.access.worldpay.com/payments/authorizations/cardonFile/{resource}"
        },
        "payments:recurringAuthorize": {
            "href": "http://try.access.worldpay.com/payments/authorizations/recurring/{resource}"
        },
        "payments:recurringSale": {
            "href": "https://try.access.worldpay.com/payments/sales/recurring/{resource}"
        },
        "curies": [{
            "name": "verifications:verification",
            "href": "https://try.access.worldpay.com/rels/verifications/accounts/{rel}",
            "templated": true
        }]
    }
}
{
    "outcome": "not verified",
    "code": "106",
    "description": "INVALID ACCOUNT",
    "refusalAdvice": {
        "code":"04"
    },
    "checkedAt": "2019-11-01T10:37:36.923Z",
    "riskFactors": [{
            "risk": "matched",
            "type": "cvc"
        },
        {
            "risk": "matched",
            "detail": "postcode",
            "type": "avs"
        },
        {
            "risk": "matched",
            "detail": "address",
            "type": "avs"
        }
    ],
    "_links": {
        "verifications:verification": {
            "href": "https://try.access.worldpay.com/verifications/accounts/{resource}"
        },
        "curies": [{
            "name": "verifications:verification",
            "href": "https://try.access.worldpay.com/rels/verifications/accounts/{rel}",
            "templated": true
        }]
    }
}

注释:在初始请求时的验证是准确无误的。发送另一个智能动态验证请求可能会返回不同的结果。