$SITE_BASE_URL ?? '', 'data' => $SITE_DATA_DIR ?? '']; })(); if (!isset($SITE_BASE_URL)) $SITE_BASE_URL = $__billing_cfg_vars['base']; if (!isset($SITE_DATA_DIR)) $SITE_DATA_DIR = $__billing_cfg_vars['data']; unset($__billing_cfg_vars, $billingLocalCfg); } } // Final safe defaults if still not set. if (!isset($SITE_BASE_URL)) { $SITE_BASE_URL = ''; } if (!isset($SITE_DATA_DIR)) { $SITE_DATA_DIR = realpath(__DIR__ . '/data') ?: (__DIR__ . '/data'); } include(__DIR__ . '/includes/top.php'); include(__DIR__ . '/includes/menu.php'); function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } ?> Admin — Dashboard

Admin Dashboard

Welcome to the admin area. From here you can manage servers, payments, and site settings.

Manage Servers & Services Manage Invoices Transaction Log Manage Coupons Edit Site Config

Quick usage notes

Sandbox account (testing)

Use PayPal sandbox credentials when testing payments. Set your sandbox client_id and client_secret in modules/billing/includes/config.inc.php (the $paypal_client_id and $paypal_client_secret variables). Set $paypal_sandbox = false for live payments.

Payments: high-level program flow

  1. User adds an item and proceeds to checkout (_website/cart.php).
  2. The checkout page renders the PayPal JS SDK and calls server-side endpoints (create_order/capture_order).
  3. After a successful capture, PayPal sends a webhook event to _website/webhook.php (or the equivalent handler under _website/api/).
  4. The webhook verifies the signature, fetches any missing order details, and writes a JSON record to the data/ directory (this powers invoices.php and return.php).
  5. On successful payment we mark the order as PAID in the JSON and the site UI (invoices/returns) reads those JSONs to render receipts.
  6. Admin pages can view invoices at ./invoices.php and reconcile or trigger further provisioning via internal panel APIs.

Environment

Site Base URL
Data directory
PHP SAPI
Writable?