代码之家  ›  专栏  ›  技术社区  ›  yvzyldrm

测试Stripe checkout.session.com完成的webhook时无法发送电子邮件参数

  •  0
  • yvzyldrm  · 技术社区  · 1 年前

    我试图使用Stripe CLI触发测试事件,但收到错误:

    
    stripe trigger checkout.session.completed \
      --add checkout_session:customer_email='[email protected]'
    Setting up fixture for: product
    Running fixture for: product
    Setting up fixture for: price
    Running fixture for: price
    Setting up fixture for: checkout_session
    Running fixture for: checkout_session
    Setting up fixture for: payment_page
    Running fixture for: payment_page
    Setting up fixture for: payment_method
    Running fixture for: payment_method
    Setting up fixture for: payment_page_confirm
    Running fixture for: payment_page_confirm
    Trigger failed: Request failed, status=400, body={
      "error": {
        "message": "An error has occurred confirming the Checkout Session.",
        "request_log_url": "https://dashboard.stripe.com/test/logs/req_elQJtM7U0QAPjO?t=1735241822",
        "type": "invalid_request_error"
      }
    }
    

    我处于测试模式并使用最新的Stripe CLI版本。是什么导致了这个错误,我该如何修复它? 任何帮助都将不胜感激。谢谢!

    我尝试使用Stripe CLI使用以下命令触发测试checkout.session.comcompleted webhook事件:

    stripe trigger checkout.session.completed \
    --add checkout_session:[email protected]
    

    预期行为:

    webhook应使用提供的电子邮件参数成功触发 应收到包含测试事件数据的成功响应

    实际行为:

    获取错误响应:

    {
      "error": {
        "message": "An error has occurred confirming the Checkout Session.",
        "request_log_url": "https://dashboard.stripe.com/test/logs/req_M8CaC5kpkEz0JH?t=1735241549",
        "type": "invalid_request_error"
      }
    }
    

    我正在测试模式下运行此程序,并已验证我的Stripe CLI是最新的。出于开发目的,我需要使用特定的电子邮件参数测试此webhook。

    1 回复  |  直到 1 年前
        1
  •  1
  •   hanzo    1 年前

    会话确认失败的原因是,当您触发时,Stripe CLI会生成一个包含虚拟数据的新PaymentMethod对象 checkout.session.completed 活动。此PaymentMethod对象使用虚拟电子邮件地址作为计费信息。

    然后,结账会话与您传递到PaymentMethod计费电子邮件的电子邮件不匹配。为了解决这个问题,您需要覆盖PaymentMethod上的账单电子邮件。

    你可以通过使用 --override 旗帜状:

    stripe trigger checkout.session.completed   
    --add checkout_session:customer_email='[email protected]' 
    --override payment_method:billing_details['email']="[email protected]"
    

    上面的代码应该可以工作!:)