Site Builder
Editing:
webhook.php
writable 0666
<?php require_once __DIR__.'/../lib/db.php'; require_once $_SERVER['HOME'].'/vendor/autoload.php'; // ← fixed \Stripe\Stripe::setApiKey($_ENV['STRIPE_SECRET']); $payload = @file_get_contents('php://input'); $sig = $_SERVER['HTTP_STRIPE_SIGNATURE'] ?? ''; $event = null; try { $event = \Stripe\Webhook::constructEvent( $payload, $sig, $_ENV['STRIPE_WEBHOOK_SECRET']); } catch(Exception $e) { http_response_code(400); exit; } switch ($event->type) { case 'checkout.session.completed': $sess = $event->data->object; $uid = $sess->metadata->user_id; $cust = $sess->customer; $sub = $sess->subscription; $db->prepare('UPDATE users SET stripe_customer_id=?, stripe_subscription_id=?, premium_until = DATE_ADD(NOW(), INTERVAL 1 YEAR) WHERE id=?')->execute([$cust,$sub,$uid]); $ref = $sess->metadata->referred_by ?? null; if ($ref) { $db->prepare('UPDATE users SET affiliate_balance = affiliate_balance + 20 WHERE username = ?') ->execute([$ref]); $db->prepare('INSERT INTO affiliate_stats (referral_user, signup_id, event, amount) VALUES (?,?,?,?)') ->execute([$ref, $uid, 'paid', 20]); } break; break; case 'invoice.payment_succeeded': $sub = $event->data->object->subscription; // extend premium by 1 year from today $db->prepare('UPDATE users SET premium_until = DATE_ADD(NOW(), INTERVAL 1 YEAR) WHERE stripe_subscription_id=?')->execute([$sub]); break; case 'customer.subscription.deleted': $sub = $event->data->object; $db->prepare('UPDATE users SET premium_until = NOW() WHERE stripe_subscription_id=?')->execute([$sub->id]); break; } http_response_code(200);
Save changes
Create folder
writable 0777
Create
Cancel