用node.js调用apis就像chargebee一样

时间:2015-12-18 17:02:14

标签: javascript node.js

在通过node.js调用API时,我有点困惑。 我有一个运行节点js的服务器,我可以安装类似于chargebee的框架。

我创建了一个html页面,我在其中进行订阅等。现在我想调用相应的chargebee函数来进行订阅。 如果我尝试加载带有require('chargebee')的chargebee,它就会失败。我只能在服务器js中加载它。

那么我怎么可能使用chargebee的功能呢?

是否有可能通过点击按钮从chargbee调用一个函数?我是否必须通过快递提供此功能?

对于node.js,我认为我不理解客户端代码和服务器端代码之间的区别。 例如,如何通过点击html按钮来调用服务器端的功能?

2 个答案:

答案 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>