Describe the bug
Using some stripebased payments, when an unsuccessful response is resived, the "error" field in the body may be a string instead of a correct json object in raw response
While parsing the error in the com.stripe.net.LiveStripeResponseGetter#handleApiError method, a ClassCastException error is thrown which is thrown out and is uninformative to the sdk consumer
To Reproduce
- Make any api call that returns a non json type error
- Get exception
java.lang.ClassCastException: class com.google.gson.JsonPrimitive cannot be cast to class com.google.gson.JsonObject
Expected behavior
It is expected that any api call with an error will throw a StripeException or its child exception with a message from the api
Code snippets
No response
OS
all
Java version
21
stripe-java version
26.1.0
API version
2024-06-20
Additional context
try {
JsonObject jsonObject =
ApiResource.INTERNAL_GSON
.fromJson(response.body(), JsonObject.class)
.getAsJsonObject("error");
error = ApiResource.deserializeStripeObject(jsonObject.toString(), StripeError.class, this);
} catch (JsonSyntaxException e) {
raiseMalformedJsonError(response.body(), response.code(), response.requestId(), e);
}
The issue here getAsJsonObject("error")
I think that just need to add ClassCastException to the catch block
Describe the bug
Using some stripebased payments, when an unsuccessful response is resived, the "error" field in the body may be a string instead of a correct json object in raw response
While parsing the error in the com.stripe.net.LiveStripeResponseGetter#handleApiError method, a ClassCastException error is thrown which is thrown out and is uninformative to the sdk consumer
To Reproduce
java.lang.ClassCastException: class com.google.gson.JsonPrimitive cannot be cast to class com.google.gson.JsonObjectExpected behavior
It is expected that any api call with an error will throw a StripeException or its child exception with a message from the api
Code snippets
No response
OS
all
Java version
21
stripe-java version
26.1.0
API version
2024-06-20
Additional context
The issue here
getAsJsonObject("error")I think that just need to add ClassCastException to the catch block