测试 stripe webhooks 很痛苦。我不使用 Django,所以我的回答会更笼统。
我的 php webhook 处理程序解析 webhook 数据并相应地调度处理程序函数。在我的处理程序类中,我为测试 webhook 破坏的所有 id 设置了具有合法数据的类属性。然后我在每个处理程序函数中都有一个条件来测试实时模式。如果为 false,我用合法的测试 id 替换损坏的 id。
我还有另一个名为 $fakeLiveMode 的类属性,我在测试时将其设置为 true。这使我可以强制代码像在实时模式下一样处理。
因此,例如,在测试 customer.subscription.updated 事件时,计划 ID 和客户 ID 会搞砸。所以在那个处理程序中我会这样做:
if ($event->livemode === true || $this->fakeLivemode)
{
if ($this->fakeLivemode)
{
// override botched data returned by test webhook
$event->data->object->plan->id = $this->testPlanId;
$event->data->object->customer = $this->testCustomerId;
}
// process webhook
}
这有帮助吗?