2017-08-24 3 views
0

Je cours le code suivant dans un script appelé pp.js. Et je cours ceci sur mon index.html sur le chargement de la page pour le test. Je regroupe tous les fichiers source en utilisant le dernier module webpack.Erreur lors de l'exécution de l'API Paypal à l'aide du noeud js

var paypal = require('paypal-rest-sdk'); 

    var user_config ={ 
     'mode': 'sandbox', //sandbox or live 
     'client_id': 'xxxxxxx', 
     'client_secret': 'xxxxxxx' 
     }; 

    paypal.configure(user_config); 

    var create_payment_json = { 
     "intent": "sale", 
     "payer": { 
      "payment_method": "paypal" 
     }, 
     "redirect_urls": { 
      "return_url": "http://return.url", 
      "cancel_url": "http://cancel.url" 
     }, 
     "transactions": [{ 
      "item_list": { 
       "items": [{ 
        "name": "item", 
        "sku": "item", 
        "price": "1.00", 
        "currency": "USD", 
        "quantity": 1 
       }] 
      }, 
      "amount": { 
       "currency": "USD", 
       "total": "1.00" 
      }, 
      "description": "This is the payment description." 
     }] 
    }; 

// TILL HERE THERE IS NO ERROR 

    paypal.payment.create(create_payment_json, function (error, payment) { 
     if (error) { 
      console.log("There seems to be some error... I hope it can be corrected."); 
      throw error; 
     } else { 
      console.log("Create Payment Response"); 
      console.log(payment); 
     } 
    }); 

Lorsque le dernier bit du code est exécuté à savoir paypal.payment.create(create_ ... Je reçois l'erreur suivante dans la console de mon navigateur.

Error thrown into the console

Comment puis-je remédier à cette situation?

Répondre

1

Ce code doit être exécuté côté serveur. Le même problème dans PayPal tracker SDK: https://github.com/paypal/PayPal-node-SDK/issues/220

Quote 1 (du billet lié)

S'il vous plaît voir #149 (comment). Il semble que vous essayez d'exécuter ce code dans le navigateur, ce qui peut être un problème de sécurité. Si l'utilisateur a accès à vos informations d'identification ou dispose d'un jeton d'accès, il peut faire tout ce que vous pouvez faire en tant que commerçant (par exemple créer plus de paiements, rembourser des fonds, etc.).

Citation 2 (à partir du #149 ticket):

je l'ai fait une enquête plus approfondie. Apparemment, cette erreur request.js:54 Uncaught Error: Invalid value for opts.mode. provient d'une version de stream-http/request.js. Je devine que vous essayez d'utiliser browserify et en utilisant stream-http dans le navigateur pour simuler le module http intégré de node.js.

Essayez-vous d'exécuter ce code SDK dans le navigateur (au lieu d'un processus node.js côté serveur)?

Ce kit de développement logiciel node.js ne doit être utilisé que sur un serveur sécurisé. J'ai une expérience très limitée en utilisant browserify. Sauf erreur, vous devez donner à ce SDK l'accès à votre ID client et à votre secret client pour que ce SDK fonctionne, et si votre code s'exécute dans le navigateur, vous exposerez les informations d'identification à n'importe quel client du navigateur. Cela permettra à tout client d'être en mesure de faire quelque chose à votre compte (par exemple, rembourser tous vos paiements). Si seulement une partie de votre code est destinée à être exécutée dans le navigateur et qu'une autre partie est dans le serveur mais que le code est dans un projet, je recommande de séparer le code en 2 projets différents avec différents fichiers package.json donc vous pouvez avoir des dépendances séparées.

+0

Vous avez raison! Lorsque j'exécute le fichier javascrip contenant le code API de l'environnement d'exécution du noeud dans la ligne de commande DOS, il fonctionne parfaitement. Merci pour la référence. Appréciez votre aide @jannis! –