Javascript stripe.js:调用stripe.charges.create-isn';我没有回复

Javascript stripe.js:调用stripe.charges.create-isn';我没有回复,javascript,express,stripe-payments,Javascript,Express,Stripe Payments,我正在尝试使用stripe.js,并在保存到服务器上后返回创建的费用。条带费用成功保存并保存在我的条带测试帐户中,但回调似乎不起作用。在我下面的代码中,调用了console.log('success'),但没有调用“then”回调,也没有调用console.log('savedChanges')。我做错什么了吗?我是以下参考 /app/scripts/controllers/stripe.js 'use strict'; app.controller('StripeCtrl', functio

我正在尝试使用stripe.js,并在保存到服务器上后返回创建的费用。条带费用成功保存并保存在我的条带测试帐户中,但回调似乎不起作用。在我下面的代码中,调用了console.log('success'),但没有调用“then”回调,也没有调用console.log('savedChanges')。我做错什么了吗?我是以下参考

/app/scripts/controllers/stripe.js

'use strict';

app.controller('StripeCtrl', function ($scope, $location, $http) {
  $scope.charge = {};
  $scope.successfulCharge = null;

  $scope.submitCharge = function(status, response){
    var $form = $('#payment-form');

    if (response.error) {
      $form.find('.payment-errors').text(response.error.message);
      $form.find('button').prop('disabled', false);
    } else {
      var token = response.id;
      var data = {
        amount: ($scope.charge.amount * 100),
        card: token,
        description: "2014 missions donation for " + $scope.charge.missionary,
        metadata: {
          'email': $scope.charge.email,
          'missionary': $scope.charge.missionary
        }
      };

      $http.post('/api/stripe/submitCharge', data).success(function(data, status, headers) {
        console.log('submitCharge success!!!');
        console.log(data);
        $scope.successfulCharge = data;
      });
    }
  }

  $scope.getCharges = function(){
    $http.get('/api/charges').success(function(charges) {
      return charges;
    });
  }
});
'use strict';

var mongoose = require('mongoose'),
    config = require('../config/config'),
    stripe = require('stripe')(config.stripe.secret_key),
    Charge = mongoose.model('Charge');

exports.charges = function(req, res) {
  return Charge.find(function (err, charges) {
    if (!err) {
      return res.json(charges);
    } else {
      return res.send(err);
    }
  });
};

exports.publishable_key = function(req, res){
  return res.send(config.stripe.publishable_key);
};

exports.submitCharge = function(req, res){
  var savedCharge;
  var result = stripe.charges.create({
    amount: req.body.amount,
    currency: "usd",
    card: req.body.card,
    description: req.body.description
  }, function(err, charge) {
    if (err) {
      console.log('errors');
      console.log(err);
    } else {
      console.log('success');
    }
  }).then(function(charge){
    savedCharge = Charge.create({
      name: charge.card.name,
      amount: charge.amount,
      email: charge.metadata.email,
      address: charge.card.address_line1 + charge.card.address_line1,
      city: charge.card.address_city,
      state: charge.card.address_city,
      zip: charge.card.address_zip,
      tax_receipt: charge.metadata.tax_receipt,
      missionary: charge.metadata.missionary,
    });
  });

  console.log('savedCharge');
  console.log(savedCharge);
  return res.send(savedCharge);
};
/lib/controllers/api.js

'use strict';

app.controller('StripeCtrl', function ($scope, $location, $http) {
  $scope.charge = {};
  $scope.successfulCharge = null;

  $scope.submitCharge = function(status, response){
    var $form = $('#payment-form');

    if (response.error) {
      $form.find('.payment-errors').text(response.error.message);
      $form.find('button').prop('disabled', false);
    } else {
      var token = response.id;
      var data = {
        amount: ($scope.charge.amount * 100),
        card: token,
        description: "2014 missions donation for " + $scope.charge.missionary,
        metadata: {
          'email': $scope.charge.email,
          'missionary': $scope.charge.missionary
        }
      };

      $http.post('/api/stripe/submitCharge', data).success(function(data, status, headers) {
        console.log('submitCharge success!!!');
        console.log(data);
        $scope.successfulCharge = data;
      });
    }
  }

  $scope.getCharges = function(){
    $http.get('/api/charges').success(function(charges) {
      return charges;
    });
  }
});
'use strict';

var mongoose = require('mongoose'),
    config = require('../config/config'),
    stripe = require('stripe')(config.stripe.secret_key),
    Charge = mongoose.model('Charge');

exports.charges = function(req, res) {
  return Charge.find(function (err, charges) {
    if (!err) {
      return res.json(charges);
    } else {
      return res.send(err);
    }
  });
};

exports.publishable_key = function(req, res){
  return res.send(config.stripe.publishable_key);
};

exports.submitCharge = function(req, res){
  var savedCharge;
  var result = stripe.charges.create({
    amount: req.body.amount,
    currency: "usd",
    card: req.body.card,
    description: req.body.description
  }, function(err, charge) {
    if (err) {
      console.log('errors');
      console.log(err);
    } else {
      console.log('success');
    }
  }).then(function(charge){
    savedCharge = Charge.create({
      name: charge.card.name,
      amount: charge.amount,
      email: charge.metadata.email,
      address: charge.card.address_line1 + charge.card.address_line1,
      city: charge.card.address_city,
      state: charge.card.address_city,
      zip: charge.card.address_zip,
      tax_receipt: charge.metadata.tax_receipt,
      missionary: charge.metadata.missionary,
    });
  });

  console.log('savedCharge');
  console.log(savedCharge);
  return res.send(savedCharge);
};
它似乎使您能够使用回调或承诺,但您在呼叫
费用时同时使用了这两种功能。创建

var result = stripe.charges.create({
 ...data...
}, function (err, charge) { // <-- callback
 ...
}).then(function(charge) { // <-- promise
 ...
})
var result=stripe.charges.create({
…数据。。。
},函数(err,charge){/它似乎使您能够使用回调或承诺,但您在调用
charges时同时使用了这两种方法。create

var result = stripe.charges.create({
 ...data...
}, function (err, charge) { // <-- callback
 ...
}).then(function(charge) { // <-- promise
 ...
})
var result=stripe.charges.create({
…数据。。。
},函数(错误,电荷){//