条纹 - 通过1个HTML按钮提交令牌/创建费用?

时间:2017-10-10 20:21:41

标签: javascript html node.js api stripe-payments

                    <!-- Stripeform -->
                    <form action="/charge" method="post" id="payment-form">
                        <div class="form-row">
                            <label for="card-element">
                            Credit or debit card
                            </label>
                            <div id="card-element">
                            <!-- a Stripe Element will be inserted here. -->
                            </div>

                            <!-- Used to display form errors -->
                            <div id="card-errors" role="alert"></div>
                        </div>

                        <button>Submit Payment</button>
                    </form>

此HTML代码与我的controller.js一起可以向Stripe提交令牌。我还在server.js中写了Node.js,成功向Stripe收费:

// Get our dependencies
var stripe = require("stripe")("sk_test_111111111111111111111111");
var express = require('express'), bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false })
var app = express();
var jwt = require('express-jwt');
var rsaValidation = require('auth0-api-jwt-rsa-validation');

//Implement charge endpoint 
app.get('/', function(req, res) {
// for kicks, just sending checkout
res.send('<form action="/charge" method="POST">Buy it !<script 
src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-
key="pk_test_111111111111111111111"></script></form>')
});

app.post('/charge',urlencodedParser, function(req, res) {

//grab a token
var token = req.body.stripeToken;

//Creating a charge
stripe.charges.create({
amount: 2000,
currency: "usd",
source: token, // obtained with Stripe.js
description: "Charge"
}, function(err, charge) {
    res.send("You made a charge: "+ charge.id);
});
}); 

app.listen(5000)

问题是,他们独立工作。如果我本地托管我的网站文件夹publicserver.js中的public/subfolder)位于端口7878,则提交付款按钮会成功提交带有条带测试的令牌卡信息,但随后将我重定向到file:///D:/charge,并显示404 - 错误。

现在如果我在cmd中运行node server.js,然后转到localhost:5000,那么我可以使用测试卡进行充电。
我希望我的网站上的按钮生成并提交令牌(它会这样做),然后启动收费。

请随意详细说明API / HTML关系,因为我显然感到困惑。

1 个答案:

答案 0 :(得分:1)

当您直接提供文件时,您实际上并没有运行节点服务器,因此无法运行/charge路由。

为了实现这一点,您需要服务器端节点代码在服务器上运行 - 并且可以访问<form>提交的HTML文件;那些东西不能在客户端运行 - 所以你需要在某个地方托管。

它不一定需要托管在与HTML相同的位置,但它确实需要从网站某处进行访问。

您可能希望查看Heroku之类的内容来托管该部分。