如何使用PHP在Stripe中取消订阅?

时间:2019-09-06 01:10:35

标签: php mysql stripe-payments

我有一个条纹付款网站,可以在其中付款并启动保存到数据库的订阅计划,但是我想知道如何制作一个可以取消订阅的取消按钮。

在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>

0 个答案:

没有答案