springstripe-payments

Why is dataObjectDeserializer.getObject() not present?


I have created a spring-boot server for handling stripe webhooks. However, webhooks are working - I am getting an event, but when i try to get the value of dataObjectDeserializer.getObject() its null. Any ideas why that might be and how to fix it.

Here is the code:

    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.
    }

Solution

  • I ran into the same issue recently.

    In my case (Which I believe might be yours as well). Is that the Event is not being properly deserialized because a version mismatch between the API you are using in your account and the models of the Stripe SDK in your project. You can check this by looking into: Event.getApiVersion() and Stripe.API_VERSION. If they differ then you will need to properly upgrade them and take in consideration migration guidelines if they apply to your scenario.

    On my case since it was a first time I didn't need to go through any migration and I just simply when to my dash board and upgrade the sdk:

    Dashboard Note: It displays rollback because I did upgrade it. If you haven't you will have a "Upgrade" option available.

    You can find more info on their documentation page:

    Upgrade Stripe API Versioning

    Hope this helps!