Add the "create payment" use case as a dependency of the "Add Membership" use case.
Call it inside the "AddMembership" use case and check for the return type (success / failure).
Create forward compatibility for introducing external payment providers:
Make the "confirmed" status of memberships false by default and confirm them (via a new method) when the isComplete in the payment creation response is true.
You can then remove the isAutoConfirmed method from ApplyForMembershipUseCase and just check isConfirmed to determine if you need to send the confirmation email.
Change all payment data processing to create a PaymentCreationRequest instead of creating a payment directly
Remove BankDataValidator and IbanBlockList as a dependency from MembershipApplicationValidator and add a payment validator instead
Call the UrlGenerator method of the CreatePayment return DTO to get a URL and pass it on in the output DTO.