Alien10
Coder
I know how to use stripe now, but when I am integrating it into my website, the form takes me to index.php. Here is my code for my checkout.php:
charge.js (javascript):
and charge.php (PHP):
PHP:
<?php
session_start();
if (!isset($_SESSION['letin'])) {
header('Location: index.php');
exit();
} else {
if ($_SESSION['letin'] == true) {
?>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="check-css/style.css">
</head>
<body id="body">
<h2>Responsive Checkout Form</h2>
<p>Resize the browser window to see the effect. When the screen is less than 800px wide, make the two columns stack on top of each other instead of next to each other.</p>
<div class="col-25">
<div class="container">
<h4>Cart <span class="price" style="color:black"><i class="fa fa-shopping-cart"></i> <b>1</b></span></h4>
<?php
$plan = $_SESSION['plan'];
if ($plan == "good") {
$price = 1.75;
echo '<p><a href="">Good Alien Coder </a><span class="price">$1.75 /mouth AU</span></p>';
} elseif ($plan == "beast") {
$price = 3.00;
echo '<p><a href="">Good Alien Coder </a><span class="price">$3.00 /mouth AU</span></p>';
} else {
header("Location: index.php");
exit();
}
?>
<hr>
<p>Total <span class="price" style="color:black"><b><?php echo "$".$price." AU"; ?> /m</b></span></p>
</div>
</div>
<form action="charge.php" method="post" id="payment-form">
<div class="form-row">
<label for="card-element">Credit or debit card</label>
<div id="card-element">
<!-- a Stripe Element will be inserted here. -->
</div>
<!-- Used to display form errors -->
<div id="card-errors"></div>
</div>
<button>Submit Payment</button>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://js.stripe.com/v3/"></script>
<script src="charge.js"></script>
</body>
</html>
<?php
} else {
header('Location: index.php');
exit();
}
}
?>
charge.js (javascript):
JavaScript:
// Stripe API Key
var stripe = Stripe('pk_test_key');
var elements = stripe.elements();
// Custom Styling
var style = {
base: {
color: '#32325d',
lineHeight: '24px',
fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
fontSmoothing: 'antialiased',
fontSize: '16px',
'::placeholder': {
color: '#aab7c4'
}
},
invalid: {
color: '#fa755a',
iconColor: '#fa755a'
}
};
// Create an instance of the card Element
var card = elements.create('card', {style: style});
// Add an instance of the card Element into the `card-element` <div>
card.mount('#card-element');
// Handle real-time validation errors from the card Element.
card.addEventListener('change', function(event) {
var displayError = document.getElementById('card-errors');
if (event.error) {
displayError.textContent = event.error.message;
} else {
displayError.textContent = '';
}
});
// Handle form submission
var form = document.getElementById('payment-form');
form.addEventListener('submit', function(event) {
event.preventDefault();
stripe.createToken(card).then(function(result) {
if (result.error) {
// Inform the user if there was an error
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
} else {
stripeTokenHandler(result.token);
}
});
});
// Send Stripe Token to Server
function stripeTokenHandler(token) {
// Insert the token ID into the form so it gets submitted to the server
var form = document.getElementById('payment-form');
// Add Stripe Token to hidden input
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'stripeToken');
hiddenInput.setAttribute('value', token.id);
form.appendChild(hiddenInput);
// Submit form
form.submit();
}
and charge.php (PHP):
PHP:
<?php
require_once('vendor/autoload.php');
\Stripe\Stripe::setVerifySslCerts(false);
\Stripe\Stripe::setApiKey('sk_test_key');
// Get the token from the JS script
$token = $_POST['stripeToken'];
// Create a Customer
$customer = \Stripe\Customer::create(array(
"email" => "[email protected]",
"source" => $token,
));
// Creates a subscription plan. This can also be done through the Stripe dashboard.
// You only need to create the plan once.
// Subscribe the customer to the plan
$plan = $_SESSION['plan'];
if ($plan == "good") {
$plan_id = "price_1HD6LsKRjA19rEnbbLss9umA";
} elseif ($plan == "beast") {
$plan_id = "price_1HD6NzKRjA19rEnbRbxFA7Ih";
} else {
header("Location: index.php");
}
$subscription = \Stripe\Subscription::create(array(
"customer" => $customer->id,
"price" => "plan_HmGWHNjHNEQdpe"
));
print_r($subscription);
print_r($customer);