- 集成指南
- 支持的功能(付款方式)
- 持卡人在位付款
持卡人在位
持卡人在位付款 (CHP) 付款指使用销售点 (POS) 终端的交易。 终端可以通过以下方式读取卡数据:
- 掏取 EMV 卡
- 通过非接触式卡进行 NFC(近场通讯)
- 刷磁条卡
- 键入卡号
API 版本 40 之前的版本提供上述所有支持。
CHP 付款由终端发起,然后作为 Verify、Authorize、Capture、Pay 或 Refund 交易发送到网关。 例如,由卡芯片离线授权的交易将只作为 Capture 发送,而需要发卡机构授权的交易将使用在线 Authorize 交易,然后使用 Capture 交易。
CHP 交易与很多其他网关功能交互。 您可以:
- 将卡令牌化,
- 使用与您的电子商务交易相同的集成或通过 UI 退款
- 统一电子商务和 CHP 报告
先决条件
Your payment service provider 和您的收单行必须为您启用持卡人在位交易。
用于 CHP 交易的通用字段
以下 API 字段与通过网关的所有持卡人在位集成相关。
transaction.source=CARD_PRESENT
: 如果不提供此字段,将使用 your payment service provider 在收单行链接配置的默认交易来源。 [REST][NVP]- 卡号: 强制提供卡号,不过提供方式取决于卡读取方式,包括键盘输入、磁条或 EMV 芯片,您可以在以下位置提供:
- 键控交易的
sourceOfFunds.provided.card.number
。 - 磁条交易的
sourceOfFunds.provided.card.track1
和/或sourceOfFunds.provided.card.track2
,或
标签 56 和标签 57 的 EMV 标签等效实体,这些标签分别在卡数据为磁条格式的非接触式交易的sourceOfFunds.provided.card.emvRequest
中提供。 - 卡数据为 EMV 格式的 EMV 交易(接触式/非接触式)的
sourceOfFunds.provided.card.emvRequest
中的标签 5A。 - 卡数据为 DUKPT 加密格式的 P2PE(点对点加密)交易的
sourceOfFunds.provided.card.p2pe.payload
。
- 键控交易的
- 终端识别码: 强制提供终端识别码,不过提供方式取决于卡读取方式,包括键盘输入、磁条或 EMV 芯片,您可以在以下位置提供:
- 键控交易和磁条交易的
posTerminal.lane
。 - 卡数据为 EMV 格式的 EMV 交易(接触式/非接触式)的
sourceOfFunds.provided.card.emvRequest
中的标签 9F1C。
- 键控交易和磁条交易的
确保以下 POS 终端字段值根据终端生成交易的卡数据的方式正确设置。 如果存在这些字段的数据,应始终提供这些数据。 网关将根据需要将此数据传送到收单行。 如果收单行需要一个字段,但实际不存在,那么交易将失败。
posTerminal.address
posTerminal.attended
: 如果您未提供此字段,网关将默认此值为UNKNOWN_OR_UNSPECIFIED
posTerminal.authorizationMethod
posTerminal.cardHolderActivated
: 如果您未提供此字段,网关将默认此值为NOT_CARDHOLDER_ACTIVATED
posTerminal.inputCapability
: 此字段对于 EMV 交易是强制的。posTerminal.location
: 此字段对于 EMV 交易是强制的。posTerminal.panEntryMode
posTerminal.pinEntryCapability
posTerminal.onlineReasonCode
: 此字段对于所有在线交易的芯片和芯片回调交易(包括撤消)是强制的。posTerminal.serialNumber
posTerminal.mobile.cardInputDevice
: 此字段适用于能够接受点击屏幕或物理键盘来输入 PIN 的移动 POS (mPOS) 设备。 软件 PIN 应仅用于没有支持 PIN 输入的硬件键盘的设备。 有关 mPOS 集成的要求,请参见通过集成使用 mPOS。
处理 EMV 交易
如果卡数据是从卡芯片读取(仅限 EMV 卡),
- 应向终端请求这些 EMV 标签(网关支持的标签)。
- 在
sourceOfFunds.provided.card.emvRequest
字段中作为 REST 协议的 JSON 对象,或 NVP 协议的字段集合提供返回的标签(如果您的终端不提供支持的所有 EMV 标签也没关系)。EMV 标签值必须准确设定为终端返回的格式 — 二进制值将以 hex 格式表示。 - 提供强制字段。
- 提供可选字段(如果需要)。
sourceOfFunds.provided.card.emvRequest [REST][NVP]
有些支持的 EMV 标签与核心付款概念对应,如主账号。 这些概念还显示为 API 请求字段,如 sourceOfFunds.provided.card.number
。 这些对应的 API 请求字段的 API 参考文档在描述中显示其关系。 例如,sourceOfFunds.provided.card.number
的描述包含文本“此字段与 EMV 标签 5A 对应”。
如果您作为 EMV 标签提供数据,那么您不需要提供与 API 请求字段相同的数据。 网关使用 EMV 标签中提供的值填充对应的 API 请求字段(如果有),并在所有内部处理、收单行通知和交易响应中使用这些值。 例如,如果您发送具有值 -Lane_03’ 的 sourceOfFunds.provided.card.emvRequest.9F1C,那么具有值 -Lane_03’ 的 posTerminal.lane 将发送到收单行,并在交易响应中返回。
如果需要,您可以选择在交易请求中同时提供 EMV 标签和对应的 API 请求字段。 请参见高级用法: EMV 标签和 API 请求字段中的交易数据。
这里是一个独立过账交易的 REST 的示例 EMV 请求,在此交易中,授权在终端离线执行。
URL | https://network.gateway.mastercard.com/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid} |
HTTP 方法 | PUT |
{ "apiOperation": "CAPTURE", "transaction": { "currency": "EUR", "amount": "10.99", "source": "CARD_PRESENT" }, "sourceOfFunds": { "type": "CARD", "provided": { "card": { "number": "5457210089020012", "expiry": { "month": "1", "year": "39" }, "emvRequest": { "82": "0000", "95": "0000000000", "9F02": "000000001099", "9A": "161021", "5F2A": "840", "9F1A": "840", "9F10": "06011103A000000A0100000000000BB0ABAD", "9F34": "1E0300", "9F36": "0002", "9C": "00", "9F26": "D1F722D47FCA8273", "9F27": "40", "9F37": "2A4E1690", "9F33": "E0B8C8" } } } }, "posTerminal": { "inputCapability": "CONTACTLESS_CHIP", "panEntryMode": "CHIP", "pinEntryCapability": "PIN_SUPPORTED", "location": "MERCHANT_TERMINAL_ON_PREMISES", "lane": "Lane_03", "attended": "ATTENDED", "serialNumber":"123456789", "onlineReasonCode":"FORCED_BY_MERCHANT", "cardPresenceCapability":"CARD_PRESENT", "authorizationMethod":"OFFLINE", "address": { "country":"IRL", "city":"Dublin" } } }
{ "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "TESTSMOKE-RETAIL", "order": { "amount": 10.99, "creationTime": "2017-06-06T09:42:54.280Z", "currency": "EUR", "id": "sa-dfc1b030-4520-48ec-a7e0-889999d7e4ab", "status": "CAPTURED", "totalAuthorizedAmount": 10.99, "totalCapturedAmount": 10.99, "totalRefundedAmount": 0 }, "posTerminal": { "address": { "city": "Dublin", "country": "IRL" }, "attended": "ATTENDED", "authorizationMethod": "OFFLINE", "cardPresenceCapability": "CARD_PRESENT", "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED", "inputCapability": "CONTACTLESS_CHIP", "lane": "Lane_03", "location": "MERCHANT_TERMINAL_ON_PREMISES", "onlineReasonCode": "FORCED_BY_MERCHANT", "panEntryMode": "CHIP", "pinEntryCapability": "PIN_SUPPORTED", "serialNumber": "123456789" }, "response": { "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "emvRequest": { "82": "0000", "95": "0000000000", "5F2A": "840", "9A": "161021", "9C": "00", "9F02": "000000001099", "9F10": "06011103A000000A0100000000000BB0ABAD", "9F1A": "840", "9F26": "D1F722D47FCA8273", "9F27": "40", "9F33": "E0B8C8", "9F34": "1E0300", "9F36": "0002", "9F37": "2A4E1690" }, "emvResponse": { "4D3E": "456", "5A2F": "123" }, "expiry": { "month": "1", "year": "39" }, "fundingMethod": "DEBIT", "issuer": "CAPITAL ONE BANK (CANADA BRANCH)", "number": "545721xxxxxx0012", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfRecord": "2017-06-06T09:42:54.280Z", "transaction": { "acquirer": { "batch": 1, "id": "FOOBANK", "merchantId": "11223344" }, "amount": 10.99, "currency": "EUR", "frequency": "SINGLE", "id": "1", "receipt": "1706063974", "source": "CARD_PRESENT", "terminal": "0001", "type": "CAPTURE" }, "version": "43" }
这里是一个网关支持的 EMV 标签的列表。 如果这些标签中有任何一个标签是终端返回的,应将其包含在 sourceOfFunds.provided.card.emvRequest
字段中。
EMV 标签 |
名称 |
强制 |
---|---|---|
4F | 应用程序标识符 (AID) 名称 | - |
56 | 卡轨 1 | - |
57 | 卡轨 2 等效数据 | - |
5A | 应用程序 主账号 (PAN) |
- |
5F24 | 应用程序过期日期 | - |
5F25 | 应用程序生效日期 | - |
5F28 | 发卡机构国家/地区代码 | - |
5F2A | 交易货币代码 | - |
5F34 | 应用程序 主账号 (PAN) 序列号 |
- |
82 | 应用程序交换配置文件 (AIP) | 是 |
84 | 专门文件名称 | - |
87 | 应用程序优先级指示符 | - |
95 | 终端验证结果 (TVR) | 是 |
9A | 交易日期 | 是 |
9B | 交易状态信息 | - |
9C | 交易类型 | 是 |
9F02 | 授权金额 | 是 |
9F03 | 返现金额 | - |
9F06 | 应用程序标识符 (AID) - 终端 | - |
9F07 | 应用程序使用控制 | - |
9F08 | 应用程序版本号 - ICC | - |
9F09 | 应用程序版本号 - 终端 | - |
9F0D | 发卡机构操作代码 - 默认 | - |
9F0E | 发卡机构操作代码 - 拒绝 | - |
9F0F | 发卡机构操作代码 - 在线 | - |
9F10 | 发卡机构应用程序数据 (IAD) | 是 |
9F1A | 终端国家/地区代码 | 是 |
9F1C | 终端识别 | - |
9F1E | 接口设备 (IFD) 序列号 | - |
9F21 | 交易时间 | - |
9F26 | 应用程序密文 (AC) | 是 |
9F27 | 密文信息数据 (CID) | 是 |
9F33 | 终端功能 | - |
9F34 | 持卡人验证方法 (CVM) 结果 | 是 |
9F35 | 终端类型 | - |
9F36 | 应用程序交易计数器 | 是 |
9F37 | 不可预知数字 | 是 |
9F39 | 服务点 (POS) 进入模式 | - |
9F40 | 其他终端功能 | - |
9F41 | 交易序列计数器 | - |
9F49 | 动态数据身份验证数据对象列表 (DDOL) | - |
9F53 | 交易类别代码 | - |
9F5A | EMV(核心 3): 应用程序标识符(程序 ID) EMV(核心 4): 成员产品标识符 |
- |
9F5B | EMV(核心 3): 发卡机构脚本结果 EMV(核心 2): DSDOL EMV(核心 4): 产品成员编号 |
- |
9F66 | EMV(核心 2): PUNATC(Track2) EMV (核心 3): 终端交易限定符 (TTQ) |
- |
9F6E | 外形因素指标 | - |
9F7C | 客户专有数据 (CED) | - |
如果您在交易请求中同时提供 EMV 标签和对应的 API 请求字段,网关将使用对应的 API 请求字段中提供的值。 例如,如果您发送具有值 -Lane_03’ 的 sourceOfFunds.provided.card.emvRequest.9F1C 和具有值 -Lane_04’ 的 posTerminal.lane,那么具有值 -Lane_04’ 的 posTerminal.lane 将被发送到收单行,并在交易响应中返回。 如果您想要覆盖 EMV 标签并控制每个字段的值,这可能很有用。 请注意,此方法很少使用,因此,必须仅在集成需要时再作考虑。
支持的 EMV 标签和相应的 API 请求字段
此表列出了网关使用 EMV 标签中提供的值填充对应的 API 请求字段的 EMV 标签。
EMV 标签 |
EMV 标签名称 |
对应的 API 请求字段 |
---|---|---|
56 | 卡轨 1 | sourceOfFunds.provided.card.track1 |
57 | 卡轨 2 等效数据 | sourceOfFunds.provided.card.track2 |
5A | 应用程序主账号 (PAN) | sourceOfFunds.provided.card.number |
5F24 | 应用程序过期日期 | sourceOfFunds.provided.card.expiry.year sourceOfFunds.provided.card.expiry.month |
5F34 | PAN 序列号 | sourceOfFunds.provided.card.sequenceNumber |
9C | 预付现金 | order.cashAdvance |
9F03 | 返现金额 | order.cashbackAmount |
9F1A | 终端国家/地区代码 | posTerminal.address.country |
9F1C | 终端识别 | posTerminal.lane |
9F1E | 接口设备序列号 | posTerminal.serialNumber |
9F33 | 终端功能 | posTerminal.inputCapability posTerminal.pinEntryCapability |
9F35 | 终端类型 | posTerminal.attended posTerminal.cardholderActivated |
网关在 Retrieve Order 和 Retrieve Transaction 响应中返回 sourceOfFunds.provided.card.emvResponse
字段。 此字段包含发卡机构生成的数据,卡/设备可使用此数据进行完成或拒绝交易的验证。 另外还可能包含发卡机构的其他 EMV 标签,包括请求返回的标签。
下表显示可能在在线 Authorization 响应中返回的一些 EMV 标签。
EMV 标签 | 名称 |
---|---|
8A | 授权响应代码 |
89 | 授权代码 |
91 | 发卡机构身份验证数据 |
71 | 发卡机构脚本模板 1 |
72 | 发卡机构脚本模板 2 |
请求中提供的 sourceOfFunds.provided.card.emvRequest
字段在响应中返回,响应中不包含确定为 PCI 敏感的 EMV 标签。
取消 EMV 交易时,您的收单行可能需要包含其他 EMV 数据元素。 例如,可能需要 EMV 标签 DF01(发卡机构脚本结果)。 请联系您的收单行了解具体要求。
处理磁条交易
如果卡轨数据从卡磁条读取,
- 在
sourceOfFunds.provided.card.track1
字段中提供卡轨 1 数据,或在sourceOfFunds.provided.card.track2
字段中提供卡轨 2 数据。 如果卡轨 1 和卡轨 2 在终端均可用,那么在交易请求中全部提供。 - 提供强制字段。
- 提供可选字段(如果需要)。
sourceOfFunds.provided.card.track1 [REST][NVP]
sourceOfFunds.provided.card.track2 [REST][NVP]
这里是使用磁条数据的在线授权交易的示例。
URL | https://network.gateway.mastercard.com/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid} |
HTTP 方法 | PUT |
{ "apiOperation": "AUTHORIZE", "order": { "amount": 80, "currency": "AUD" }, "transaction": { "source": "CARD_PRESENT", "frequency": "SINGLE" }, "sourceOfFunds": { "type": "CARD", "provided": { "card": { "number": "5457210089020012", "sequenceNumber": "015", "expiry": { "year": "39", "month": "01" }, "track2": ";5123456789012346=17051019681143384001?", "track1": "%B5123456789012346^MR JOHN R SMITH ^17051019681143300001 840 ?;" } } }, "posTerminal": { "lane": "AdamLane", "panEntryMode": "SWIPE", "pinEntryCapability": "PIN_NOT_SUPPORTED", "attended": "UNATTENDED", "cardholderActivated": "SELF_SERVICE_TERMINAL", "inputCapability": "MAGNETIC_STRIPE", "location": "MERCHANT_TERMINAL_OFF_PREMISES" } }
{ "authorizationResponse": { "posData": "1605S0100130", "transactionIdentifier": "AmexTidTest" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "TESTSMOKE-RETAIL", "order": { "amount": 80, "creationTime": "2017-05-31T07:49:46.351Z", "currency": "AUD", "id": "sa-e229682a-2163-47cf-b080-fb60dd148192", "status": "AUTHORIZED", "totalAuthorizedAmount": 80, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "posTerminal": { "attended": "UNATTENDED", "cardholderActivated": "SELF_SERVICE_TERMINAL", "inputCapability": "MAGNETIC_STRIPE", "lane": "AdamLane", "location": "MERCHANT_TERMINAL_OFF_PREMISES", "panEntryMode": "SWIPE", "pinEntryCapability": "PIN_NOT_SUPPORTED" }, "response": { "acquirerCode": "00", "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "DEBIT", "issuer": "CAPITAL ONE BANK (CANADA BRANCH)", "number": "545721xxxxxx0012", "scheme": "MASTERCARD", "sequenceNumber": "015", "trackDataProvided": true } }, "type": "CARD" }, "timeOfRecord": "2017-05-31T07:49:46.351Z", "transaction": { "acquirer": { "batch": 1, "id": "SYSTEST_ACQ1", "merchantId": "12345678" }, "amount": 80, "authorizationCode": "000001", "currency": "AUD", "frequency": "SINGLE", "id": "1", "receipt": "1705313", "source": "CARD_PRESENT", "terminal": "0006", "type": "AUTHORIZATION" }, "version": "43" }
处理键控交易
如果在终端键盘手动输入卡号,
sourceOfFunds.provided.card.number
[REST][NVP]
这里是使用手动键入卡号的在线授权交易的示例。
URL | https://network.gateway.mastercard.com/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid} |
HTTP 方法 | PUT |
{ "posTerminal": { "serialNumber": "13130PP800781435", "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED", "lane": "S2_Lane", "panEntryMode": "KEYED", "pinEntryCapability": "UNKNOWN", "attended": "ATTENDED", "inputCapability": "KEY_ENTRY", "location": "MERCHANT_TERMINAL_ON_PREMISES" }, "apiOperation": "AUTHORIZE", "sourceOfFunds": { "type": "CARD", "provided": { "card": { "number": "5457210089020012", "sequenceNumber": "000", "expiry": { "year": "39", "month": "01" } } } }, "order": { "amount": "100.00", "currency": "EUR" }, "transaction": { "source": "CARD_PRESENT", "frequency": "SINGLE" } }
{ "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "TESTSMOKE-RETAIL", "order": { "amount": 100, "creationTime": "2017-05-31T08:59:47.194Z", "currency": "EUR", "id": "sa-529e784a-e11d-474d-8012-c0790531bb0f", "status": "AUTHORIZED", "totalAuthorizedAmount": 100, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "posTerminal": { "attended": "ATTENDED", "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED", "inputCapability": "KEY_ENTRY", "lane": "S2_Lane", "location": "MERCHANT_TERMINAL_ON_PREMISES", "panEntryMode": "KEYED", "pinEntryCapability": "UNKNOWN", "serialNumber": "13130PP800781435" }, "response": { "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "DEBIT", "issuer": "CAPITAL ONE BANK (CANADA BRANCH)", "number": "545721xxxxxx0012", "scheme": "MASTERCARD", "sequenceNumber": "000" } }, "type": "CARD" }, "timeOfRecord": "2017-05-31T08:59:47.194Z", "transaction": { "acquirer": { "batch": 1, "id": "FOOBANK", "merchantId": "11223344" }, "amount": 100, "authorizationCode": "471223", "currency": "EUR", "frequency": "SINGLE", "id": "1", "receipt": "170531475", "source": "CARD_PRESENT", "terminal": "0001", "type": "AUTHORIZATION" }, "version": "43" }
处理点对点加密 (P2PE) 交易
P2PE 是支付卡行业标准委员会制定的标准。 使用 P2PE,敏感的卡数据会在读取卡数据后在终端立即加密。 由于您不必处理敏感数据,因此这会最大化持卡人在位交易的安全性,并会减少您的 PCI 合规义务。
如何处理 P2PE 交易:
- 在以下字段中提供来自终端的 DUKPT P2PE 数据:
sourceOfFunds.provided.card.p2pe.keySerialNumber
: 您必须提供终端提供的 DUKPT 密钥序列号。sourceOfFunds.provided.card.p2pe.payload
: 如果提供此字段,则不强制提供sourceOfFunds.provided.card.number
。 网关将从提供的支付数据中提取所有相关的卡详细信息。posTerminal.serialNumber
:sourceOfFunds.provided.card.p2pe.cardBin
sourceOfFunds.provided.card.p2pe.encryptionState
: 如果您未提供此字段,网关将默认此值为VALID
sourceOfFunds.provided.card.p2pe.initializationVector
: 如果终端未使用初始化向量来进行加密,可以忽略此字段。
- 提供强制字段。
- 提供可选字段(如果需要)。
下表汇总了 sourceOfFunds.provided.card.p2pe
参数组的字段约束。
如果字段 | 那么网关... | ||
---|---|---|---|
sourceOfFunds.provided.card.p2pe. initializationVector |
sourceOfFunds.provided.card.p2pe. keySerialNumber |
sourceOfFunds.provided.card.p2pe. payload | |
已提供 | 已提供 | 未提供 | 拒绝交易请求。 |
已提供 | 已在解密前或解密后提供,但使用纯文本 | 已提供 | 返回错误并生成安全日志条目。 |
交易响应
sourceOfFunds.provided.card.encryption
字段在交易响应中返回 DUKPT
(API 43 及更高版本)以指示卡数据已加密。 sourceOfFunds.provided.card.p2pe
参数组中的字段不在响应中返回。
集成以使用在线 PIN
持卡人输入的在线 PIN 在 PIN 输入设备内在源头加密。 Mastercard Gateway 在 API 45 及更高版本中支持 DUKPT (Derived Unique Key Per Transaction) 加密的在线 PIN 数据。
- 在以下字段中提供来自终端的 DUKPT 加密的 PIN 数据:
sourceOfFunds.provided.card.pin.payload
sourceOfFunds.provided.card.pin.keySerialNumber
posTerminal.pinLengthCapability
sourceOfFunds.provided.card.pin.encryptionState
- 提供强制字段。
- 提供可选字段(如果需要)。
通过集成使用 mPOS
从 API v56 开始,网关支持在移动 POS (mPOS) 设备上接受付款。 要启用此功能,在 Verify、Authorize、Capture、Pay 或 Refund 交易中提供以下内容:
posTerminal.cardholderActivated
=MPOS_ACCEPTANCE_DEVICE
- 在
posTerminal.mobile.cardInputDevice
中提供读卡器的值BUILT_IN
: 只有内置非接触式读卡器的非专门设计的手机或平板电脑。 在这种情况下,posTerminal.pinEntryCapability 必须设置为 SOFTWARE_ONLINE_PIN_ONLY,否则网关将拒绝交易。INTEGRATED_DONGLE
: 带有集成读卡器的专用移动终端。 在这种情况下,posTerminal.pinEntryCapability 必须设置为 PIN_SUPPORTED 或 OFFLINE_PIN_ONLY,否则网关将拒绝交易。SEPARATE_DONGLE
: 带有单独读卡器的非专门设计的设备或专用移动终端。 在这种情况下,posTerminal.pinEntryCapability 必须设置为 PIN_SUPPORTED 或 OFFLINE_PIN_ONLY,否则网关将拒绝交易。
- 提供强制字段。
- 提供可选字段(如果需要)。
交易响应
如果付款人输入了无效的 PIN、超过了允许的 PIN 输入尝试次数,或在需要 PIN 来完成交易时跳过了 PIN 输入,PIN 身份验证可能失败。
在因 PIN 身份验证错误而导致授权失败的情况下,网关会返回特定的授权响应代码。 您可以在下一次交易中重新使用同一个订单 ID。
测试持卡人在位集成
您可以使用收单行专有的测试卡。