<!-- 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一起能够向条带提交一个令牌.我还有一个用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)问题是他们是独立工作的。如果我将我的网站文件夹public (它的server.js也位于public/subfolder中)放在7878端口,则提交支付按钮成功地提交了带有Stripe测试卡信息的令牌,但随后使用404-error将我重定向到file:///D:/charge。
现在,如果我在cmd中运行node server.js,然后转到localhost:5000,那么我可以用测试卡收费。
我想要按钮在我的网站生成,并提交令牌(它这样做),并开始收费。
尽管详细说明API/HTML之间的关系,因为我显然很困惑。
发布于 2017-10-10 21:56:44
当您直接为文件提供服务时,您实际上并不运行Node服务器,因此/charge路由无法运行。
为了使其工作,您将需要服务器端节点代码在服务器上运行-并且可以访问<form>提交的HTML;这些东西不能在客户端运行,所以您需要将其托管在某个地方。
它不一定需要被托管在与HTML相同的地方,但它确实需要在某个地方可以从web上访问。
您可能想看看像赫鲁库这样的托管部分。
https://stackoverflow.com/questions/46675328
复制相似问题