在通过node.js调用API时,我有点困惑。 我有一个运行节点js的服务器,我可以安装类似于chargebee的框架。
我创建了一个html页面,我在其中进行订阅等。现在我想调用相应的chargebee函数来进行订阅。
如果我尝试加载带有require('chargebee')
的chargebee,它就会失败。我只能在服务器js中加载它。
那么我怎么可能使用chargebee的功能呢?
是否有可能通过点击按钮从chargbee调用一个函数?我是否必须通过快递提供此功能?
对于node.js,我认为我不理解客户端代码和服务器端代码之间的区别。 例如,如何通过点击html按钮来调用服务器端的功能?
答案 0 :(得分:3)
为了从客户端触发请求,您可以使用表单或AJAX。以下是express框架的示例,其中form用于触发请求并在chargebee中创建订阅
客户端代码:
<html>
<body>
<form action="/subscribe" method="post">
<label for="name">First Name:</label>
<input type="text" id="name" name="customer[first_name]" placeholder="first name" />
<br />
<label for="name">Last Name:</label>
<input type="text" id="name" name="customer[last_name]" placeholder="last name" />
<br />
<label for="email">Email:</label>
<input type="email" id="email" name="customer[email]" placeholder="Enter your email address" />
<br />
<input type="submit" value="Create Profile" />
</form>
</body>
</html>
节点 - 服务器代码:
var express = require('express');
var chargebee = require("chargebee");
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json()); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true
}));
chargebee.configure({site : "<<site_name>>",
api_key : "<<api_key>>"
app.get('/', function(req, res){
res.sendFile(__dirname + '/form.html');
});
app.post('/subscribe', function(req, res){
var params = req.body;// getting form params as JSON
params['plan_id']='enterprise'; // plan id that is present in your Chargebee site
chargebee.subscription.create(params).request(function(error,result){
if(error){
//handle error
console.log(error);
}else{
console.log(result);
var subscription = result.subscription;
res.writeHead(200, {
'content-type': 'text/plain'
});
res.write('Successfully created subscription\n\n' + 'id :: '+ subscription.id);
res.end();
}
});
});
app.listen(3000);
console.log("server listening on 3000");
答案 1 :(得分:1)
chargebee v3可以实现。希望这会解决您的查询
<!DOCTYPE html>
<html>
<head>
<title>chargebee Example</title>
<script src = "https://js.chargebee.com/v2/chargebee.js" data-cb-site = "your site name" > </script>
</head>
<body>
<!-- for creating subscription -->
<a href="javascript:void(0)" data-cb-type="checkout" data-cb-plan-id="30" >subscribe</a>
<!-- for managing portal -->
<a href="javascript:void(0)" data-cb-type="portal" >Manage account</a>
</body>
</html>