✓ Payment Successful!

Thank you for your purchase. Your payment has been received and is being processed.

Invoice Reference:

What happens next?

  1. Payment Confirmation: Your payment has been captured by PayPal
  2. Order Creation: Your game server order has been created
  3. Server Provisioning: Your server will be provisioned automatically (this may take a few minutes)
  4. Email Notification: You'll receive an email with your server details and login credentials
0) { $db = createDatabaseConnection($db_host, $db_user, $db_pass, $db_name, $db_port); if ($db) { $result = mysqli_query($db, "SELECT * FROM ogp_billing_orders WHERE user_id=$user_id ORDER BY order_date DESC LIMIT 5"); if ($result && mysqli_num_rows($result) > 0) { echo '
'; echo '

Your Recent Orders

'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; while ($order = mysqli_fetch_assoc($result)) { $statusColor = $order['status'] === 'paid' ? '#28a745' : '#6c757d'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
Order IDServerStatusDatePrice
#' . htmlspecialchars($order['order_id']) . '' . htmlspecialchars($order['home_name']) . '' . htmlspecialchars(ucfirst($order['status'])) . '' . htmlspecialchars($order['order_date']) . '$' . htmlspecialchars(number_format($order['price'], 2)) . '
'; echo '
'; } mysqli_close($db); } } ?>
View My Servers Order Another Server
$end_date_val = null; if ($has_finish) { // Attempt to find the target order's qty/invoice_duration using the same where clause but without LIMIT $sel_sql = "SELECT qty, invoice_duration FROM ogp_billing_orders WHERE " . str_replace(' AND status <> \"paid\" LIMIT 1', '', $where_sql) . " LIMIT 1"; // Note: this simple substitution assumes the where_sql is of the form 'col = ?' used earlier if ($sel_stmt = $db->prepare($sel_sql)) { // bind where params if ($bind_types) { $refs = []; $vals = $bind_vals; foreach ($vals as $k => $v) $refs[$k] = &$vals[$k]; array_unshift($refs, $bind_types); call_user_func_array([$sel_stmt, 'bind_param'], $refs); } $sel_stmt->execute(); $sel_stmt->bind_result($sel_qty, $sel_invdur); if ($sel_stmt->fetch()) { // compute months $months = 0; $q = intval($sel_qty ?? 0); $invdur = strtolower(trim($sel_invdur ?? '')); if (strpos($invdur, 'year') !== false) { $months = $q * 12; } else { $months = $q; } if ($months <= 0) $months = 0; $dt = new DateTime('now'); if ($months > 0) $dt->modify('+' . intval($months) . ' months'); $end_date_val = $dt->format('Y-m-d H:i:s'); } $sel_stmt->close(); } if ($end_date_val !== null) { $sql = str_replace(' WHERE ', ', end_date = ? WHERE ', $sql); } } if ($stmt = $db->prepare($sql)) { // Build params: first any where params, then txid/ts values if present, then end_date if present $types = $bind_types; $vals = $bind_vals; if ($cols) { foreach ($cols as $c) { $types .= 's'; if ($c === 'payment_txid') $vals[] = $txid; else $vals[] = $ts; } } if ($end_date_val !== null) { $types .= 's'; $vals[] = $end_date_val; } // bind dynamically if ($types) { $refs = []; foreach ($vals as $k => $v) $refs[$k] = &$vals[$k]; array_unshift($refs, $types); call_user_func_array([$stmt, 'bind_param'], $refs); } $stmt->execute(); $affected = $stmt->affected_rows; $stmt->close(); return $affected; } return 0; }; $affected = 0; // Try match by invoice column (if present) if ($invoice) { // some invoices may include paths or file names; use exact match $affected = $update_paid('invoice = ?', 's', [$invoice]); } // If not matched, try numeric custom (order_id) if (!$affected && $custom) { if (ctype_digit((string)$custom)) { $affected = $update_paid('order_id = ?', 'i', [(int)$custom]); } } // If still not matched, try matching the custom text field if (!$affected && $custom) { $affected = $update_paid('custom = ?', 's', [$custom]); } mysqli_close($db); if ($affected) { if (function_exists('site_log_info')) site_log_info('payment_success_marked_paid', ['affected'=>intval($affected),'invoice'=>$invoice,'custom'=>$custom]); else error_log('[payment_success] Marked order paid (affected=' . intval($affected) . ') invoice=' . $invoice . ' custom=' . $custom); return true; } else { if (function_exists('site_log_warn')) site_log_warn('payment_success_no_match', ['invoice'=>$invoice,'custom'=>$custom]); else error_log('[payment_success] No matching order found for invoice=' . $invoice . ' custom=' . $custom); return false; } } ?>