我创建了一个 spring-boot 服务器来处理 stripe webhooks。 但是,webhooks 正在工作 - 我收到一个事件,但是当我尝试获取 dataObjectDeserializer.getObject() 的值时,它为 null。任何想法可能是为什么以及如何解决它。
这是代码:
Event event = null;
try {
event = Webhook.constructEvent(
payload, sigHeader, endpointSecret
);
} catch (SignatureVerificationException e) {
// Invalid signature
logger.info("Webhook error while validating signature.");
return "";
}
EventDataObjectDeserializer dataObjectDeserializer = event.getDataObjectDeserializer();
StripeObject stripeObject = null;
if (dataObjectDeserializer.getObject().isPresent()) {
stripeObject = dataObjectDeserializer.getObject().get();
} else {
// Deserialization failed, probably due to an API version mismatch.
// Refer to the Javadoc documentation on `EventDataObjectDeserializer` for
// instructions on how to handle this case, or return an error here.
}
我最近遇到了同样的问题。
就我而言(我相信也可能是你的)。事件未正确反序列化,因为您帐户中使用的 API 与项目中 Stripe SDK 模型之间的版本不匹配。您可以通过查看 Event.getApiVersion() 和 Stripe.API_VERSION 来检查这一点。 如果它们不同,那么您将需要正确升级它们,并考虑迁移指南(如果它们适用于您的场景)。
就我而言,因为这是第一次,我不需要进行任何迁移,我只需简单地到我的仪表板并升级 SDK 即可:
仪表板注意:它显示回滚,因为我确实升级了它。如果还没有,您将可以使用“升级”选项。
您可以在他们的文档页面上找到更多信息:
希望这有帮助!
对于其他正在寻找此内容的人。
同时升级您的 sprive-java 库。我当时是20.68,升级到24.0后问题就解决了!
我个人,您将在 2024 年 6 月 20 日通过 event.getApiVersion 与 Stripe.API_VERSION 一起完成 stripe j'ai tout update(模式开发和模式产品) ),par contre object null quand je recois le deserializer,une idée? (我使用 CLI)