Использование 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>');
    });
};
Другие вопросы по тегам