index.js
var stripe = require('stripe');
function parseRawBody(raw) {
var body = {};
var items = raw.substr(0).split('&');
for (var i = 0; i < items.length; i++) {
var item = items[i].split('=');
body[decodeURIComponent(item[0])] = decodeURIComponent(item[1] || '').replace(new RegExp("\\+", 'g'), ' ');
}
return body;
}
module.exports = function(context, req) {
var body = parseRawBody(req.body);
stripe(process.env.stripeKey).charges.create({
amount: 250,
currency: 'cad',
source: body.stripeToken,
description: 'Cafe'
}, function (error, response) {
if (error) context.log.error(error.message);
if (response) context.log.info(JSON.stringify(response));
context.res.status = (error ? 400 : 200);
context.res.setHeader('content-type', 'text/html; charset=utf-8');
context.res.raw('<h1>' + (error ? error.message : 'Merci beaucoup!') + '</h1>');
});
}
index.html
<form action="{serverless_function_url}" method="POST">
<script
src="https://checkout.stripe.com/checkout.js"
class="stripe-button"
data-key="{stripe_public_key}"
data-image="assets/whatever.png"
data-name="name..."
data-description="description..."
data-amount="250"
data-locale="auto"
data-panel-label="panel-label..."
data-label="label...">
</script>
</form>
Note: Vous pouvez essayer le bouton avec une carte de crédit de test (ex: 4242 4242 4242 4242).