这里有点新手。我一直在寻找一个有效的答案,并发现了玉问题的一些相似之处,但我没有使用Jade。我已经通过了#34;用户"如下所示属性为HTML视图:
app.get('/profile', isLoggedIn, function(req, res) {
res.render('profilePage/profilePage.html', {
user : req.user // get the user out of session and pass to template
});
});
然后,在我的个人资料HTML中,我可以像这样访问我的用户属性:
<%=user.local.firstname%>'s Profile
但是,我想允许Stripe通过Stripetoken发送用户的信用卡信息。我已设法从用户输入的文本字段中包含可变金额。但是,我想附加用户属性,以便我可以在回调中使用它。以下是配置文件html中包含的javascript / jquery:
<!-- New section -->
<script type="text/javascript">
<!-- Fill in your publishable key -->
Stripe.setPublishableKey('pkkey');
var stripeResponseHandler = function(status, response) {
var $form = $('#contactForm');
var $amount = $('#amount').val();
if (response.error) {
// Show the errors on the form
$form.find('.payment-errors').text(response.error.message);
$form.find('button').prop('disabled', false);
} else {
// token contains id, last4, and card type
var token = response.id;
// Insert the token into the form so it gets submitted to the server
$form.append($('<input type="hidden" name="stripeToken" />').val(token));
$form.append($('<input type="hidden" name="amount" />').val($amount));
// and re-submit
$form.get(0).submit();
}
};
jQuery(function($) {
$('#contactForm').submit(function(e) {
var $form = $(this);
// Disable the submit button to prevent repeated clicks
$form.find('button').prop('disabled', true);
Stripe.card.createToken($form, stripeResponseHandler);
// Prevent the form from submitting with the default action
return false;
});
});
</script>
正如您所看到的,我已设法附加$ amount变量,以便我可以在回调中访问它:
module.exports = function(app, passport) {
app.post('/stripe', function(req,res) {
// =====STRIPETOKEN======
var transaction = req.body;
var stripeToken = transaction.stripeToken;
var donationAmount = transaction.amount;
stripe.customers.create({
source : stripeToken,
account_balance : 0
},function(err, customer) {
if (err) {
console.log(err);
} else {
console.log("Success!");
}});
// ====CREATE CHARGE======
var charge =
{
amount : donationAmount,
currency : 'USD',
card : stripeToken
};
stripe.charges.create(charge, function(err, charge) {
if(err)
console.log(err);
else
{
res.json(charge);
console.log('Successful charge sent to Stripe!');
console.log(charge);
};
});
// ====PROFILE PAGE REDIRECT=====
res.render('profilePage/profilePage.html', {
});
});
所以这就是我的问题。我希望将用户的信息(有点像我做的金额)传递给post方法,这样当它重定向成功时,我可以将它传回res.render函数,并将其发送给Stripe用于描述目的。我唯一能想到的是将用户信息放在HTML中的隐藏字段中并像这样访问它,但这听起来很混乱而且不合适。
这是我第一次在这里发帖,所以如果它太冗长或不够具体,我会道歉。谢谢!
答案 0 :(得分:0)
答案就在于我在申请中宣布护照和条纹的方式。确保在所有内容后声明护照,以使用户变量可用于条带和所有视图。