2015-12-18 4 views
1

Je suis un peu confus quand il s'agit d'appeler des API sur node.js. J'ai un serveur qui exécute le noeud js où je peux installer des frameworks comme celui de chargebee.Appeler apis comme chargebee avec node.js

J'ai créé une page html où je fais des abonnements etc. Maintenant je voudrais appeler la fonction de chargebee correspondante pour faire l'abonnement. Si j'essaye de charger le chargebee avec require('chargebee') il échoue. Je peux seulement le charger dans le serveur js.

Alors, comment pourrais-je utiliser les fonctionnalités de chargebee?

Est-il possible que j'appelle une fonction de charge en cliquant sur le bouton? Dois-je fournir cette fonction par exprès?

Je pense que je n'ai pas compris la différence entre le code côté client et le code côté serveur quand il s'agit de node.js. Comment peut-on appeler la fonction côté serveur en cliquant sur les boutons html par exemple?

+0

pour les différents entre le client et le côté serveur js, tout ce qui tourne @ ur navigateur est côté client que vous pouvez trouver par view-source/inspect-tools du code du navigateur. ce qui se passe jamais @ code de ligne de commande à travers server.js/what so .. est le code côté serveur .. – Manivannan

Répondre

3

Afin de déclencher la demande du côté client, vous pouvez utiliser des formulaires ou AJAX. Voici un exemple avec cadre explicite dans lequel formulaire est utilisé pour déclencher la demande et créer abonnement chargebee

code côté client:

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

Code nœud serveur:

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"); 
+0

Thx pour la solution. Alors n'y a-t-il aucun moyen d'accéder directement aux fonctions de charge? Je veux dire est-il possible de charger la bibliothèque avec require en tant que js externe et d'appeler les fonctions? – Silve2611

+0

Je ne suis pas sûr des questions. Voulez-vous accéder aux fonctions directement à partir du script côté client? –

+0

Votre réponse est vraiment bonne. J'ai juste besoin de comprendre si c'est possible. Pourquoi les fonctions de chargebee ne sont pas invoquées directement lors du clic de l'utilisateur. – Silve2611