gpt4 book ai didi

ruby-on-rails - 测试 Stripe 的 webhooks - 总是出错

转载 作者:数据小太阳 更新时间:2023-10-29 08:37:21 26 4
gpt4 key购买 nike

我正在 Stripe 中测试网络 Hook ,我从 Stripe 的网站发送一个事件,这是我的代码:

require 'json'

class StripeWebHooksController < ApplicationController
protect_from_forgery except: :webhook

def webhook
data_json = JSON.parse(request.body.read)
event = Stripe::Event.retrieve(data_json['id'])
#....

它总是抛出异常:


Stripe::InvalidRequestError(无法确定请求哪个 URL:Stripe::Event 实例具有无效 ID:无)
在 Stripes 的网站上,由于某种原因它说 id 是 00000,而在 production.log 中它不是零,它有一个真实的 id。

enter image description here

这是来自 Stripe.com 的数据:

{
"created": 1326853478,
"livemode": false,
"id": "evt_00000000000000",
"type": "charge.succeeded",
"object": "event",
"request": null,
"pending_webhooks": 1,
"api_version": "2015-02-10",
"data": { # and so on....

这是来自 production.log 的内容:

[- 8b95acf0-96ab-0132-4be7-42010af08843]   Parameters: {"id"=>"evt_15VG6eKl7JrIRpD6md9wpwUu", "created"=>1423721144, "livemode"=>false, "type"=>"invoice.created", "data"=>{"object"=>{"date"=>1423721144, "id"=>"in_15VG6eKl7JrIRpD6Nnd5hqm3", "period_start"=>1423721144, "period_end"=>1423721144, "lines"=>{"object"=>"list", "total_count"=>1, "has_more"=>false, "url"=>"/v1/invoices/in_15VG6eKl7JrIRpD6Nnd5hqm3/lines", "data"=>[{"id"=>"sub_5gdNIr16MzaeUe", "object"=>"line_item", "type"=>"subscription", "livemode"=>false, "amount"=>28000, "currency"=>"cad", "proration"=>false, "period"=>{"start"=>1423721144, "end"=>1426140344}, "subscription"=>nil, "quantity"=>1, "plan"=>{"interval"=>"month", "name"=>"accelerated_test", "created"=>1423705393, "amount"=>28000, "currency"=>"cad", "id"=>"accelerated_test", "object"=>"plan", "livemode"=>false, "interval_count"=>1, "trial_period_days"=>nil, "metadata"=>{}, "statement_descriptor"=>nil, "statement_description"=>nil}, "description"=>nil, "metadata"=>{}}]}, "subtotal"=>28000, "total"=>28000, "customer"=>"cus_5gdN3daWCJVNzg", "object"=>"invoice", "attempted"=>true, "closed"=>true, "forgiven"=>false, "paid"=>true, "livemode"=>false, "attempt_count"=>1, "amount_due"=>28000, "currency"=>"cad", "starting_balance"=>0, "ending_balance"=>0, "next_payment_attempt"=>nil, "webhooks_delivered_at"=>nil, "charge"=>"ch_15VG6eKl7JrIRpD6nHI4iIdx", "discount"=>nil, "application_fee"=>nil, "subscription"=>"sub_5gdNIr16MzaeUe", "tax_percent"=>nil, "metadata"=>{}, "statement_descriptor"=>nil, "description"=>nil, "receipt_number"=>nil, "statement_description"=>nil}}, "object"=>"event", "pending_webhooks"=>1, "request"=>"iar_5gdNTJThO2GckT", "api_version"=>"2014-11-20"}

无论如何,即使它是零,也不必引发异常,不是吗?如果是,我到底该如何测试?

最佳答案

这里的问题是测试 Webhook 按钮正在发送一个事件,因此您无法通过 API 检索它。您需要添加一些特定代码,以便当事件 ID 为 "evt_00000000000000" 时,您不会调用 Stripe::Event.retrieve(data_json['id'])

如果您想测试 webhook,只需在您的帐户中以测试模式创建客户或费用,事件就会自动发送。

关于ruby-on-rails - 测试 Stripe 的 webhooks - 总是出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28523546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com