# Payment events

## Payments

| Event                      | Dispatched by                   | Properties                                                                                                |
| -------------------------- | ------------------------------- | --------------------------------------------------------------------------------------------------------- |
| `BeforeCreatePaymentEvent` | `PaymentService::createPayment` | `PaymentCreateStruct $createStruct` `?PaymentInterface $paymentResult = null`                             |
| `CreatePaymentEvent`       | `PaymentService::createPayment` | `PaymentCreateStruct $createStruct` `PaymentInterface $paymentResult`                                     |
| `BeforeUpdatePaymentEvent` | `PaymentService::updatePayment` | `PaymentInterface $payment` `PaymentUpdateStruct $updateStruct` `?PaymentInterface $paymentResult = null` |
| `UpdatePaymentEvent`       | `PaymentService::updatePayment` | `PaymentInterface $payment` `PaymentUpdateStruct $updateStruct` `PaymentInterface $paymentResult`         |
| `BeforeDeletePaymentEvent` | `PaymentService::DeletePayment` | `PaymentInterface $payment`                                                                               |
| `DeletePaymentEvent`       | `PaymentService::DeletePayment` | `PaymentInterface $payment`                                                                               |

## Payment methods

| Event                            | Dispatched by                               | Properties                                                                                                                              |
| -------------------------------- | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `BeforeCreatePaymentMethodEvent` | `PaymentMethodService::createPaymentMethod` | `PaymentMethodCreateStruct $createStruct` `?PaymentMethodInterface $paymentMethodResult = null`                                         |
| `CreatePaymentMethodEvent`       | `PaymentMethodService::createPaymentMethod` | `PaymentMethodCreateStruct $createStruct` `PaymentMethodInterface $paymentMethodResult`                                                 |
| `BeforeUpdatePaymentMethodEvent` | `PaymentMethodService::updatePaymentMethod` | `PaymentMethodInterface $paymentMethod` `PaymentMethodUpdateStruct $updateStruct` `?PaymentMethodInterface $paymentMethodResult = null` |
| `UpdatePaymentMethodEvent`       | `PaymentMethodService::updatePaymentMethod` | `PaymentMethodInterface $paymentMethod` `PaymentMethodUpdateStruct $updateStruct` `PaymentMethodInterface $paymentMethodResult`         |
| `BeforeDeletePaymentMethodEvent` | `PaymentMethodService::DeletePaymentMethod` | `PaymentMethodInterface $paymentMethod`                                                                                                 |
| `DeletePaymentMethodEvent`       | `PaymentMethodService::DeletePaymentMethod` | `PaymentMethodInterface $paymentMethod`                                                                                                 |
