为什么 dataObjectDeserializer.getObject() 不存在?

问题描述 投票:0回答:3

我创建了一个 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.
    }
spring stripe-payments
3个回答
13
投票

我最近遇到了同样的问题。

就我而言(我相信也可能是你的)。事件未正确反序列化,因为您帐户中使用的 API 与项目中 Stripe SDK 模型之间的版本不匹配。您可以通过查看 Event.getApiVersion() 和 Stripe.API_VERSION 来检查这一点。 如果它们不同,那么您将需要正确升级它们,并考虑迁移指南(如果它们适用于您的场景)。

就我而言,因为这是第一次,我不需要进行任何迁移,我只需简单地到我的仪表板并升级 SDK 即可:

仪表板注意:它显示回滚,因为我确实升级了它。如果还没有,您将可以使用“升级”选项。

您可以在他们的文档页面上找到更多信息:

升级Stripe API 版本控制

希望这有帮助!


0
投票

对于其他正在寻找此内容的人。

同时升级您的 sprive-java 库。我当时是20.68,升级到24.0后问题就解决了!


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)

© www.soinside.com 2019 - 2024. All rights reserved.