我目前正在为我的应用程序设置 stripe webhook。
我遇到了分级价格更新的问题。目前,如果我更新某个层级的价格,则不会触发此事件的 Webhook。
我的其他所有内容的 Webhook 都工作正常,例如,对于统一费率的价格,当我更新价格时,Webhook 就会被触发。
我试图在文档中查找有关此内容的信息,但找不到任何明确引用此内容的内容。 Stripe 是否只是不发出定价层更新事件?
我查看了文档,并对与我的应用程序相关的所有其他 Web 挂钩进行了工作测试实现。
请参阅下面的我的代码:
stripeWebhookRoute.mjs:
import express from "express";
import bodyParser from "body-parser"
import stripePackage from 'stripe'
import { handleStripeWebhooks } from "../services/stripeServices/handleWebhooks.mjs";
const stripe = stripePackage(process.env.STRIPE_API_KEY);
const router = express.Router();
router.post('/webhook', bodyParser.raw({ type: 'application/json' }), async (req, res) => {
let event;
const sig = req.headers['stripe-signature'];
const webHookSecret = process.env.STRIPE_WEBHOOK_KEY;
try {
if (webHookSecret) {
event = stripe.webhooks.constructEvent(req.body, sig, webHookSecret);
}
} catch (error) {
console.error('⚠️ Webhook signature verification failed.', error.message);
return res.status(400).send(`Webhook Error: ${error.message}`);
}
// Acknowledge receipt of the event right away
res.status(200).json({ received: true });
handleStripeWebhooks(event);
})
export default router;
我的handleWebHook.mjs文件
import { handlePriceUpdate } from "./pricing/handlePricingUpdate.mjs";
/**
*
* @param {*} event a stripe event
* Receives a stripe webhook event and triggers execution logic.
*/
export const handleStripeWebhooks = async(event) => {
switch (event.type) {
case 'price.updated':
console.log("Price updated");
handlePriceUpdate(event);
break;
default:
console.log(`Unhandled event type ${event.type}.`);
}
}
不发送
price.updated
事件预计会更改层级价格的金额,因为默认情况下,价格对象中不包含 tiers
字段。
tiers
是一个 expandable 字段,即仅在请求该特定字段的附加信息时才可用。
对于默认情况下不包含在对象中的任何可扩展字段,不会发送更新事件。