【问题标题】:Parse-Server Cloud-Code and StripeParse-Server Cloud-Code 和 Stripe
【发布时间】:2016-11-12 23:35:35
【问题描述】:

我正在 Heroku 上为移动网络应用程序运行 Parse-Server 实例。我的问题是 Stripe 结帐插件在我的 html 页面中工作正常,但是当创建令牌并调用我的云代码时,似乎创建变量初始化条带什么都不做。这是我的云代码。

var stripe = require('stripe')('sk_test_******');
Parse.Cloud.define("pay", function(req, res){
    Parse.Cloud.useMasterKey();
    var token = req.params.token;
    var amount = req.params.amount;
    var email = req.params.email;
    // stripe is null
    res.success(stripe);
});

调用它时,stripe 的值为 null,我不知道为什么。我在 package.json 文件中添加了 stripe: '~4.7.0' 并运行 npm install 在本地创建所有节点模块。我不知道这是否有区别,但在我的 index.js 文件中我创建了一个路由器

app.use('/', express.static(path.join(__dirname, '/public')));

因为这样更容易访问公共目录中的文件。否则,每次我想包含该文件时,我都必须使用 /public/filename 引用我的公共目录中的文件。任何帮助将不胜感激。

【问题讨论】:

  • var stripe移动到“支付”函数中。我目前正在以这种方式使用它并且它有效。
  • 我只是尝试过,但无济于事。出于某种原因,我无法在 Cloud Code 中初始化条带。我可以在 index.js 中做到这一点。我可以初始化 package.json 中最初包含的任何其他包,但不能初始化我添加的包。

标签: node.js heroku stripe-payments parse-cloud-code parse-server


【解决方案1】:

我今天遇到了这个问题

我通过反复试验做到了,这是我记得的

https://www.npmjs.com/package/stripe

  1. 在您的解析服务器的根目录中,我通过命令提示符执行了以下命令 - npm install stripe
  2. 然后我将条带依赖性添加到 package.json(此堆栈溢出帖子是缺少的键)“stripe”:“~4.9.0”,
  3. 云代码如下

Parse.Cloud.define("charge", function(request, response) {

var stripe = require('stripe')('sk_test_****');

stripe.customers.create({
  email: theEmailAddress
}).then(function(customer) {
  return stripe.charges.create({
    amount: yourAmount, 
    currency: yourCurrency,
    card: yourToken,
    description: yourDescription
  });
}).then(function(charge) {
  // New charge created on a new customer 
}).catch(function(err) {
  // Deal with an error 
});

});

  1. 通过您的应用程序使用该云代码并查看它是否在您的条带仪表板中工作(您必须在仪表板中检查)

所以当我在 package.json 中添加条带作为依赖项时,两个“突破”出现了,您还可以看到 var stripe = require 在云代码函数中

请参阅最初发布答案的以下帖子

Require modul not working when I migrate from parse to heroku

【讨论】:

    【解决方案2】:

    我放弃了尝试在 Cloud Code 中运行此费用。相反,我在 index.js 文件中创建了一个路由“/charge”,并使用 jQuery 帖子调用它。这是我在 index.js 中的代码

    var stripe = require('stripe')('sk_test_****');
    var bodyParser = require('body-parser');
    app.use(bodyParser.urlencoded({
        extended: false
    }));
    app.post('/charge', function(req, res){
        var token = req.body.token;
        var amount = req.body.amount;
        stripe.charges.create({
            amount: amount,
            currency: 'usd',
            source: token,
        }, function(err, charge){
            if(err)
                // Error check
            else
                res.send('Payment successful!');
        }
    });
    

    这是我的 jQuery 请求

    var handler = StripeCheckout.configure({
        key: 'pk_test_****',
        locale: 'auto',
        token: function(token){
            $.post('/charge', {
                token: token.id,
                amount: total,
            }, function(data, status){
                alert(data);
            });
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2015-12-08
      • 2017-02-01
      • 2016-01-23
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多