首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeystoneJS -条形集成

KeystoneJS -条形集成
EN

Stack Overflow用户
提问于 2017-05-25 14:00:03
回答 1查看 704关注 0票数 1

我正在尝试在一个KeystoneJS网页上设置一个条带结帐页面。

View.on(帖子)..。函数似乎不起作用,我也找不到问题的根源:

这是我的代码:

public/js/stripe.js

代码语言:javascript
复制
// Handle form submission
var form = document.getElementById('payment-form');                                                                                                   
form.addEventListener('submit', function(event) {                                                                                                     
    event.preventDefault();                                                                                                                           

stripe.createToken(card).then(function(result) {                                                                                                  
    if (result.error) {                                                                                                                           
        // Inform the user if there was an error                                                                                                  
        var errorElement = document.getElementById('card-errors');                                                                                
        errorElement.textContent = result.error.message;                                                                                          
    } else {                                                                                                                                      
        // Send the token to your server                                                                                                          
        onReceiveToken(result.token);                                                                                                             
        }                                                                                                                                             
    });                                                                                                                                               
});                                                                                                                                                                                                                                                                                                     
var onReceiveToken = function(token, args) {                                                                                                          
    // Submit token to server so it can charge the card                                                                                               
    $.ajax({                                                                                                                                          
        url: '/checkout',                                                                                                                             
        type: 'POST',                                                                                                                                 
        data: {                                                                                                                                       
            action: 'charge',                                                                                                                         
            stripeToken: token.id                                                                                                                     
        },                                                                                                                                            
        success: function(data) {                                                                                                                     
           console.log('Returns the HTML content of checkout.html');                                                                                                                    
        }                                                                                                                                             
    })                                                                                                                                                
};

路由/视图/checkout.js

代码语言:javascript
复制
var keystone = require('keystone');                                                                                                                   
var stripe = require('stripe')("STRIPE_KEY");                                                                                   

exports = module.exports = function (req, res) {                                                                                                      

    var view = new keystone.View(req, res);                                                                                                       
    var locals = res.locals;                                                                                                                      

    // locals.section is used to set the currently selected                                                                                       
    // item in the header navigation.                                                                                                             
    locals.section = 'checkout';                                                                                                                  

    // Render the view                                                                                                                            
    view.render('checkout');  

console.log(JSON.stringify(req.body)); <-- Is rendered correctly                                                                                                                    

//Create Subscription                                                                                                                             
view.on('post', { "action":"charge" }, function (next) {                                                                                          
    console.log(JSON.stringify(req.body)); <-- Isn't rendered                                                                                                        
    stripe.customers.create({                                                                                                                     
        description: 'Customer for elizabeth.williams@example.com',                                                                               
        source: res.token,                                                                                                                        
    }, function(err, customer) {                                                                                                                  
        // asynchronously called                                                                                                                  

    });                                                                                                                                           

    next()                                                                                                                                        
    });                                                                                                                                               
};

如能提供任何帮助,我将不胜感激:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-25 14:21:54

在写完问题后找到答案:

你必须最后渲染视图。

代码语言:javascript
复制
var keystone = require('keystone');                                                                                                                   
var stripe = require('stripe')("STRIPE_KEY");                                                                                   

exports = module.exports = function (req, res) {                                                                                                      

var view = new keystone.View(req, res);                                                                                                       
var locals = res.locals;                                                                                                                      

// locals.section is used to set the currently selected                                                                                       
// item in the header navigation.                                                                                                             
locals.section = 'checkout';                                                                                                                                           

//Create Subscription                                                                                                                             
view.on('post', { "action":"charge" }, function (next) {                                                                                          
console.log(JSON.stringify(req.body)); <-- Isn't rendered                                                                                                        
stripe.customers.create({                                                                                                                     
    description: 'Customer for elizabeth.williams@example.com',                                                                               
    source: res.token,                                                                                                                        
}, function(err, customer) {                                                                                                                  
    // asynchronously called                                                                                                                  

});                                                                                                                                           

next()                                                                                                                                        
}); 
// Render the view                                                                                                                            
view.render('checkout');                                                                                                                                              
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44182471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档