iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 18
0
自我挑戰組

如何成為工程師? (從工地到前端工程師)系列 第 18

[Day 18] Node 串金流, 不然怎麼跟客戶收錢 Part II

  • 分享至 

  • xImage
  •  

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

以下就是前端傳的token

stripe token

教學

  1. 先install stripe
npm install stripe --save
  1. 然後在我們門的controller(index.js-連結) POST Request. 我們先看stripe的範例. 連結

    • 首先帶入stripe token
    • 用stripe API提供按照他們要的格式填寫就好了
    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 裡面存檔.

總結

cash

參考文件


上一篇
[Day 17] Node 串金流, 不然怎麼跟客戶收錢 Part I
下一篇
[Day 19] Node JS 如何用Passport.js 進行認證? let me show you!
系列文
如何成為工程師? (從工地到前端工程師)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言