使用密码或证书保护您的集成
您可以使用密码或 SSL 证书对 Mastercard Gateway 进行身份验证。
密码身份验证
您可以启用通过密码对 Mastercard GatewayAPI 和 Batch 集成进行身份验证。 系统生成的密码为一个 16 字节的编码为十六进制字符串的随机生成值。 尽管它有足够的长度和强度来抵抗强力猜测,但仍应当像保护用户密码和其他敏感数据一样妥善保护它。
为 API 生成密码
您可以在 Merchant Administration 中生成 API 密码。 作为先决条件,您的商家配置文件必须启用 API、Batch 和“使用密码身份验证”权限。
要访问 Merchant Administration,您需要您的登录凭据。 当您成功登录网关时,your payment service provider 将为您提供管理员登录凭据。 作为管理员,您可以创建具有生成 API 密码权限的新操作员。
- 使用您的管理员登录凭据登录到 htt。
- 导航到管理 > 操作员
- 输入所有必填字段,创建新操作员。 分配“可以配置集成设置”权限,让操作员能够生成 API 密码。
- 从 Merchant Administration 中注销,然后以新操作员身份重新登录 Merchant Administration。
- 导航到管理 > Web 服务 API 集成设置 > 编辑。
- 单击生成新密码,选择通过密码启用集成访问框。
- 这是您将用于验证从 Web 服务器向网关发起的 API 请求的 API 密码。
- 单击提交。
您必须始终至少生成并启用一个密码,但也可以最多设置两个密码。 安全起见,您应该定期更改密码。 配置应用程序只能使用一个密码,第二个密码用作密码转换的备用密码。
密码生成后,您必须将该密码包括在指向 Mastercard Gateway 的所有交易请求中。 如果使用 REST-JSON 协议发送请求,那么请求必须在标准 HTTP 基本身份验证标头中包含用户 ID 和密码。 使用 NVP,您必须在请求、apiUsername 和 apiPassword 中提供其他参数才能使用 API。
若要以商家身份执行验证,名称(NVP 为 apiUsername,REST-JSON 为 用户 ID)和密码(NVP 为 apiPassword ,REST-JSON 为密码)必须分别包含“merchant.<your gateway merchant ID>”和系统生成的密码。
证书身份验证
使用证书身份验证,您必须通过向 Mastercard Gateway 提供证书来对您自己进行身份验证。 证书通常由作为证书认证机构 (CA) 的众多组织之一发放。 此身份验证模型是公钥基础设施 (PKI) 的组成部分,公钥基础设施通过机密性、完整性、不可抵赖性和身份验证来达到安全目的。 CA 声称附加到证书的公钥正确无误,属于宣称的个人或实体(即是“真实的”),未被恶意第三方篡改或替换。
证书身份验证的验证机制需要客户端(您的 Web 服务器)和服务器(Mastercard Gateway HTTP 服务器)均提供自我验证的证书。 这被称为双向验证,工作流如下所示。

使用证书身份验证连接到 Mastercard Gateway 时,将发生以下事项:
- 客户端请求连接到服务器上受保护的资源。 客户端每次发起交易请求时将发出此请求。
- 服务器向客户端提供证书链。
- 客户端使用包含可信根 CA 的信任存储验证服务器的证书。 客户端验证可信 CA 根证书的证书路径。
- 如果成功,客户端会将其证书链发送到服务器,这些证书包含在密钥存储中。
- 服务器使用服务器上加载的一整套可信/审批 CA 根证书验证客户端的证书。 执行以下检查:
- 检查证书是否采用 X.509 证书格式。
- 验证可信 CA 根证书的证书路径。
- 执行 CRL 或 OCSP(在线证书状态协议)检查以确保证书尚未被调用。
- 检查证书是否过期。
HTTP 服务器成功验证客户端证书后,整个客户端证书链将被传送到 API 进行验证。 如果验证失败,HTTP 服务器将返回标准 SSL 证书错误消息。
验证同时在 HTTP 服务器和 API 级别执行。 HTTP 服务器执行完整 SSL 证书验证,API 执行企业级的证书验证。 - API 执行以下检查:
- 提取客户端证书的使用者公用名,并确认该名称与数据库中的商家记录的使用者公用名匹配。 证书的使用者公用名必须包含商家的合法企业名称。
- 确认客户端证书具有表明重要性的密钥使用扩展名,通过允许使用证书的方式包括客户端身份验证。
- 对允许的 CA 集中包含的 CA 根证书执行简单的客户端证书验证。 这意味着 API 应用程序必须保留用于发放和签发客户端证书的 CA 根证书。
允许 CA 的初始集由 Mastercard 确定。
- 检查提供的证书是否与商家配置文件的状态匹配。 生产配置文件将只接受生产证书,而测试配置文件即接受测试证书也接受生产证书。
如果步骤 1-4 成功,商家身份验证将被视为成功,否则将通过返回相应的错误消息拒绝连接。
- 如果步骤 5 和 6 中概述的所有检查均成功,那么服务器将接受连接并允许操作请求继续进行。
在付款人访问您的应用程序时,您可以选择提供客户端证书或其他证书来进行自我验证。 在此交互中,Web 服务器充当服务器,付款人充当客户端。 集成此身份验证机制可以让付款人更加确信与其进行交易的是一家合法企业。
在生产证书投入使用之前,您可以使用测试证书开发和测试 PKI 身份验证。 如果您不希望与第三方网络集成设计师共享生产证书和隐私密钥时(举例),此证书可能很有用。
您从所选 CA 购买的证书是否满足 Mastercard 的证书实施要求非常重要。 以下是您在购买 SSL 证书时应考虑的一些关键点。
- 证书必须采用 X.509 证书格式。
- 证书必须具有表明重要性的密钥使用扩展名,并通过允许使用证书的方式包括客户端身份验证。
- 证书必须由 Mastercard 批准的 CA 发放。 请联系 Mastercard 获取通过批准的 CA 的列表。
- 证书的使用者公用名 (CN) 必须包含为其购买证书的网站的完全合格的域名(包含或不包含通配符)。
- 主题组织 (O) 字段必须包含商家的组织。
从声誉良好的 CA 购买证书后,your payment service provider 必须在网关上为商家配置文件配置所有 API 设置的过程中在“商家管理器”中配置您的测试和/或生产证书。 如果需要,商家证书可以关联到同一个企业或跨各企业的多个商家配置文件。 有关如何在“商家管理器”中配置商家证书的更多信息,请参见“商家管理器用户指南”的“API 配置”部分。
网站控制用于验证商家证书的可接受 CA 根证书的列表。 为支持证书验证,系统通过“商家管理器”收集使用证书的 PEM 编码版本。 使用者公用名从此证书提取,并对照 SSL 交换期间提供的使用者公用名验证。
在根据商家配置文件配置证书后,您必须执行以下步骤来将证书安装到您的环境中。
- 让隐私密钥和证书对将 SSL 连接到 Mastercard Gateway 的 SSL 客户端软件可用。 根据软件,隐私密钥、证书和相关证书链可能需要转换为支持的格式。 例如,隐私密钥和证书通常在文本文件中使用 PEM 格式提供,隐私密钥受密码保护。 在 Java 中,这些文件通常加载到 Java 密钥存储中。 请查看软件文档了解支持的格式。
对于 Java 和 .NET 环境,建议您将 PEM 文件转换为 PKCS12。
- 在几乎所有情况下,发放证书的 CA 还提供其他证书,称为证书链。 您必须在 SSL 交换期间向 Mastercard Gateway 提供这些证书以支持网关对您的证书进行验证。 您的 SSL 客户端软件将提供如何以及在何处放置这些证书的说明。
- 检查您是否有所有必要证书的简单测试是将这些证书加载到 Web 浏览器,如 Internet Explorer、Firefox 或 Safari,并浏览到网关 API Check Gateway URL,检索网关状态。 如果证书已正确加载,访问 Check Gateway URL 时,浏览器将提示您选择/接受用于与网关连接的证书。 如果浏览器有此提示且连接成功,您将收到以下响应: {status: "OPERATING"}。
出于各种原因,您可能希望将现有证书转换为新证书。 例如,由于公司名称改变需要升级证书,或从测试证书转换为生产证书。
要滚动到新证书,your payment service provider 必须将新证书添加为主要证书,旧证书将成为其他证书。 您可以有一个或多个其他证书。 配置为使用新证书的商家可以使用旧证书或新证书对 API 进行身份验证。 这意味着在所有集成均升级为使用新证书前,这将为一个临时配置。 有关如何添加其他证书的更多信息,请参阅 Merchant Manager 用户指南中的 API 配置部分。
会话身份验证
会话身份验证使用网关付款会话(请求字段的临时容器)对商家进行身份验证。 由于付款会话是由经过身份验证的商家创建的(使用密码/证书身份验证),付款人可以将其用于网关交互,如执行身份验证操作。
此身份验证机制允许付款人将其付款详细信息直接提供到网关。 通过付款人的浏览器或付款人移动设备上的应用,通过客户端与网关之间的交互来获取付款人数据。 它提供了一个简单的集成模型,可以安全地获取所需的付款人数据,因为对网关的 API 请求直接从客户端而不是从服务器执行。
它使用基本的 HTTP 身份验证机制(类似于密码身份验证),在这种机制中,您必须在用户 ID 部分提供 'merchant.<your gateway merchant ID>;>,在密码部分提供会话 ID。
若要使用此身份验证类型:
- 通过将 API Create Session 请求从您的服务器提交到网关服务器来创建会话。 此操作将返回会话 ID。
- 使用会话身份验证提交 Update Session 请求,以将任何相关数据添加到步骤 1 中创建的会话。
- 将会话提供给付款人。
支持的交易
以下操作支持使用会话 ID 的身份验证。
- Update Session
- Initiate Authentication
- Authenticate Payer
付款人输入和付款人输出字段
在与网关进行经过会话身份验证的交互中,付款人仅限于使用 API 操作中的字段子集。 这些字段被称为付款人输入字段。 如果您在经过会话身份验证的请求中提供了付款人输入字段以外的其他字段,请求将被拒绝。 例如,付款人不能提交订单金额等数据。
与付款人输入字段类似,网关只允许在与网关进行经过会话身份验证的交互的响应中返回某些字段。 这些字段被称为付款人输出字段 — 仅返回在浏览器或应用上显示给付款人以执行交易所需的字段。 例如,不返回会话 ID 等安全敏感数据。
Update Session
- billing.address.city
- billing.address.company
- billing.address.country
- billing.address.postcodeZip
- billing.address.stateProvince
- billing.address.stateProvinceCode
- billing.address.street
- billing.address.street2
- browserPayment.preferredLanguage
- correlationId
- customer.dateOfBirth
- customer.email
- customer.firstName
- customer.lastName
- customer.mobilePhone
- customer.nationalId
- customer.phone
- customer.taxRegistrationId
- device.browser
- device.browserDetails.3DSecureChallengeWindowSize
- device.browserDetails.acceptHeaders
- device.browserDetails.colorDepth
- device.browserDetails.javaEnabled
- device.browserDetails.language
- device.browserDetails.screenHeight
- device.browserDetails.screenWidth
- device.browserDetails.timeZone
- device.fingerprint
- device.hostname
- device.ipAddress
- device.mobilePhoneModel
- gatewayEntryPoint
- locale
- merchant
- order.id
- order.walletProvider
- session.version
- shipping.contact.email
- shipping.contact.firstName
- shipping.contact.lastName
- shipping.contact.mobilePhone
- shipping.contact.phone
- sourceOfFunds.provided.card.devicePayment.3DSecure.eciIndicator
- sourceOfFunds.provided.card.devicePayment.3DSecure.onlinePaymentCryptogram
- sourceOfFunds.provided.card.devicePayment.cryptogramFormat
- sourceOfFunds.provided.card.devicePayment.emv.emvData
- sourceOfFunds.provided.card.devicePayment.paymentToken
- sourceOfFunds.provided.card.expiry.month
- sourceOfFunds.provided.card.expiry.year
- sourceOfFunds.provided.card.mobileWallet.emv.emvData
- sourceOfFunds.provided.card.nameOnCard
- sourceOfFunds.provided.card.number
- sourceOfFunds.provided.card.provided.card.prefix
- sourceOfFunds.provided.card.securityCode
- sourceOfFunds.token
- sourceOfFunds.type
- transaction.acquirer.customData
- transaction.acquirer.traceId
- transaction.id
- correlationId
- error.cause
- error.field
- error.supportCode
- error.validationType
- order.amount
- order.currency
- order.customerNote
- order.customerReference
- order.invoiceNumber
- result
- session.updateStatus
- session.version
Initiate Authentication
- apiOperation
- correlationId
- order.walletProvider
- session.id
- session.version
- sourceOfFunds.provided.card.devicePayment.3DSecure.eciIndicator
- sourceOfFunds.provided.card.devicePayment.3DSecure.onlinePaymentCryptogram
- sourceOfFunds.provided.card.devicePayment.cryptogramFormat
- sourceOfFunds.provided.card.devicePayment.emv.emvData
- sourceOfFunds.provided.card.devicePayment.paymentToken
- sourceOfFunds.provided.card.number
- sourceOfFunds.token
- sourceOfFunds.type
- authentication.3ds2.methodCompleted
- authentication.3ds2.methodSupported
- authentication.redirect.customized.3DS.methodPostData
- authentication.redirect.customized.3DS.methodUrl
- authentication.redirectHtml
- authentication.version
- correlationId
- error.cause
- error.field
- error.supportCode
- error.validationType
- order.authenticationStatus
- order.currency
- order.status
- response.gatewayCode
- response.gatewayRecommendation
- result
- sourceOfFunds.provided.card.number
- sourceOfFunds.type
- transaction.authenticationStatus
- version
Authenticate Payer
- apiOperation
- billing.address.city
- billing.address.company
- billing.address.country
- billing.address.postcodeZip
- billing.address.stateProvince
- billing.address.stateProvinceCode
- billing.address.street
- billing.address.street2
- correlationId
- device.browser
- device.browserDetails.3DSecureChallengeWindowSize
- device.browserDetails.acceptHeaders
- device.browserDetails.colorDepth
- device.browserDetails.javaEnabled
- device.browserDetails.language
- device.browserDetails.screenHeight
- device.browserDetails.screenWidth
- device.browserDetails.timeZone
- device.ipAddress
- order.walletProvider
- session.id
- session.version
- sourceOfFunds.provided.card.devicePayment.3DSecure.eciIndicator
- sourceOfFunds.provided.card.devicePayment.3DSecure.onlinePaymentCryptogram
- sourceOfFunds.provided.card.devicePayment.cryptogramFormat
- sourceOfFunds.provided.card.devicePayment.emv.emvData
- sourceOfFunds.provided.card.devicePayment.paymentToken
- sourceOfFunds.provided.card.expiry.month
- sourceOfFunds.provided.card.expiry.year
- sourceOfFunds.provided.card.number
- sourceOfFunds.provided.card.securityCode
- authentication.3ds2.acsReference
- authentication.3ds2.challenge.signedContent
- authentication.3ds2.methodCompleted
- authentication.3ds2.methodSupported
- authentication.3ds2.sdk.interface
- authentication.3ds2.sdk.timeout
- authentication.3ds2.sdk.uiType
- authentication.payerInteraction
- authentication.redirect.customized.3DS.acsUrl
- authentication.redirect.customized.3DS.cReq
- authentication.redirect.domainName
- authentication.redirectHtml
- authentication.version
- correlationId
- encryptedData.ciphertext
- encryptedData.nonce
- encryptedData.tag
- error.cause
- error.field
- error.supportCode
- error.validationType
- order.authenticationStatus
- order.currency
- order.status
- response.gatewayCode
- response.gatewayRecommendation
- result
- sourceOfFunds.provided.card.number
- sourceOfFunds.type
- transaction.authenticationStatus
- version
使用 SSL 保护付款人信息
收集敏感或保密信息的所有网站均需保护在付款人网络浏览器、应用程序和 Mastercard Gateway 之间传送的数据。
SSL 是一项安全技术,用于保护网络服务器到网络浏览器的交易。 这包括保护网络浏览器传送到 Web 服务器(如您的网络“购物&采购”应用程序)的任何信息(如付款人的信用卡号)。 SSL 保护通过互联网提交的数据不被意外接收方拦截和查看。
在实现 Direct Payment 时,您必须确保您的应用程序使用 SSL 提供安全表单。 您还应在收集保密信息(如付款人地址)时考虑在应用程序内使用安全表单。
我的付款人如何知道我的网站是否使用 SSL?
当付款人使用 SSL 连接到您的应用程序时,他们将看到 http:// 会变为 https://,并且会有一个小金色挂锁出现在他们的网络浏览器中,例如:
网络浏览器无论何时通过 https:// 连接到网络服务器(网站) - 这都表示与 Mastercard Gateway 的通信将被加密且安全可靠。 您可以告知付款人这一情况,让他们了解在您的网站上进行交易时他们能够得到的安全保障。
安全模型之间的重要差别参考表
下表概括了密码和证书身份验证模型之间的一些重要差别,目的是帮助您选择最符合您企业的验证要求的身份验证解决方案。
| 密码身份验证 | 证书身份验证 | |
| 何时使用 |
用于简单验证即可满足要求的小型企业。 | 用于根据使用更高级别身份验证获得安全性来最小化 PKI 实施的基础设施成本的大型企业。 |
| 所需技术技能 |
需要基本 HTTP 身份验证知识 | 需要双向验证知识和使用证书认证机构的 PKI |
| 方便集成 |
轻松集成 | 设置密钥库文件和其他基础设施可能增加集成的复杂性。 |
| 身份验证级别 | 中 | 高 |
| 成本 | 使用成本最低的身份验证方法。 | 包括附加成本,如发放 SSL 证书的发证机构订阅成本。 |
| 优点 | 是视集成成本为重要因素且业务模式不需要高级安全级别的小型商家的理想选择。 | SSL 双向身份验证提供很高的安全性,被视为业内最佳做法。 其通过使用现有 SSL 连接(通常可随意创建)优化身份验证效果。 发送客户端证书的额外开销最少。 |
| 缺点 | 密码作为明码文本嵌入到 HTTP 身份验证标头,且必须通过 SSL 发送。 Mastercard Gateway 仅接受受 SSL 保护的连接,从而保护密码不外泄;但是,执行适当的服务器验证以阻止向冒充服务器意外泄漏信息对于确保连接安全非常重要。 | 无 |
| 支持在各个商家配置文件之间共享凭据 | 不能在各个商家配置文件之间共享密码 | 允许您在 MSO 内或 MSO 之间(基于权限)与多个商家配置文件共享证书集 ID。 |