Skip to content

Commit f2ba9ee

Browse files
committed
Added payment events and refactored payment event subscribers accordingly
1 parent a4444f3 commit f2ba9ee

File tree

7 files changed

+322
-43
lines changed

7 files changed

+322
-43
lines changed

modules/log/commerce_log.commerce_log_templates.yml

+6-2
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,19 @@ payment_authorized_captured:
2828
category: commerce_payment
2929
label: 'Payment authorized and captured'
3030
template: '<p>Payment <em>{{ payment_remote_id }}</em> was authorized and captured.</p>'
31+
payment_partially_captured:
32+
category: commerce_payment
33+
label: 'Payment partially captured'
34+
template: '<p>Payment <em>{{ payment_remote_id }}</em> was partially captured.</p>'
3135
payment_captured:
3236
category: commerce_payment
3337
label: 'Payment captured'
34-
template: '<p>Payment <em>{{ payment_remote_id }}</em> was captured.</p>'
38+
template: '<p>Payment <em>{{ payment_remote_id }}</em> was fully captured.</p>'
3539
payment_partially_refunded:
3640
category: commerce_payment
3741
label: 'Payment partially refunded'
3842
template: '<p>Payment <em>{{ payment_remote_id }}</em> was partially refunded.</p>'
3943
payment_refunded:
4044
category: commerce_payment
4145
label: 'Payment refunded'
42-
template: '<p>Payment <em>{{ payment_remote_id }}</em> was refunded.</p>'
46+
template: '<p>Payment <em>{{ payment_remote_id }}</em> was fully refunded.</p>'

modules/log/src/EventSubscriber/PaymentEventSubscriber.php

+111-41
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace Drupal\commerce_log\EventSubscriber;
44

5+
use Drupal\commerce_payment\Entity\PaymentInterface;
6+
use Drupal\commerce_payment\Event\PaymentEvent;
7+
use Drupal\commerce_payment\Event\PaymentEvents;
58
use Drupal\Core\Entity\EntityTypeManagerInterface;
69
use Drupal\state_machine\Event\WorkflowTransitionEvent;
710
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
@@ -30,13 +33,18 @@ public function __construct(EntityTypeManagerInterface $entity_type_manager) {
3033
*/
3134
public static function getSubscribedEvents() {
3235
$events = [
33-
'commerce_payment.authorize.pre_transition' => ['onAuthorize', -100],
34-
'commerce_payment.void.pre_transition' => ['onVoid', -100],
35-
'commerce_payment.expire.pre_transition' => ['onExpire', -100],
36-
'commerce_payment.authorize_capture.pre_transition' => ['onAuthorizeCapture', -100],
37-
'commerce_payment.capture.pre_transition' => ['onCapture', -100],
38-
'commerce_payment.partially_refund.pre_transition' => ['onPartiallyRefund', -100],
39-
'commerce_payment.refund.pre_transition' => ['onRefund', -100],
36+
'commerce_payment.authorize.pre_transition' => ['onAuthorizeTransition', -100],
37+
'commerce_payment.void.pre_transition' => ['onVoidTransition', -100],
38+
'commerce_payment.expire.pre_transition' => ['onExpireTransition', -100],
39+
'commerce_payment.authorize_capture.pre_transition' => ['onAuthorizeCaptureTransition', -100],
40+
PaymentEvents::PAYMENT_AUTHORIZED => ['onAuthorize', -100],
41+
PaymentEvents::PAYMENT_VOIDED => ['onVoid', -100],
42+
PaymentEvents::PAYMENT_EXPIRED => ['onExpire', -100],
43+
PaymentEvents::PAYMENT_AUTHORIZED_CAPTURED => ['onAuthorizeCapture', -100],
44+
PaymentEvents::PAYMENT_PARTIALLY_CAPTURED => ['onPartialCapture', -100],
45+
PaymentEvents::PAYMENT_CAPTURED => ['onCapture', -100],
46+
PaymentEvents::PAYMENT_PARTIALLY_REFUNDED => ['onPartialRefund', -100],
47+
PaymentEvents::PAYMENT_REFUNDED => ['onRefund', -100],
4048
];
4149
return $events;
4250
}
@@ -47,9 +55,64 @@ public static function getSubscribedEvents() {
4755
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
4856
* The transition event.
4957
*/
50-
public function onAuthorize(WorkflowTransitionEvent $event) {
51-
/** @var \Drupal\commerce_payment\Entity\PaymentInterface $payment */
52-
$payment = $event->getEntity();
58+
public function onAuthorizeTransition(WorkflowTransitionEvent $event) {
59+
$this->dispatch(PaymentEvents::PAYMENT_AUTHORIZED, $event->getEntity());
60+
}
61+
62+
/**
63+
* Creates a log when a payment is voided.
64+
*
65+
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
66+
* The transition event.
67+
*/
68+
public function onVoidTransition(WorkflowTransitionEvent $event) {
69+
$this->dispatch(PaymentEvents::PAYMENT_VOIDED, $event->getEntity());
70+
}
71+
72+
/**
73+
* Creates a log when a payment is expired.
74+
*
75+
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
76+
* The transition event.
77+
*/
78+
public function onExpireTransition(WorkflowTransitionEvent $event) {
79+
$this->dispatch(PaymentEvents::PAYMENT_EXPIRED, $event->getEntity());
80+
}
81+
82+
/**
83+
* Creates a log when a payment is authorized and captured.
84+
*
85+
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
86+
* The transition event.
87+
*/
88+
public function onAuthorizeCaptureTransition(WorkflowTransitionEvent $event) {
89+
$this->dispatch(PaymentEvents::PAYMENT_AUTHORIZED_CAPTURED, $event->getEntity());
90+
}
91+
92+
/**
93+
* Dispatches a PaymentEvent for a payment.
94+
*
95+
* @param string $event_name
96+
* A name of the payment event to dispatch.
97+
* @param \Drupal\commerce_payment\Entity\PaymentInterface $payment
98+
* A payment to use for dispatching the event.
99+
*/
100+
private function dispatch($event_name, PaymentInterface $payment) {
101+
/** @var \Drupal\commerce_payment\Event\PaymentEvent $event */
102+
$event = new PaymentEvent($payment);
103+
/** @var \Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher $event_dispatcher */
104+
$event_dispatcher = \Drupal::service('event_dispatcher');
105+
$event_dispatcher->dispatch($event_name, $event);
106+
}
107+
108+
/**
109+
* Creates a log when a payment is authorized.
110+
*
111+
* @param \Drupal\commerce_payment\Event\PaymentEvent $event
112+
* The payment event.
113+
*/
114+
public function onAuthorize(PaymentEvent $event) {
115+
$payment = $event->getPayment();
53116
$this->logStorage->generate($payment, 'payment_authorized', [
54117
'payment_remote_id' => $payment->getRemoteId(),
55118
])->save();
@@ -58,12 +121,11 @@ public function onAuthorize(WorkflowTransitionEvent $event) {
58121
/**
59122
* Creates a log when a payment is voided.
60123
*
61-
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
62-
* The transition event.
124+
* @param \Drupal\commerce_payment\Event\PaymentEvent $event
125+
* The payment event.
63126
*/
64-
public function onVoid(WorkflowTransitionEvent $event) {
65-
/** @var \Drupal\commerce_payment\Entity\PaymentInterface $payment */
66-
$payment = $event->getEntity();
127+
public function onVoid(PaymentEvent $event) {
128+
$payment = $event->getPayment();
67129
$this->logStorage->generate($payment, 'payment_voided', [
68130
'payment_remote_id' => $payment->getRemoteId(),
69131
])->save();
@@ -72,12 +134,11 @@ public function onVoid(WorkflowTransitionEvent $event) {
72134
/**
73135
* Creates a log when a payment is expired.
74136
*
75-
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
76-
* The transition event.
137+
* @param \Drupal\commerce_payment\Event\PaymentEvent $event
138+
* The payment event.
77139
*/
78-
public function onExpire(WorkflowTransitionEvent $event) {
79-
/** @var \Drupal\commerce_payment\Entity\PaymentInterface $payment */
80-
$payment = $event->getEntity();
140+
public function onExpire(PaymentEvent $event) {
141+
$payment = $event->getPayment();
81142
$this->logStorage->generate($payment, 'payment_expired', [
82143
'payment_remote_id' => $payment->getRemoteId(),
83144
])->save();
@@ -86,26 +147,37 @@ public function onExpire(WorkflowTransitionEvent $event) {
86147
/**
87148
* Creates a log when a payment is authorized and captured.
88149
*
89-
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
90-
* The transition event.
150+
* @param \Drupal\commerce_payment\Event\PaymentEvent $event
151+
* The payment event.
91152
*/
92-
public function onAuthorizeCapture(WorkflowTransitionEvent $event) {
93-
/** @var \Drupal\commerce_payment\Entity\PaymentInterface $payment */
94-
$payment = $event->getEntity();
153+
public function onAuthorizeCapture(PaymentEvent $event) {
154+
$payment = $event->getPayment();
95155
$this->logStorage->generate($payment, 'payment_authorized_captured', [
96156
'payment_remote_id' => $payment->getRemoteId(),
97157
])->save();
98158
}
99159

100160
/**
101-
* Creates a log when a payment is captured.
161+
* Creates a log when a payment is partially captured.
102162
*
103-
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
104-
* The transition event.
163+
* @param \Drupal\commerce_payment\Event\PaymentEvent $event
164+
* The payment event.
105165
*/
106-
public function onCapture(WorkflowTransitionEvent $event) {
107-
/** @var \Drupal\commerce_payment\Entity\PaymentInterface $payment */
108-
$payment = $event->getEntity();
166+
public function onPartialCapture(PaymentEvent $event) {
167+
$payment = $event->getPayment();
168+
$this->logStorage->generate($payment, 'payment_partially_captured', [
169+
'payment_remote_id' => $payment->getRemoteId(),
170+
])->save();
171+
}
172+
173+
/**
174+
* Creates a log when a payment is fully captured.
175+
*
176+
* @param \Drupal\commerce_payment\Event\PaymentEvent $event
177+
* The payment event.
178+
*/
179+
public function onCapture(PaymentEvent $event) {
180+
$payment = $event->getPayment();
109181
$this->logStorage->generate($payment, 'payment_captured', [
110182
'payment_remote_id' => $payment->getRemoteId(),
111183
])->save();
@@ -114,12 +186,11 @@ public function onCapture(WorkflowTransitionEvent $event) {
114186
/**
115187
* Creates a log when a payment is partially refunded.
116188
*
117-
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
118-
* The transition event.
189+
* @param \Drupal\commerce_payment\Event\PaymentEvent $event
190+
* The payment event.
119191
*/
120-
public function onPartiallyRefund(WorkflowTransitionEvent $event) {
121-
/** @var \Drupal\commerce_payment\Entity\PaymentInterface $payment */
122-
$payment = $event->getEntity();
192+
public function onPartialRefund(PaymentEvent $event) {
193+
$payment = $event->getPayment();
123194
$this->logStorage->generate($payment, 'payment_partially_refunded', [
124195
'payment_remote_id' => $payment->getRemoteId(),
125196
])->save();
@@ -128,12 +199,11 @@ public function onPartiallyRefund(WorkflowTransitionEvent $event) {
128199
/**
129200
* Creates a log when a payment is fully refunded.
130201
*
131-
* @param \Drupal\state_machine\Event\WorkflowTransitionEvent $event
132-
* The transition event.
202+
* @param \Drupal\commerce_payment\Event\PaymentEvent $event
203+
* The payment event.
133204
*/
134-
public function onRefund(WorkflowTransitionEvent $event) {
135-
/** @var \Drupal\commerce_payment\Entity\PaymentInterface $payment */
136-
$payment = $event->getEntity();
205+
public function onRefund(PaymentEvent $event) {
206+
$payment = $event->getPayment();
137207
$this->logStorage->generate($payment, 'payment_refunded', [
138208
'payment_remote_id' => $payment->getRemoteId(),
139209
])->save();

modules/payment/src/Entity/Payment.php

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
* bundle_plugin_type = "commerce_payment_type",
2525
* handlers = {
2626
* "access" = "Drupal\commerce_payment\PaymentAccessControlHandler",
27+
* "event" = "Drupal\commerce_payment\Event\PaymentEvent",
2728
* "list_builder" = "Drupal\commerce_payment\PaymentListBuilder",
2829
* "storage" = "Drupal\commerce_payment\PaymentStorage",
2930
* "form" = {
+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Drupal\commerce_payment\Event;
4+
5+
use Drupal\commerce_payment\Entity\PaymentInterface;
6+
use Symfony\Component\EventDispatcher\Event;
7+
8+
/**
9+
* Defines the payment event.
10+
*
11+
* @see \Drupal\commerce_payment\Event\PaymentEvents
12+
*/
13+
class PaymentEvent extends Event {
14+
15+
/**
16+
* The payment.
17+
*
18+
* @var \Drupal\commerce_payment\Entity\PaymentInterface
19+
*/
20+
protected $payment;
21+
22+
/**
23+
* Constructs a new PaymentEvent.
24+
*
25+
* @param \Drupal\commerce_payment\Entity\PaymentInterface $payment
26+
* The payment.
27+
*/
28+
public function __construct(PaymentInterface $payment) {
29+
$this->payment = $payment;
30+
}
31+
32+
/**
33+
* Gets the payment.
34+
*
35+
* @return \Drupal\commerce_payment\Entity\PaymentInterface
36+
* The payment.
37+
*/
38+
public function getPayment() {
39+
return $this->payment;
40+
}
41+
42+
}

0 commit comments

Comments
 (0)