Skip to content

Instantly share code, notes, and snippets.

@boucher
Forked from siddarth/gist:1379745
Created February 6, 2012 07:09
Show Gist options
  • Save boucher/1750375 to your computer and use it in GitHub Desktop.
Save boucher/1750375 to your computer and use it in GitHub Desktop.
Stripe PHP simple example
<?php
require 'path-to-Stripe.php';
if ($_POST) {
Stripe::setApiKey("YOUR-API-KEY");
$error = '';
$success = '';
try {
if (!isset($_POST['stripeToken']))
throw new Exception("The Stripe Token was not generated correctly");
Stripe_Charge::create(array("amount" => 1000,
"currency" => "usd",
"card" => $_POST['stripeToken']));
$success = 'Your payment was successful.';
}
catch (Exception $e) {
$error = $e->getMessage();
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Stripe Getting Started Form</title>
<script type="text/javascript" src="https://js.stripe.com/v1/"></script>
<!-- jQuery is used only for this example; it isn't required to use Stripe -->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
// this identifies your website in the createToken call below
Stripe.setPublishableKey('YOUR-PUBLISHABLE-API-KEY');
function stripeResponseHandler(status, response) {
if (response.error) {
// re-enable the submit button
$('.submit-button').removeAttr("disabled");
// show the errors on the form
$(".payment-errors").html(response.error.message);
} else {
var form$ = $("#payment-form");
// token contains id, last4, and card type
var token = response['id'];
// insert the token into the form so it gets submitted to the server
form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />");
// and submit
form$.get(0).submit();
}
}
$(document).ready(function() {
$("#payment-form").submit(function(event) {
// disable the submit button to prevent repeated clicks
$('.submit-button').attr("disabled", "disabled");
// createToken returns immediately - the supplied callback submits the form if there are no errors
Stripe.createToken({
number: $('.card-number').val(),
cvc: $('.card-cvc').val(),
exp_month: $('.card-expiry-month').val(),
exp_year: $('.card-expiry-year').val()
}, stripeResponseHandler);
return false; // submit from callback
});
});
</script>
</head>
<body>
<h1>Charge $10 with Stripe</h1>
<!-- to display errors returned by createToken -->
<span class="payment-errors"><?= $error ?></span>
<span class="payment-success"><?= $success ?></span>
<form action="" method="POST" id="payment-form">
<div class="form-row">
<label>Card Number</label>
<input type="text" size="20" autocomplete="off" class="card-number" />
</div>
<div class="form-row">
<label>CVC</label>
<input type="text" size="4" autocomplete="off" class="card-cvc" />
</div>
<div class="form-row">
<label>Expiration (MM/YYYY)</label>
<input type="text" size="2" class="card-expiry-month"/>
<span> / </span>
<input type="text" size="4" class="card-expiry-year"/>
</div>
<button type="submit" class="submit-button">Submit Payment</button>
</form>
</body>
</html>
Copy link

ghost commented Dec 30, 2014

What do I need to change if I were to charge a customer rather than a card?

@otuatail
Copy link

Strugling with this. 1st it has a default amount of £10 assuming it is in pence. There should be an input field for the amount.
2nd require 'path-to-Stripe.php'; is this a joke. or do we have to research the path.

What is needed I think is a separate php form and a php only to keep the code separate pref behind a .htaccess folder. That way we can put up a thank you form or an error form.

Copy link

ghost commented Jan 26, 2015

otuatail you could put the amount into a hidden field no problem then replace it on the server-side using the POST variable. Remember to validate it before submission

Secondly, the script can't be published with the path to Stripe as it depends where you put it. If your document root is /var/www/html/ then you may want to put it in /var/www/html/Stripe/

To split up the form as you suggest (which is the better way of doing it), copy the first 20 lines of code, place them in a new file wherever you would like it and then submit the form to that file. At the end of the file add header('Location: index.php'); remembering to use your own path

This is fairly basic PHP coding, so general tutorials should help a lot. If you need any more help let me know

Dan

@LinuxPhreak
Copy link

Would I just added "plan" => "myplanname" if I wanted to make it a subscription form?

if ($_POST) {
Stripe::setApiKey("YOUR-API-KEY");
$error = '';
$success = '';
try {
if (!isset($_POST['stripeToken']))
throw new Exception("The Stripe Token was not generated correctly");
Stripe_Charge::create(array("amount" => 1000,
"currency" => "usd",
"plan" => "myplanname",
"card" => $_POST['stripeToken']));
$success = 'Your payment was successful.';
}
catch (Exception $e) {
$error = $e->getMessage();
}
}

?>

@bedio
Copy link

bedio commented Apr 23, 2015

hi how can i integrate stipe to symfony project

@MaanikSingh
Copy link

I'm a very beginner to this and coding in general, but i dont understand how you can execute php and html in the same file, what am i missing?

@bateller
Copy link

Just FYI if you are using Stripe's new Stripe-PHP found here:
https://github.com/stripe/stripe-php

Here is this updated Gist with the correct format for the new Stripe API:
https://gist.github.com/bateller/154c6e5d1f6e0e53e527

@amitambekar
Copy link

Class 'Stripe' not found in E:\xampp\htdocs\projects\Amit\try\stripe\stripe-php-2.1.4\gistfile1.php on line 4
error coming what should i do ??

@vishusharma1
Copy link

is it possible to integrate stripe gateway with the .Net if it is then please let me know the code if anyone knows

@deemi
Copy link

deemi commented Mar 23, 2016

Can any one tell me please, where is the input field of price .... and can i convert this into radio button

@SamAsEnd
Copy link

@deemi DON'T USE A PRICE FIELD ON YOUR FORM PLEASE!

    Stripe_Charge::create(array("amount" => 1000,
                                "currency" => "usd",
                                "card" => $_POST['stripeToken']));

the "amount" key is for the price and fetch that from the db of some where safe!

@LuceroGera
Copy link

Hello my friend,
I was looking your example and I want to look functional but I can't because I don't know what do you have in this file (path-to-Stripe.php)?
Can you help me please?
Thanks,
Lucero

@garimaagarwal111
Copy link

line number 72 73 says undefined index

@vikas2804
Copy link

Hi,

Can anyone tell me how can i add more fields(name, city, address1 etc.) and save in stripe while creating new user?
Please

@big89
Copy link

big89 commented Dec 28, 2016

If anyone wants integrate stripe payment gateway api, you can contact me. Thanks !!!

@jdc-cunningham
Copy link

jdc-cunningham commented Dec 10, 2017

Just a note for anyone regarding the stripe.php path

Apparently you just require the init.php from the main folder (extracted) for non-composer install

require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR.'stripe-php-5.7.0/init.php');

Found from here:

https://stackoverflow.com/questions/28846062/stripe-php-fatal-error-class-stripe-charge-not-found

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment