【问题标题】:Stripe.js - Resolve Cannot read property 'stripeToken' of undefinedStripe.js - 解决无法读取未定义的属性“stripeToken”
【发布时间】:2017-06-02 10:39:03
【问题描述】:

我正在使用 Stripe 的 Checkout 构建我的第一个基本 Express 应用程序。该应用程序正确呈现,但当我提交表单时,stripeTokenstripeEmail 均出现错误。我不确定为什么它没有通过。有什么帮助吗?

我的应用:

const keyPublishable = process.env.PUBLISHABLE_KEY;
const keySecret = process.env.SECRET_KEY;

const app = require("express")();
const stripe = require("stripe")(keySecret);

app.set('view engine', 'ejs')

app.get("/", (req, res) =>
  res.render("index.ejs", {keyPublishable}));

app.post("/charge", (req, res) => {
  let amount = 500;

  stripe.customers.create({
     email: req.body.stripeEmail,
    source: req.body.stripeToken
  })
  .then(customer =>
    stripe.charges.create({
      amount,
      description: "Sample Charge",
         currency: "usd",
         customer: customer.id
    }))
  .then(charge => res.render("charge.ejs"));
});

app.listen(7000);

还有我的index.ejs

<form action="/charge" method="POST">
  <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="pk_test_Gbu2akKhNgGjbKi4LPxOOWqc"
    data-amount="500"
    data-name="Ojoseyewear"
    data-description="Widget"
    data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
    data-locale="auto">
  </script>
</form>

【问题讨论】:

    标签: javascript express stripe-payments


    【解决方案1】:

    问题在于 Stripe 文档示例不包含 bodyParser。

    req.Body 只是从表单提交中返回一个对象。如果没有 bodyParser,就无法获取这两个字符串。

    将此添加到app.js,您就是金子:

    const bodyParser = require('body-parser');
    app.use(bodyParser.urlencoded({extended: true}));
    app.use(bodyParser.json());
    

    【讨论】:

      猜你喜欢
      • 2016-08-16
      • 2021-05-10
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2021-10-25
      • 2019-11-21
      • 1970-01-01
      相关资源
      最近更新 更多