fix(java): skip settlement for error responses (4xx/5xx) #721
+113
−28
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds response status code check before settlement in Java PaymentFilter. If the handler returns a 4xx or 5xx status code, settlement is skipped to prevent charging users for failed requests.
Problem
Currently the Java middleware settles payments regardless of whether the handler succeeded or failed. If the handler returns a 500 error, the user is still charged even though they didn't receive the content they paid for.
Go middleware already checks
writer.statusCode >= 400before settlement.Python middleware already checks
response.status_code >= 200 and response.status_code < 300before settlement.Changes
response.getStatus() >= 400check before callingfacilitator.settle()resp.getStatus()appropriatelyRelated