Stripe API 测试自动化

Posted

技术标签:

【中文标题】Stripe API 测试自动化【英文标题】:Stripe API testing automation 【发布时间】:2021-11-29 09:35:30 【问题描述】:

背景

我正在将 Stripe API 集成到我的网站中以进行一次性付款。我的网站将首先在服务器端使用 API,并带有单独的 Web 和移动前端。我正在处理 API 服务器端代码。我最终将使用条带支付页面进行信用卡支付。我正在尝试自动化我的 API 测试,但被文档(很详尽)迷惑了,因为我看不出下一步要采取什么步骤。

我的服务器端使用 stripe sdk 发起一个带有条带的调用来创建一个条带会话对象 - 这包含一个重定向到 checkout.stripe.com/pay/... 的 URL、一个支付成功时的成功 URL 和一个取消 URL(这些我设置处理回调)。

问题

我可以在 Postman 中自动执行浏览产品、选择产品、下订单的所有 API 调用,但下一步我被卡住了。下订单后,我返回了 Stripe 会话,但我如何模仿使用 Stripe 为会话付款,然后调用我的成功 URL?

网站完成后,我会将 UI 重定向到条带以进行付款,但我正在测试并首先完成后端流程。

我已经复制并粘贴了条带会话对象返回的会话 URL,以在浏览器中显示页面,并使用 Chrome 上的开发工具检查网络以查看条带正在调用哪些 API 以尝试重现我可以看到stripe.com/api/payment_methods 的 POST 并且我可以看到发布的值,但我无法在 Postman 中重现它。此外,文档 (https://stripe.com/docs/api/payment_methods/create) 说

"我们建议您不要直接创建 PaymentMethod,而是使用 PaymentsIntents API 以立即接受付款”

问题

我需要调用哪些条带 API 来自动化条带 Session 对象的流程以进行支付,然后检查它是否成功?支付方式?收费?付款意图? ...如何。如果您能帮助我理解流程,很高兴被指向文档。

TIA

【问题讨论】:

【参考方案1】:

Checkout 是一款 Stripe 产品,看起来像一个“盒子”,您不知道(也不应该知道)里面发生了什么。创建它的目的是让商家不必考虑幕后所做的事情。

从自动化的角度讲,你可以尝试重现整个过程,但不能保证以后不会改变,以后可能会给你带来更多问题。

关于重现的选项:

    最接近的方法是使用自动浏览器工具(即 Selenium)模拟浏览器填充和提交。但它不像 PostMan 那样简单。通常,您会希望模拟人类可以执行的每个浏览器操作。 或者,当您自己测试结帐会话时,您可以尝试使用 在 Stripe 的仪表板上收到的日志和事件来完成相同的操作。从现在开始有 3 个请求。

您的目标是在 Webhook 中接收相同的 5 个事件:

TBH 我建议重新考虑是否需要进行此测试,看看是否值得您努力。

【讨论】:

感谢您的回复 orakaro。我同意结帐是黑匣子,但这一步不是我工作流程的最后一步。我确实注意到会话对象确实返回了一个 payment_intent。我如何使用它进行付款,然后检查其状态是否成功。这应该足够了。我要收费吗?如果是这样,您能否指出需要使用 payment_intent id 调用哪个 API?再次感谢您 结帐会话完成后,您的 PaymentIntent 应该已经支付,如果那是您感到困惑的地方。您始终可以在 Stripe 仪表板上的“付款”部分下查看付款意向状态。

以上是关于Stripe API 测试自动化的主要内容,如果未能解决你的问题,请参考以下文章

通过 API 添加 Stripe 订阅

在 Stripe Customer 对象 C# 中访问元数据时遇到问题

如何通过 API 清除 Stripe 中的测试数据?

在 Paypal API 与 Stripe API 中进行测试?

Stripe Payment 是不是支持自动定期付款?

如何使用 Paypal 或 Stripe 自动为帐户充值