支付处理概念
通过支付请求 API,网站或应用程序可以轻松处理支付。在本文中,我们将了解 API 的运作方式及其各个组件的作用。
术语
在深入了解 API 的运作细节之前,有一些事项需要了解。
- 收款人(或商家)
-
商家——无论是个人还是组织——其网站或应用程序希望通过支付请求 API 收款。
- 付款人
-
使用网站或应用程序进行购买的个人或组织。付款人根据支付方式的要求进行身份验证,然后授权付款。
- 支付方式
-
提交付款的工具,例如信用卡或在线支付服务。
- 支付方式提供商
-
提供使用给定支付方式提交付款所需技术的组织。例如,当使用信用卡付款时,信用卡处理服务就是支付方式提供商。
- 支付处理程序
-
为了处理支付,需要与特定支付方式提供商交互的代码实现。
一些支付处理程序使用商家验证,这是以某种方式验证商家身份的过程,通常使用某种形式的加密响应,例如公钥。经过验证的商家才能与支付处理程序交互。
支付方式标识符
支付处理程序由支付方式标识符标识,这些标识符是唯一标识支付处理程序的字符串。这些标识符可以是标准化的支付处理程序标识符之一,也可以是支付处理服务用于标识自身和处理支付的 URL。
标准化的支付方式标识符
标准化的支付方式标识符列在支付方式注册表中。
secure-payment-confirmation
-
标识安全支付确认方法。此方法的支付请求数据由
SecurePaymentConfirmationRequest
字典定义。有关更多信息,请参阅使用安全支付确认。 basic-card
-
此支付方式标识符旨在通过支付请求 API 促进 Web 上的基于卡的支付。Web 支付工作组已弃用此支付方式。
基于 URL 的支付方式标识符
这些标识符可能会因服务的具体情况而异,并且给定的处理服务可能会使用多个 URL,具体取决于其 API 的版本、其通信技术等等。
https://apple.com/apple-pay
-
支付通过Apple Pay服务处理。目前,Apple Pay 仅受 Safari 支持。
https://google.com/pay
-
支付由Google Pay处理。目前,仅 Chrome 和基于 Chromium 的浏览器支持此功能。
支付处理程序的功能
一个用户代理可能会为某些类型的支付提供内置支持。此外,支付处理程序 API可用于在支持它的浏览器中建立对其他支付方式提供商的支持。在任何一种情况下,支付处理程序都负责
- 确保可以进行支付。支付成为可能的条件因支付方式和用户的支付请求而异;例如,如果用户选择使用收款人无法接受的信用卡付款,则无法进行支付。
- 如果支付处理程序支持商家验证,则响应来自用户代理的商家验证请求。有关详细信息,请参阅商家验证。
- 验证用户提供的信息是否会导致有效的交易。这将导致创建并返回一个特定于支付方式的对象,其中包含处理交易所需的信息。
商家验证
一些支付处理程序使用商家验证,这是以某种方式验证商家身份的过程,通常使用某种形式的加密挑战。如果商家未成功验证,则不允许使用支付处理程序。
确切的验证技术取决于支付处理程序,商家验证完全是可选的。最终,网站或应用程序唯一需要负责的是获取商家的验证密钥并将其传递到事件的complete()
方法中。
paymentRequest.onmerchantvalidation = (event) => {
event.complete(fetchValidationData(event.validationURL));
};
在此示例中,fetchValidationData()
是一个函数,它从validationURL
给定的地址加载特定于支付处理程序的识别信息。请注意,此函数必须通过商家服务器,因为客户端通常不会访问验证 URL 本身。
然后,通过将此数据(或解析为已加载数据的Promise
)传递到complete()
中传递给支付处理程序,支付处理程序可以使用检索到的数据以及任何算法和其他数据来支持,以验证商家是否可以使用支付处理程序。
因此,需要注意的是,用户代理绝不会发送merchantvalidation
事件,除非用户代理本身实现了支付处理程序。例如,Safari 集成了对 Apple Pay 的支持,因此 Apple Pay 支付处理程序使用此功能来确保可以使用 Apple Pay 向商家付款,方法是将merchantvalidation
发送到客户端,指示它获取服务器的验证数据并通过调用complete()
将其传递给支付处理程序。
规范
规范 |
---|
支付请求 API |
支付方式标识符 |