Repository navigation
feat(setups): add setup payment type, drop rejected identification types - #226
rodrigojara-cko wants to merge 6 commits into
Conversation
🟡 Risk Classification: MINORApproval route: AI Review + Human Approval Classification reasons
Operational gates
Files analysed: 12 wall-e 2026.06.19-02 · policy |
🔬 Debug — why this classification?Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.
Kinds:
See issue #3 for the proposal to formalise this map as Appendix A of the standards doc. wall-e 2026.06.19-02 · debug |
🟢 Advisory review: Looks good to meThis PR still needs a human approval — wall-e cannot auto-approve it. For what it's worth, I read the diff and found nothing I'd block on. Adds PaymentSetupPaymentType with six lowercase values, removes TAX_ID/OTHER identification types, adds sender.reference, deprecates removed schema fields, and fixes the confirm integration spec to assert correct response fields. The diff is internally consistent and matches the stated intent. What I checked
This is not an approval. wall-e cannot auto-approve this PR — it is an opinion to help whoever does. Advisory review · us.anthropic.claude-sonnet-4-6 · wall-e 2026.06.19-02 |
🟡 Risk Classification: MINORApproval route: AI Review + Human Approval Classification reasons
Operational gates
Files analysed: 13 wall-e 2026.06.19-02 · policy |
🔬 Debug — why this classification?Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.
Kinds:
See issue #3 for the proposal to formalise this map as Appendix A of the standards doc. wall-e 2026.06.19-02 · debug |
Adds PaymentSetupPaymentType with the six lowercase values, removes the identification types the API rejects with 422, fixes the confirm integration spec and deprecates card_present.
- AccountFundingTransactionSender: add reference, documented, with wire key, round trip and swagger example tests. - Confirm integration specs assert PaymentSetup fields instead of action_id, status and processed_on, which the confirm response lacks. - BacsPaymentMethod: drop the update note on initialization, it is not in the specification. - Revert the csv runtime dependency, it moves to its own change.
AccountFundingTransactionSender first_name, last_name, country_of_birth, nationality and address, and AccountFundingTransactionRecipient account_type are not part of the Payment Setups account funding transaction schema and the API ignores them. They are kept, marked @deprecated, and still serialize under their keys.
Descriptions, optionality, length limits and date format from the Payment Setups specification. No behaviour change.
c279580 to
d612c86
Compare
🟡 Risk Classification: MINORApproval route: AI Review + Human Approval Classification reasons
Operational gates
Files analysed: 13 wall-e 2026.06.19-02 · policy |
🔬 Debug — why this classification?Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.
Kinds:
See issue #3 for the proposal to formalise this map as Appendix A of the standards doc. wall-e 2026.06.19-02 · debug |
card_present is hidden from the public API reference but still supported by the API. CardPresentPaymentMethod is restored exactly as on master; the serialization test that it is sent under its key stays.
Restored on BacsPaymentMethod#initialization and added to CashAppPaymentMethod#initialization: on update the API replaces the payment methods, so enabled must be sent again. The specification does not state it; it is the API's behaviour.
🟡 Risk Classification: MINORApproval route: AI Review + Human Approval Classification reasons
Operational gates
Files analysed: 13 wall-e 2026.06.19-02 · policy |
🔬 Debug — why this classification?Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.
Kinds:
See issue #3 for the proposal to formalise this map as Appendix A of the standards doc. wall-e 2026.06.19-02 · debug |
|



Summary
Payment Setup in Ruby gets
PaymentSetupPaymentTypewith the six lowercase values of the specification, documented on create and update. The account funding identification type losesTAX_IDandOTHER, which the API rejects with 422, and the account funding sender gets thereferencefield of the specification. The confirm integration spec no longer skips every time and asserts the fields of the Payment Setup it returns, and the six account funding sender and recipient fields the spec does not have are deprecated.Changes
lib/checkout_sdk/payments/setups/payment_setup_payment_type.rb(new):PaymentSetupPaymentTypewithREGULAR,RECURRING,MOTO,INSTALLMENT,PAY_LATER,UNSCHEDULED("regular"..."unscheduled").lib/checkout_sdk/payments/payments.rb: requires the new file.lib/checkout_sdk/payments/setups/payment_setups_client.rb::payment_typedocumented oncreate_payment_setupandupdate_payment_setup.PaymentTypeis unchanged.lib/checkout_sdk/payments/setups/account_funding_transaction_identification_type.rb:TAX_IDandOTHERremoved; docs on the remaining values.lib/checkout_sdk/payments/setups/account_funding_transaction_identification.rb: one doc entry per attribute against the spec.lib/checkout_sdk/payments/setups/account_funding_transaction_sender.rb: newreferenceattribute (the unique reference for the sender of the payment), sent asaccount_funding_transaction.sender.reference;first_name,last_name,country_of_birth,nationalityandaddressmarked@deprecated; one doc entry per attribute against the spec (description, optionality,date_of_birthformat date).lib/checkout_sdk/payments/setups/account_funding_transaction_recipient.rb:account_typemarked@deprecated; one doc entry per attribute against the spec (description, optionality,first_nameandlast_namemax 50,account_numbermax 34,date_of_birthformat date, address keys and their limits).lib/checkout_sdk/payments/setups/bacs_payment_method.rb: one doc block per attribute against the spec, including theinitializationvalues and its default.lib/checkout_sdk/payments/setups/bacs_payment_method.rb,lib/checkout_sdk/payments/setups/cash_app_payment_method.rb: theinitializationdoc says an update replaces the payment methods, soenabledmust be sent again to keep a method enabled.spec/checkout_sdk/payments/setups/payment_setup_payment_type_serialization_spec.rb(new): the six payment type values on the wire and through create and update, the identification values and fields, the senderreference(wire key, round trip, swagger example), and the deprecated sender and recipient fields, which still serialize under their keys.spec/checkout_sdk/payments/setups/setup_payment_methods_serialization_spec.rb: Bacs initialization serialization, and Card Present sent under its literal key.spec/checkout_sdk/payments/setups/payment_setups_helper.rb:payment_typeusesPaymentSetupPaymentType::REGULAR; helpers that pick a ready method fromavailable_payment_methodsor expectpayment_method_not_ready.spec/checkout_sdk/payments/setups/payment_setups_integration_spec.rb: confirm readsavailable_payment_methods, confirms a ready method or expectspayment_method_not_ready, and assertsid,amount,currency,referenceandpayment_methods, the Payment Setup fields the confirm call returns, instead ofaction_id,status,processed_onand_links, which that response does not have.API Reference
POST /payments/setups:payment_type,payment_methods,account_funding_transactionPUT /payments/setups/{id}GET /payments/setups/{id}POST /payments/setups/{id}/confirm/{payment_method_name}Payment type
PaymentSetupPaymentTypeis additive:PaymentTypekeeps its values, and a setup created with them is still accepted (the API storesRegular,Recurring,Motoin lowercase). The new type is the only way to sendpay_later, whichPaymentTypedoes not have; the camel casePayLaterthat other payment types use is rejected with 422payment_type_property_invalid.Deprecated
AccountFundingTransactionSender#first_name,#last_name,#country_of_birth,#nationalityand#address. Not part of the Sender schema of the Payment Setups account funding transaction; the API ignores them on requests. There is no replacement. Will be removed in the next major version.AccountFundingTransactionRecipient#account_type. Not part of the Recipient schema of the Payment Setups account funding transaction; the API ignores it on requests. There is no replacement. Will be removed in the next major version.Breaking changes required by the API
AccountFundingTransactionIdentificationType::TAX_IDand::OTHERare removed: the API rejects both values with 422account_funding_transaction.sender.identification.type_property_invalid.Follow-ups
csvas a runtime dependency (needed from Ruby 3.4, where it is no longer a default gem) is a separate change.README
No change needed.