2017-05-15 3 views
2

私はノードとjavascriptを使い慣れていますので、よろしくお願いいたします。これは今私が持っているもので、ストライプのドキュメントからコピーしたものです。私は、コメントされたトークン関数で行うべきことについて混乱しています。私は単純なストライプ構成を使用していて、すべてが完璧に機能していましたが、入力フィールドを使用してカスタム量をユーザーが設定できるようにすることを決めました。その方向で私を導くどんな助けも素晴らしいだろう。ノードjsを使用して可変量のストライプを設定しようとするガイダンスが必要

<script src="https://checkout.stripe.com/checkout.js"></script> 

<button id="customButton">Purchase</button> 

<script> 
var handler = StripeCheckout.configure({ 
    key: 'pk_test_...', 
    image: 'https://stripe.com/img/documentation/checkout/marketplace.png', 
    locale: 'auto', 
    token: function(token) { 
    // You can access the token ID with `token.id`. 
    // Get the token ID to your server-side code for use. 
    } 
}); 

document.getElementById('customButton').addEventListener('click', function(e) { 
    // Open Checkout with further options: 
    handler.open({ 
    name: 'Demo Site', 
    description: '2 widgets', 
    amount: 2000 
    }); 
    e.preventDefault(); 
}); 

// Close Checkout on page navigation: 
window.addEventListener('popstate', function() { 
    handler.close(); 
}); 
</script> 

そしてここでは、私のサーバーサイドコード(stripe.js)です:

var express = require('express'); 
var router = express.Router(); 
var stripe = require('stripe')('sk_test_...'); 

router.post('/charge', function(req, res, next) { 
    var token = req.body.stripeToken; 
    var chargeAmount = req.body.chargeAmount; 
    var charge = stripe.charges.create({ 
     amount: 2000, 
     currency: "usd", 
     source: token 
    }, function(err, charge) { 
     if(err) { 
     return console.log(err); 
     } 
     console.log(req.body); 
     res.redirect('/users/dashboard'); 
    }); 
}); 

module.exports = router; 

答えて

1

Checkoutは、バックエンドサーバへの金額と通貨を送信しません - それだけのためにamountcurrencyパラメータを使用しています表示目的。

これは仕様です。支払う顧客が明示的に金額を設定するシナリオの外で(たとえば、寄付を受け入れる場合など)、顧客のブラウザから送信された金額を信用することはできません。

しかし、この場合、お客様が金額を設定したいと思うようです。したがって、これを行う必要があります:

  1. クライアント側(フロントエンド)コードでは、金額がCheckoutによって返されたトークンと共に送信されることを確認してください。

    ここでは、顧客が金額を設定するフォームの簡単な例を示します。https://jsfiddle.net/ywain/g2ufa8xr/このフォームでは、額はamount POSTパラメータと、Checkoutによって返されたstripeTokenおよびstripeEmailパラメータとして送信されます。

  2. サーバー側(バックエンド)コードでは、charge creation requestの額を使用してください。あなたの秘密のAPIキーを共有することはありませんしてください、サイドノートとして

    var token = req.body.stripeToken; 
    var amount = req.body.amount; 
    var charge = stripe.charges.create({ 
        amount: amount, 
        currency: "usd", 
        source: token 
    }, function(err, charge) { 
        ... 
    } 
    

これは簡単で、単にパラメータを取得し、充電作成要求のamountパラメータの値として使用たとえそれが単なるテストキーであっても、公開されます。できるだけ早く新しい鍵を公開するべきです。これを行うには、ダッシュボードのhttps://dashboard.stripe.com/account/apikeysに移動し、置き換えるキーの隣にある「リサイクル」アイコンをクリックします。

関連する問題