Я создаю интеграцию Stripe Custom Checkout, которая позволяет пользователям регистрироваться и оплачивать событие.Варианты регистрации очень просты и состоят всего из 4 категорий - все по одной цене.
Мне удалось передать заголовки категорий параметру description во всплывающем окне Stripe Checkout, но у меня возникают проблемы при передачетот же параметр описания для API Stripe.
После успешного тестирования, Stripe возвращает объект с 'description: null'.
Добавление строки к параметру description корректно возвращает строку, однако мне бы хотелось, чтобы она возвращалазаголовок категории указан в моей форме.
INDEX.HTML
<script>
var checkoutHandler = StripeCheckout.configure({
key: "pk_test_stripeTestKey",
locale: "auto",
});
// var button = document.getElementById("submitButton");
// button.addEventListener("click", function(ev) {
function checkout(ev) {
var description = $('#categoryDesc').val();
checkoutHandler.open({
image: "/cj-stripe-icon.jpg",
name: 'The EVENT 2019',
description: description, //$("#categoryDesc").val() + " - " + "$130",
amount: 13000,
token: handleToken
});
};
// });
function handleToken(token) {
fetch("/charge", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify(token)
})
.then(response => {
if (!response.ok)
throw response;
return response.json();
})
.then(output => {
console.log("Purchase succeeded:", output);
submitToAPI(event);
document.getElementById("shop").innerHTML = "<h2>Thank you for registering!</h2><h3>You should receive an email confirmation shortly.</h3>";
})
.catch(err => {
console.log("Purchase failed:", err);
})
}
</script>
APP.JS
onst express = require("express");
const stripe = require("stripe")(keySecret);
const bodyParser = require("body-parser");
const app = express();
app.use(express.static("public")); // serves content from the public directory
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.post("/charge", (req, res) => {
let amount = 13000;
stripe.customers.create({
email: req.body.email,
card: req.body.id
})
.then(customer =>
stripe.charges.create({
amount,
currency: "usd",
description: req.body.description,
customer: customer.id
}))
.then(charge => res.send(charge))
.catch(err => {
console.log("Error:", err);
res.status(500).send({error: "Purchase Failed"});
});
});