feat(02-purchase-event-prepayment): move purchase event to przelewy24 pre-payment page

Phase 2 complete:
- buildPurchaseDataLayer() called in przelewy24() controller, payload passed to template
- dataLayer.push added to templates/tickets/przelewy24.php (fires at order commitment)
- dataLayer.push removed from templates/tickets/order-confirm.php
- Captures 100% of orders regardless of user returning from payment gateway

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-26 22:29:54 +02:00
parent 5bbec72b59
commit 86e712ba4f
9 changed files with 404 additions and 54 deletions

View File

@@ -650,11 +650,14 @@ class Tickets
$przelewy24_hash = md5(time());
$mdb->update('orders', ['payment_hash' => $przelewy24_hash], ['id' => $order['id']]);
$purchaseDataLayer = self::buildPurchaseDataLayer($order);
return \Tpl::view('tickets/przelewy24', [
'settings' => $settings,
'hash' => \S::get('order'),
'order' => $order,
'przelewy24_hash' => $przelewy24_hash
'przelewy24_hash' => $przelewy24_hash,
'purchase_data_layer' => $purchaseDataLayer
]);
}
@@ -847,14 +850,12 @@ class Tickets
$order = \factory\Tickets::get_order_details_by_hash(\S::get('order'));
$order_successful = false;
$order_fail = false;
$purchaseDataLayer = null;
if ( $order && !empty($order['payment_status']) && empty($order['informed_user']) )
{
if ($order['payment_status'])
{
$order_successful = true;
$purchaseDataLayer = self::buildPurchaseDataLayer($order);
$mailSent = self::sendPaidOrderSummaryEmail($order);
if ($mailSent) {
$mdb->update('orders', ['informed_user' => 1], ['id' => $order['id']]);
@@ -871,7 +872,7 @@ class Tickets
'order' => $order,
'order_successful' => $order_successful,
'order_fail' => $order_fail,
'purchase_data_layer' => $purchaseDataLayer
'purchase_data_layer' => null
]);
}