fix: send the type of payment confirmation models - #11
Merged
Merged
Conversation
Each confirmation variant inherited a required type from ConfirmationData but never set it, so ConfirmationDataRedirect.new(return_url:) reached the API without the type the gateway requires. The variant constructors were also typed without the inherited fields, so typed callers could not pass type or locale at all. Each variant now declares its type as a constant, the union picks variants by type, and the RBI/RBS constructors take locale and type. Fixes #10 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #10.
A confirmation built from the SDK models was sent without its required
type:PaymentCreateParams::Confirmationdeclaresrequired :type, const: :<value>, so it serializes its type by itself. The union hasdiscriminator :type.locale:(inherited fromConfirmationData) andtype:, which defaults to the variant's value;typeis typed on each variant.type.The spec side is Hexlet/yoomoney-api#2.
rake lint(rubocop, Sorbet, Steep) andrake test(99 runs, 0 failures) pass.🤖 Generated with Claude Code