1. Setup the PHP SDK
We are going to use the Stripe PHP download on Github from Stripe.
2. HTML code index.html
<html> <head> <title>stripe php</title> <style> .StripeElement { background-color: white; padding: 8px 12px; border-radius: 4px; border: 1px solid transparent; box-shadow: 0 1px 3px 0 #e6ebf1; -webkit-transition: box-shadow 150ms ease; transition: box-shadow 150ms ease; } .StripeElement--focus { box-shadow: 0 1px 3px 0 #cfd7df; } .StripeElement--invalid { border-color: #fa755a; } .StripeElement--webkit-autofill { background-color: #fefde5 !important; } </style> </head> <body> <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> <!-- The needed JS files --> <!-- JQUERY File --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <!-- Stripe JS --> <script src="https://js.stripe.com/v3/"></script> <!-- Your JS File --> <script src="charge.js"></script> </body> </html>3. charge.js file
// Stripe API Key var stripe = Stripe('pk_test_Agw01Kg5ZpIuuzUwR8tGLUME'); //YOUR_STRIPE_PUBLISHABLE_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(); }4. charge.php file
<?php require_once('/stripe-php-6.10.3/init.php'); \Stripe\Stripe::setApiKey('sk_test_mnT9JSEucLntq5fFi5hdNlce'); //YOUR_STRIPE_SECRET_KEY // Get the token from the JS script $token = $_POST['stripeToken']; // This is a $20.00 charge in US Dollar. //Charging a Customer // Create a Customer $name_first = "Batosai"; $name_last = "Ednalan"; $address = "New Cabalan Olongapo City"; $state = "Zambales"; $zip = "22005"; $country = "Philippines"; $phone = "09306408219"; $user_info = array("First Name" => $name_first, "Last Name" => $name_last, "Address" => $address, "State" => $state, "Zip Code" => $zip, "Country" => $country, "Phone" => $phone); $customer = \Stripe\Customer::create(array( "email" => "rednalan23@gmail.com", "source" => $token, 'metadata' => $user_info, )); // Save the customer id in your own database! // Charge the Customer instead of the card $charge = \Stripe\Charge::create(array( "amount" => 2000, "description" => "Purchase off Caite watch", "currency" => "usd", "customer" => $customer->id, 'metadata' => $user_info )); print_r($charge); // You can charge the customer later by using the customer id. //Making a Subscription Charge // Get the token from the JS script //$token = $_POST['stripeToken']; // Create a Customer //$customer = \Stripe\Customer::create(array( // "email" => "paying.user@example.com", // "source" => $token, //)); // or you can fetch customer id from the database too. // Creates a subscription plan. This can also be done through the Stripe dashboard. // You only need to create the plan once. //$subscription = \Stripe\Plan::create(array( // "amount" => 2000, // "interval" => "month", // "name" => "Gold large", // "currency" => "cad", // "id" => "gold" //)); // Subscribe the customer to the plan //$subscription = \Stripe\Subscription::create(array( // "customer" => $customer->id, // "plan" => "gold" //)); //print_r($subscription); ?>