(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'; // A promo code checkout.php sent back (with why), and the free trial offer. $promoState = $_SESSION['shop_promo'] ?? null; unset($_SESSION['shop_promo']); $trial = null; // null: no offer; '' : offered; string: why this customer can't have one if ($context !== null && $open && \WlVpn\Repos\ShopPromos::installed()) { try { $offers = new \WlVpn\Repos\ShopPromos(); if ($offers->trialEnabled((int) $context['reseller']['id'])) { $trial = $customer === null ? '' : (string) $offers->trialRefusal((int) $context['reseller']['id'], (string) $customer['email'], clientIp()); } } catch (\Throwable $e) { $trial = null; } } $trialMessage = $_SESSION['shop_trial'] ?? null; unset($_SESSION['shop_trial']); // 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.

Try it free for 24 hours

No card needed. One free trial per customer.

Log in to start
$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

The discount is applied on the next step.

Powered by WL-VPN