# Payment

Each payment type must be wrapped in abstract observer. The abstract observer is responsable to validate some payment parameters and have some lifecycle hooks for the payment

 <abstract-payment-observer v-if="selectedProvider.name">
      @isPaymentReady="isPaymentReady = arguments[0]"
      @providerPaymentHandler="providerPaymentHandler = arguments[0]"

# Adyen external

Oddo will create a dinamic form We build this form and on click, he send to external adyen new tab Our AdyenExternalPaymentProvider handle all this logic using the user session.