我有一个条纹付款网站,可以在其中付款并启动保存到数据库的订阅计划,但是我想知道如何制作一个可以取消订阅的取消按钮。
在thank-you.php中,此处存在取消订阅按钮,在paymentProcess.php中,此处if(isset($_POST['cancel'])) {
$stmt = $conn->prepare("SELECT subscription_id FROM users WHERE id = :id");
$stmt->execute(['id' => $customer->id]);
$row = $stmt->fetch(PDO::FETCH_OBJ);
$sub = \Stripe\Subscription::retrieve($row->subscription_id);
$sub->cancel();
}
是取消按钮的代码,但是单击后没有任何改变,并且条带日志也没有改变,我们被困在这里,有什么建议吗?
index.php:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Pricing Page</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<style type="text/css">
.container { margin-top: 100px; }
.card { width: 300px; }
.card:hover {
-webkit-transform: scale(1.05);
-moz-transform: scale(1.05);
-ms-transform: scale(1.05);
-o-transform: scale(1.05);
transform: scale(1.05);
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-ms-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
.price { font-size: 72px }
.currency {
font-size: 25px;
position: relative;
top: -30px;
}
.list-group-item {
border: 0px;
padding: 5px;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="card">
<div class="card-header text-center">
<h2 class="price"><span class="currency">$</span>27</h2>
</div>
<div class="card-body">
<h1 class="text-center">Product 1</h1>
<ul class="list-group">
<li class="list-group-item">Feature 1</li>
<li class="list-group-item">Feature 2</li>
<li class="list-group-item">Feature 3</li>
</ul>
</div>
<div class="card-footer text-center">
<form action="paymentProcess.php?pid=1" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_QR1JpboiLh5acjEhK6vwclar00N1Y0Evjd"
data-amount="2700"
data-name="ConnectKitty"
data-description="Catwalk"
data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
data-locale="auto"
data-currency="usd">
</script>
</form>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header text-center">
<h2 class="price"><span class="currency">$</span>67</h2>
</div>
<div class="card-body">
<h1 class="text-center">Product 1</h1>
<ul class="list-group">
<li class="list-group-item">Feature 1</li>
<li class="list-group-item">Feature 2</li>
<li class="list-group-item">Feature 3</li>
</ul>
</div>
<div class="card-footer">
<form action="paymentProcess.php?pid=2" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_QR1JpboiLh5acjEhK6vwclar00N1Y0Evjd"
data-amount="6700"
data-name="ConnectKitty"
data-description="Catwalk"
data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
data-locale="auto"
data-currency="usd">
</script>
</form>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header text-center">
<h2 class="price"><span class="currency">$</span>97</h2>
</div>
<div class="card-body">
<h1 class="text-center">Product 1</h1>
<ul class="list-group">
<li class="list-group-item">Feature 1</li>
<li class="list-group-item">Feature 2</li>
<li class="list-group-item">Feature 3</li>
</ul>
</div>
<div class="card-footer">
<form action="paymentProcess.php?pid=3" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_QR1JpboiLh5acjEhK6vwclar00N1Y0Evjd"
data-amount="9700"
data-name="ConnectKitty"
data-description="Catwalk"
data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
data-locale="auto"
data-currency="usd">
</script>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
dashboard.php:
<?php
session_start();
if (!isset($_SESSION['loggedIn'])) {
header('Location: login.php');
exit();
}
$plan = $_SESSION['plan'];
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Dashboard</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<style type="text/css">
.container { margin-top: 100px; }
.col-md-9 {
border: 1px solid gray;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
img {
-webkit-border-radius: 50px;
-moz-border-radius: 50px;
border-radius: 50px;
}
.list-item {
list-style: none;
background: #0088cc;
padding: 8px;
border: 1px solid white;
}
.list-item a {
color: #fff;
}
.list-item:hover {
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-ms-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
-webkit-transform: scale(1.05);
-moz-transform: scale(1.05);
-ms-transform: scale(1.05);
-o-transform: scale(1.05);
transform: scale(1.05);
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<a href="logout.php" style="float: right; margin-right: -15px;">Log Out</a>
</div>
</div>
<div class="row">
<div class="col-md-3" align="center">
<img src="images/user.png" /><br><br>
<ul class="list-group">
<li class="list-item">
<a href="#">
Feature 1
</a>
</li>
<?php
if ($plan >= 2) {
?>
<li class="list-item">
<a href="#">
Feature 2
</a>
</li>
<?php
}
if ($plan == 3) {
?>
<li class="list-item">
<a href="#">
Feature 3
</a>
</li>
<?php
}
?>
</ul>
</div>
<div class="col-md-9" align="center">
Content
</div>
</div>
</div>
</body>
</html>
paymentProcess.php
<?php
use PHPMailer\PHPMailer\PHPMailer;
$products = array(
"pids" => ["1", "2", "3"],
"1" => "plan_Fkqupc3NdPO5cA",
"2" => "plan_E7Hcdysyy9TU58",
"3" => "plan_E7HdyXFDlTpQpb"
);
if (!isset($_GET['pid']) || !in_array($_GET['pid'], $products['pids']) || !isset($_POST['stripeToken']) || !isset($_POST['stripeEmail'])) {
header('Location: index.php');
exit();
}
require_once('stripe-php-6.24.0/init.php');
$stripe = [
"secret_key" => "sk_test_N62K1YeWqBN1WyEsWmK149Rh00It8OTxqg",
"publishable_key" => "pk_test_QR1JpboiLh5acjEhK6vwclar00N1Y0Evjd",
];
\Stripe\Stripe::setApiKey($stripe['secret_key']);
$pid = $_GET['pid'];
$token = $_POST['stripeToken'];
$email = $_POST['stripeEmail'];
$customer = \Stripe\Customer::create([
'email' => $email,
'source' => $token,
]);
$sub = \Stripe\Subscription::create([
"customer" => $customer->id,
"items" => [
[
"plan" => $products[$pid],
],
]
]);
$conn = new mysqli("l", "n", "f", "pm");
if(isset($_POST['cancel'])) {
$stmt = $conn->prepare("SELECT subscription_id FROM users WHERE id = :id");
$stmt->execute(['id' => $customer->id]);
$row = $stmt->fetch(PDO::FETCH_OBJ);
$sub = \Stripe\Subscription::retrieve($row->subscription_id);
$sub->cancel();
}
$email = $conn->real_escape_string($email);
$sql = $conn->query("SELECT id FROM users WHERE email='$email'");
if ($sql->num_rows > 0) {
$conn->query("UPDATE users SET plan='$pid' WHERE email='$email'");
$password = "Your Old Password";
} else {
$password = "qwertzuioplkjhgfdsayxcvbnm1234567890";
$password = str_shuffle($password);
$password = strtoupper(substr($password, 0, 10));
$ePassword = password_hash($password, PASSWORD_BCRYPT);
$conn->query("INSERT INTO users (subscription_id, email, plan, password, regDate) VALUES ('$sub', '$email', '$pid', '$ePassword', NOW())");
}
require_once "PHPMailer/PHPMailer.php";
require_once "PHPMailer/SMTP.php";
require_once "PHPMailer/Exception.php";
$mail = new PHPMailer();
$mail->Host = "smtp.gmail.com";
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Username = "f@gmail.com";
$mail->Password = 'rh5GwUXSSK@nf0a';
$mail->Port = 465; //587
$mail->SMTPSecure = "ssl";//tls
$mail->addAddress($email);
$mail->setFrom("f@gmail.com", "f");
$mail->isHTML(true);
$mail->Subject = "Your Login Details...";
$mail->Body = "
Hey,
<br><br>
Thank you for the purchase. Your login details are included below:<br><br>
<b>username</b>: $email<br>
<b>password</b>: $password<br><br>
<a href='http://sweettune.info/StripeRecurringPayments/login.php'>Click Here To Login</a><br><br>
Thanks,<br>
Senaid B.
";
if ($mail->send())
$error = 0;
else
$error = 1;
header('Location: thank-you.php?ue='.$email.'&e='.$error.'&p='.$password.'&pid='.$pid);
?>
login.php:
<?php
session_start();
if (isset($_SESSION['loggedIn'])) {
header('Location: dashboard.php');
exit();
}
$msg = "";
if (isset($_POST['email']) && isset($_POST['password'])) {
$conn = new mysqli("l", "n", "t", "pm");
$email = $conn->real_escape_string($_POST['email']);
$password = $conn->real_escape_string($_POST['password']);
$sql = $conn->query("SELECT id, password, plan FROM users WHERE email='$email'");
if ($sql->num_rows > 0) {
$data = $sql->fetch_assoc();
if (password_verify($password, $data['password'])) {
$_SESSION['plan'] = $data['plan'];
$_SESSION['userID'] = $data['id'];
$_SESSION['loggedIn'] = '1';
header('Location: dashboard.php');
exit();
}
}
$msg = "<span style='color:red'>Please Check Your Login Details</span>";
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Login Page</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<style type="text/css">
.container { margin-top: 100px; }
</style>
</head>
<body>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-6 col-md-offset-3" align="center">
<img src="images/logo.png" /><br><br>
<form method="POST">
<input class="form-control" name="email" placeholder="Email..."><br>
<input class="form-control" name="password" placeholder="Password..." type="password"><br>
<input type="submit" class="btn btn-primary" value="Log In">
</form>
<br><br>
<?php echo $msg ?>
</div>
</div>
</div>
</body>
</html>
logout.php
<?php
session_start();
unset($_SESSION['loggedIn']);
session_destroy();
header('Location: login.php');
exit();
?>
thank-you.php
<?php
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Thank You</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<style type="text/css">
.container { margin-top: 100px; }
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<h2>Thank You For Purchase!!!</h2>
<p>
<?php
if ($_GET['e'] == 1) {
?>
Your login details are included below:<br>
<b>username</b>: <?php echo $_GET['ue'] ?><br>
<b>password</b>: <?php echo $_GET['p'] ?><br><br>
<a href='http://sweettune.info/StripeRecurringPayments/login.php'>Click Here To Login
</a><br><br>
<form action="paymentProcess.php" method="POST" class="pull-right">
<button type="submit" name="cancel" class="btn btn-danger btn-xs">Cancel Subscription</button>
</form>
<?php
} else
echo 'Please Check Your Inbox/SPAM folder!';
?>
</p>
</div>
</div>
</div>
</body>
</html>