如何在 PayPal 支付网关中集成 3D Secure 身份验证?
Posted
技术标签:
【中文标题】如何在 PayPal 支付网关中集成 3D Secure 身份验证?【英文标题】:How to integrate 3D Secure authentication in PayPal payment gateway? 【发布时间】:2021-10-11 02:29:12 【问题描述】:祝大家有美好的一天。我目前正在我的一个项目中集成 PayPal 支付网关(后端)。这是我第一次在支付网关工作。我想使用贝宝的 Orders API 集成 3D 安全身份验证。任何人都可以告诉我使用 API 集成 Paypal 使用 3D 安全身份验证的流程吗?
例如: 我已经使用 POSTMAN 测试了没有 3D 安全身份验证的正常流程。流程如下。
-
我从前端获取金额和货币。
我使用从公司数据库收到的 clientID 和密码创建访问令牌。
然后我使用https://api.sandbox.paypal.com/v2/checkout/orders API 创建一个订单。
我从https://www.paypal.com/checkoutnow?token=5O190127TN364715T 之类的响应中获得了结帐链接
我将用户重定向到此链接,该链接将用户重定向到 Paypal 页面以进行付款。完成付款后,我将用户重定向到成功/失败 URL,该 URL 还包含令牌和付款人 ID。
然后我使用https://api-m.paypal.com/v2/checkout/orders/
现在我想为其添加 3D 安全身份验证。从集成 3D Secure 的文档中,我发现我需要在其中添加支付源,并在 Card 对象中添加 SCA_ALWAYS 作为验证属性。但是我怎样才能让支付源作为请求在正文中提供? (仅供参考,我不应该使用 PayPal 的任何库作为公司政策)
【问题讨论】:
【参考方案1】:在您的示例中重定向到诸如 https://www.paypal.com/checkoutnow?token=5O190127TN364715T
之类的 PayPal 结帐页面时(或者为了更好的用户体验,永远不要重定向,而是使用保持您的网站加载的in-context popup),那里无需实施 3D Secure。如果需要,PayPal 将提供任何 3D 安全流程,这取决于买家账户及其所在国家/地区和所使用的信用卡,并且可能仅在第一次使用该卡时发生。
实施 3D 安全仅适用于直接卡集成,例如 Advanced Credit and Debit Cards (with or without hosted fields) 或 Braintree Gateway。
【讨论】:
所以在这种情况下,我不需要添加任何其他内容?我可以知道有没有办法测试它是否默认工作? 如果您不使用高级信用卡和借记卡/托管字段或 Braintree 网关,则无需实施或测试。贝宝与信用卡公司有自己的整合,并负责一切。您甚至都不知道是否使用了一张卡付款,您只知道您收到了完整的 PayPal 付款。 另一个问题,当结帐页面被加载时,它会根据浏览器的缓存/cookies 显示选项。就像我在隐身页面中打开它一样,它会显示用户可以使用信用卡或 Paypal 帐户(如果有)支付的所有内容,但是如果我使用另一个标签打开它,我在之前的交易中登录了 paypal,它不会显示任何信用卡即使我将landing page
硬编码为BILLING
,也可以选择。有什么办法可以解决这个问题,以便每次重定向到结帐链接时都会显示BILLING
页面?谢谢
不,没有。 PayPal 页面的行为将始终以这种方式依赖于 cookie。但是,如果您想始终显示黑色的“借记卡或信用卡”选项,请使用上下文流
在您的服务器上创建两条路由,一条用于“创建订单”,一条用于“捕获订单”,此处记录:developer.paypal.com/docs/business/checkout/… 这些路由应仅返回 JSON 数据(无 html 或文本)。当捕获响应成功时,将成功的付款详细信息存储在您的数据库中(特别是purchase_units[0].payments.captures[0].id
,PayPal 交易 ID)并在发送返回 JSON 之前执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品)以上是关于如何在 PayPal 支付网关中集成 3D Secure 身份验证?的主要内容,如果未能解决你的问题,请参考以下文章
将 adyen 支付网关与 Paypal 和 iDeal 集成