AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 79256457
Accepted
PhilM
PhilM
Asked: 2024-12-06 06:59:44 +0800 CST2024-12-06 06:59:44 +0800 CST 2024-12-06 06:59:44 +0800 CST

Django/Stripe-未找到 Webhook

  • 772

我正在尝试建立一个带有条纹的 webhook。(第一次)

但是,似乎没有找到 webhook 的路径。

希望有人能用全新的视角告诉我我做错了什么。

在我的 urls.py 中(项目级别)

urlpatterns = [

    path('my_app/', include('my_app.urls')),
    ...
]

在 urls.py 应用程序级别:

urlpatterns = [
    ..
    path('stripe_webhook/', views.stripe_webhook, name='stripe_webhook')
]

在我的views.py(my_app级别)中:

@csrf_exempt
def stripe_webhook(request):
    print("enter webhook")
    stripe.api_key = settings.STRIPE_SECRET_KEY_TEST
   
    payload = request.body
    signature_header = request.META.get('HTTP_STRIPE_SIGNATURE')
    webhook_secret = settings.STRIPE_WEBHOOK_SECRET_TEST
    ...

在条纹中,在本地听众中我已经注册:

localhost:8000/stripe_webhook/

如果我运行stripe trigger customer.created. 我会得到以下返回结果:

A newer version of the Stripe CLI is available, please update to: v1.22.0
Setting up fixture for: customer
Running fixture for: customer
Trigger succeeded! Check dashboard for event details.

但是,同时运行时stripe listen --forward-to localhost:8000/stripe_webhook/,我还收到以下日志:

> Ready! You are using Stripe API Version [2024-09-30.acacia]. Your webhook signing secret is XXXXX (^C to quit)
2024-12-05 22:27:54   --> customer.created [xxx]
2024-12-05 22:27:54  <--  [404] POST http://localhost:8000/stripe_webhook/ [xx]

并且我的服务器日志也会返回(无论是在生产中还是本地)Not Found: /stripe_webhook/:。

这让我认为我的 webhook 路径配置不正确,但我看不到任何可能遗漏的内容。我是否忘记了 Stripe 平台上的某些内容?

注意:我的 .env 文件中的所有键(STRIPE_PUBLIC_KEY_TEST、STRIPE_SECRET_KEY_TEST和STRIPE_WEBHOOK_SECRET_TEST)都与 Stripe 平台上提供的键匹配。

有什么想法吗?

django
  • 1 1 个回答
  • 23 Views

1 个回答

  • Voted
  1. Best Answer
    RyanM
    2024-12-06T07:54:49+08:002024-12-06T07:54:49+08:00

    在我看来,您在应用 URL 前面添加了my_app/,因此我希望它出现在最终 URL 中。我有一个长期(3 年以上)的 Django 与 Stripe 集成,当我检查我的根urls.py文件时,我发现我的主要应用 URL 指定如下

    path('', include('payments.urls')),
    

    这避免了需要包含应用程序前缀,因此localhost:8000/webhooks/对我来说很有用。

    既然您指定了my_app/,您应该尝试一下localhost:8000/my_app/stripe_webhook。您可以使用CLI触发 webhook 事件,以便检查它是否有效。

    我喜欢使用的另一种方法是在我的 webhook 函数中添加 API 方法检查,并使用类似的内容响应 GET 请求<h1>Hello Webhook!</h1>。如下所示:

    @csrf_exempt
    def stripe_webhook(request):
       if request.method == "GET":
          # Respond with webpage indicating success
       else:
          # Do webhook-y stuff here
    

    这样,您可以通过将 URL 放入 Web 浏览器中轻松测试路由是否正常运行。

    • 1

相关问题

  • Django Admin:在一个部分中同时显示多个应用程序?

  • 触发 pk 的DoesNotExist 异常的最有效方法

  • 在 django 模板中显示 models.DateField 值

  • Templatetag 在 Django 4.2 模板 IF 条件中不起作用

  • Django admin:查看单个项目时显示计算属性

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    为什么这个简单而小的 Java 代码在所有 Graal JVM 上的运行速度都快 30 倍,但在任何 Oracle JVM 上却不行?

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    何时应使用 std::inplace_vector 而不是 std::vector?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Martin Hope
    Aleksandr Dubinsky 为什么 InetAddress 上的 switch 模式匹配会失败,并出现“未涵盖所有可能的输入值”? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge 为什么这个简单而小的 Java 代码在所有 Graal JVM 上的运行速度都快 30 倍,但在任何 Oracle JVM 上却不行? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini 具有指定基础类型但没有枚举器的“枚举类”的用途是什么? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer 何时应使用 std::inplace_vector 而不是 std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB 为什么 GCC 生成有条件执行 SIMD 实现的代码? 2024-02-17 06:17:14 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve