Использование Webtask.io с Stripe для React-Static
Я строю небольшой сайт, используя React-Static. Сайт все построен, но мне нужно интегрировать основные функции пожертвования. У меня есть несколько вопросов, которые поставили меня в тупик. Следуя указаниям Томаса Янчука, я столкнулся с несколькими препятствиями.
1.) Когда страница изначально загружается как HTML, кнопка создается. Однако однажды отреагировав ударами, он удаляет мою кнопку. Я предполагаю, что мне нужно интегрировать форму JS через React, а не текущую строку.
<form action="WEBTASK.IO_URL" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key={my_public_stripe_key}
data-image=""
data-name=""
data-description=""
data-amount="2500"
data-zip-code="true"
data-currency="usd"
data-locale="auto"
data-panel-label="Donate"
data-label="">
</script>
</form>
2.) Если я нажимаю на кнопку и нажимаю на нее, я получаю начальные данные Stripe Checkout, которые отправляются по адресу webtask.io url. Однако я получаю ошибку:
"code": 500,
"error": "Script generated an unhandled synchronous exception.",
"details": "TypeError: Cannot read property 'stripeToken' of undefined"
Вот мой скрипт webtask.io. Я включил Модули NPM и правильные Секреты.
'use latest';
import bodyParser from 'body-parser';
import stripe from 'stripe';
bodyParser.urlencoded();
module.exports = function (ctx, req, res) {
stripe(ctx.secrets.stripeSecretKey).charges.create({
amount: 2500,
currency: 'usd',
source: ctx.body.stripeToken,
description: 'Contribute to the Campaign'
}, function (error, charge) {
var status = error ? 400 : 200;
var message = error ? error.message : 'Thank You for your Contribution!';
res.writeHead(status, { 'Content-Type': 'text/html' });
return res.end('<h1>' + message + '</h1>');
});
};
2 ответа
При экспорте экспресс-приложения (в отличие от простой функции) вам необходимо явно определить модель программирования с аргументом --meta wt-compiler=webtask-tools/express
(или вы можете использовать webtask-tools).
Таким образом, последняя командная строка становится:
$ wt create index.js --meta wt-compiler=webtask-tools/express
Вместо того, чтобы брать stripeToken из ctx, попробуйте использовать req.body.stripeToken
module.exports = function (ctx, req, res) {
stripe(ctx.secrets.stripeSecretKey).charges.create({
amount: 2500,
currency: 'usd',
source: req.body.stripeToken,
description: 'Contribute to the Campaign'
}, function (error, charge) {
var status = error ? 400 : 200;
var message = error ? error.message : 'Thank You for your Contribution!';
res.writeHead(status, { 'Content-Type': 'text/html' });
return res.end('<h1>' + message + '</h1>');
});
};