Skip to content
  1. Extras
  2. PayAndSee
  3. Development
  4. Services
  5. Order

Order ​

Checkout is handled by PasOrderHandler, which implements PasOrderInterface. You can use your own order class and set it in the system setting order_handler_class.

Order

Required methods of PasOrderInterface:

  • initialize — initialize the class in the context. Can load scripts and styles.
  • add — add one field to the order.
  • remove — remove one field from the order.
  • validate — validate a field on add and return the filtered value.
  • get — return full order contents.
  • set — replace order contents with the given array.
  • submit — process checkout; delivery and required fields must already be present.
  • clean — clear the order completely.
  • getcost — get cost.
  • getDeliveryCost — get delivery cost.
  • getPaymentCost — get payment cost.
  • getDeliveries — get delivery options.
  • getPayments — get payment options.

System events ​

PasOrderInterface fires events when working with the order. Template plugin:

php
<?php

switch ($modx->event->name) {
  // Add fields to order
  case 'PasOnBeforeAddToOrder'; break; // receives $key (field name), $value (field value)
  case 'PasOnAddToOrder'; break; // receives $key, $value

  // Remove fields from order
  case 'PasOnBeforeRemoveFromOrder'; break; // receives $key
  case 'PasOnRemoveFromOrder'; break; // receives $key

  // Submit order
  case 'PasOnSubmitOrder'; break; // optional $data array to override fields

  // Create order
  case 'PasOnBeforeCreateOrder'; break; // receives $order with related objects
  case 'PasOnCreateOrder'; break; // same

  // Clear order
  case 'PasOnBeforeEmptyOrder'; break; // receives $order only
  case 'PasOnEmptyOrder'; break; // receives $order only

  // Order status change (payment, cancel, etc.)
  case 'msOnBeforeChangeOrderStatus': break; // receives $order and status id in $status
  case 'msOnChangeOrderStatus': break; // receives $order and status id in $status
}
?>

All events also receive the $order object.