我們從前端拿到token, 之後接下來我們要把資料傳到stripe. 然後資料成功後再把order 存在我們的order table 裡面.
以下就是前端傳的token

npm install stripe --save
然後在我們門的controller(index.js-連結) POST Request. 我們先看stripe的範例. 連結
var stripe = require("stripe")(
  "sk_test_BQokikJOvBiI2HlWgH4olfQ2"
);
stripe.charges.create({
  amount: 2000,
  currency: "usd",
  source: "tok_mastercard", // obtained with Stripe.js
  description: "Charge for andrew.thompson@example.com"
}, function(err, charge) {
  // asynchronously called
});
Amount 的資料就是我們要收多少錢. Source 的資料就是我們從part I 拿到的token. 其他的資料都是從request或session 裡面取得的.
// Post Checkout Page
router.post('/checkout', function(req, res, next) {
  if (!req.session.cart) {
    return res.render('shop/shopping-cart')
  }
  var cart = new Cart(req.session.cart)
  //注意這邊
  var stripe = require("stripe")(
  "sk_test_UawoxUENSN7VkeeMIVKgmHMZ"
  );
  stripe.charges.create({
  amount: cart.totalPrice * 100, // stripe 是以毛(cent)為單位 所以要 * 100
  currency: "usd",
  source: req.body.stripeToken, // 從我們的request form 拿到
  description: "Test Charge"
  }, function(err, charge) {
    if (err) {
      req.flash('error', err.messages)
      return res.redirect('/checkout')
    }
    var order = new Order({
      name: req.body.name,
      address: req.body.address,
      cart: cart,
      paymentId: charge.id
    })
    order.save(function(err, result){
      req.flash('success', 'Successfully bought product')
      req.session.cart = null
      res.redirect('/')
    })
  });
})
如果有error的話, 我們回到checkout, 然後傳錯誤訊息. 如果沒有錯的話, 我們在Order 裡面存檔.
