46 lines
1.8 KiB
PHP
46 lines
1.8 KiB
PHP
<?php
|
|
session_start();
|
|
require_once 'db/config.php';
|
|
require_once 'stripe/init.php';
|
|
|
|
if (!isset($_SESSION['user_id']) || $_SESSION['user_role'] !== 'client' || !isset($_GET['session_id'])) {
|
|
header('Location: login.php');
|
|
exit;
|
|
}
|
|
|
|
try {
|
|
$checkout_session = \Stripe\Checkout\Session::retrieve($_GET['session_id'], ['expand' => ['subscription.discount.coupon']]);
|
|
$subscription = $checkout_session->subscription;
|
|
|
|
if ($subscription->status === 'active') {
|
|
if (isset($subscription->discount) && $subscription->discount->coupon) {
|
|
$coupon_code = $subscription->discount->coupon->name;
|
|
if ($coupon_code) {
|
|
$stmt = db()->prepare('UPDATE discounts SET times_used = times_used + 1 WHERE code = ?');
|
|
$stmt->execute([$coupon_code]);
|
|
}
|
|
}
|
|
|
|
$client_id = $_SESSION['user_id'];
|
|
$stripe_subscription_id = $subscription->id;
|
|
$stripe_product_id = $subscription->items->data[0]->price->product;
|
|
$status = $subscription->status;
|
|
$start_date = date('Y-m-d H:i:s', $subscription->current_period_start);
|
|
$end_date = date('Y-m-d H:i:s', $subscription->current_period_end);
|
|
|
|
$pdo = db();
|
|
$stmt = $pdo->prepare("INSERT INTO client_subscriptions (client_id, stripe_subscription_id, stripe_product_id, status, start_date, end_date) VALUES (?, ?, ?, ?, ?, ?)");
|
|
$stmt->execute([$client_id, $stripe_subscription_id, $stripe_product_id, $status, $start_date, $end_date]);
|
|
|
|
header('Location: dashboard.php?subscription=success');
|
|
exit;
|
|
} else {
|
|
header('Location: subscription-cancel.php?reason=payment_not_complete');
|
|
exit;
|
|
}
|
|
} catch (\Stripe\Exception\ApiErrorException $e) {
|
|
// Handle error
|
|
header('Location: subscription-cancel.php?reason=invalid_session');
|
|
exit;
|
|
}
|