测试Django对Stripe Webhook的响应
我正在寻找一个有效的方法来测试我的服务器如何处理来自Stripe的webhook。现在我正在搭建一个系统,用于给客户的信用卡添加多个订阅,这在Stripe的网站上有说明:
https://support.stripe.com/questions/can-customers-have-multiple-subscriptions
我遇到的问题是,如何有效地测试我的服务器是否正确执行了脚本(也就是说,是否将正确的订阅添加到发票中,是否在我的数据库中记录了事件等等)。我现在并不太关心如何自动化测试,我只是想有效地运行一些好的测试来检查脚本。有没有人之前用Django做过这个?你们用了哪些资源和工具来进行这些测试?
谢谢!
4 个回答
在 django-stripe-payments 这个项目里,我有一个 测试套件。虽然这个测试还不够全面,但它是一个开始,帮助我们逐步完善。我的做法是复制一个真实的 webhook 数据,然后把里面的敏感信息去掉,再把处理后的数据放到测试中。
我真的很喜欢Stripe提供的网络钩子的日志,不过查看它们的错误响应有点困难,所以我用Requests库写了一个脚本。首先,我去了Stripe的仪表盘,复制了他们发送的一个请求。
事件与网络钩子 --> 点击其中一个请求 --> 复制整个请求
import requests
data = """ PASTE COPIED JSON REQUEST HERE """
# insert the appropriate url/endpoint below
res = requests.post("http://localhost:8000/stripe_hook/", data=data).text
output = open("hook_result.html", "w")
output.write(res)
output.close()
现在我可以打开hook_result.html
,查看可能出现的任何django错误(前提是django的DEBUG设置为True)。
我没有使用任何工具来运行测试。Stripe 提供了一个完整的 API 参考,里面显示了你发送给他们的信息,还会显示错误信息。Stripe 的设置非常简单,费用也不高,文档中有详细的说明。
我做了什么呢?
首先,我创建了一个 Stripe 账户。在这个账户里,他们会给你:
- TEST_SECRET_KEY:用于在 Stripe 中发送支付和信息(用于测试)
- TEST_PUBS_KEY:在与 Stripe 通信时识别你的网站(用于测试)
- LIVE_SECRET_KEY:用于在 Stripe 中发送支付和信息(用于正式使用)
- LIVE_PUBS_KEY:在与 Stripe 通信时识别你的网站(用于正式使用)
- API_VERSION:“2012-11-07” //这是仅用于测试的版本
登录后,你会看到页面顶部有“文档”选项。点击文档,他们会提供一步一步的教程,教你如何创建表单、如何创建订阅、如何处理错误等等。
要检查你的脚本是否在执行并连接到 Stripe,点击“完整 API 参考”,然后选择 Python。在那个页面上,你会看到你发送的信息和遇到的错误。
我特别喜欢的是,如果 Stripe 检测到错误,系统会指出来并给你解决方案。解决方案在左侧,检查发送的信息在右侧。
Stripe 分为两个模式:测试模式和正式模式。在测试模式下,你可以创建新客户、添加新发票、设置订阅等等。你在测试模式下做的所有操作,在正式模式下也是一样的。