2017-01-18 6 views
1

私はStripeのCheckoutを使用して私の最初の基本的なExpressアプリケーションを構築しています。アプリケーションは正しくレンダリングされますが、フォームを送信すると、stripeTokenstripeEmailの両方にエラーが表示されます。なぜそれが通過していないのか分かりません。どんな助け?Stripe.js - 解決未定義のプロパティ 'stripeToken'を読み取ることができません

マイアプリ:

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>

答えて

2

問題はストライプのドキュメントの例がありませんでしたということでしたbodyParserをインクルードします。

req.Bodyは、フォーム提出からオブジェクトを返します。 bodyParserがなければ、これらの2つの文字列を取得する方法はありません。

app.jsにこれを追加し、あなたは黄金だ:

const bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({extended: true})); 
app.use(bodyParser.json()); 
関連する問題