Acceptance Criteria
- The domain objects are refactored according to the data model. You can leave other payment objects in a semi-broken state as long as all remaining tests still pass and the next steps are clear (i.e. putting TODOs/commented-out code in classes, skipping tests).
- The implementation of the PaymentRepository interface implements storing and retrieving payments with sofort. All other payment methods may throw "Not implemented" logic exceptions for now.
- The changes outlined in T281895: Make SofortPayment::confirmedAt immutable are no longer necessary/solved according to the domain specification
Implementation Details
- Refactor SofortPayment and SofortTransactionData as needed, with a similar pattern used as in the credit card modeling case.