(from My account) preselects one. $renewable = []; if ($customer !== null) { try { $renewable = array_values(array_filter( (new \WlVpn\Repos\ShopCustomers())->accounts((int) $customer['id']), static fn (array $a): bool => !$a['removed'] && empty($a['lifetime']) )); } catch (\Throwable $e) { $renewable = []; } } $preselect = in_array($_GET['renew'] ?? '', array_column($renewable, 'username'), true) ? (string) $_GET['renew'] : 'new'; // Why the customer was sent back from checkout.php (or cancelled on Stripe). $notice = match (true) { isset($_GET['cancelled']) => 'Checkout cancelled — you haven’t been charged. Choose a plan to try again.', ($_GET['error'] ?? '') === 'invalid' => 'Please check your email address and choose a plan again.', ($_GET['error'] ?? '') === 'unavailable' => 'Sorry — that plan can’t be bought right now. Please try again later or contact the shop.', ($_GET['error'] ?? '') === 'payment' => 'We couldn’t start the payment. You haven’t been charged — please try again in a moment.', default => null, }; ?> <?= e($shopName) ?>

🔎

Shop not found

This shop link is invalid or no longer active. Please check the link you were given.

🚧

Shop temporarily closed

Purchases are paused right now. Please check back later or contact support.

$p): $monthly = $p['price'] / $p['months']; $popular = $p['months'] === 12; ?>
MOST POPULAR

/month equivalent

  • ✓ Unlimited bandwidth
  • ✓ All server locations
  • ✓
Choose plan

' . e((string) $customer['email']) . ' to arrange payment and set up your account.' : 'Confirmation and any new login details go to ' . e((string) $customer['email']) . ', and your accounts appear in My account.' ?>

This plan is for

Powered by WL-VPN