Метеоритный метод не возвращает ID клиенту

Я в процессе интеграции чередующихся платежей на моем веб-сайте, но я столкнулся с проблемой. Я хочу перевести пользователя на динамический маршрут после отправки формы платежей (iframe, предоставленный stripe), но метод Meteor, который я вызываю на клиенте, возвращает undefined вместо идентификатора недавно вставленного документа, на который я хочу перейти

Любой совет?

ОШИБКА

Error: Missing required parameters on path "/purchases/:purchaseId". The missing params are: ["purchaseId"]. The params object passed in was: undefined.

клиент:

Template.viewTab.events({
  'click #download': function(event) {
    handler.open({
      name: 'Tabr',
      description: this.title,
      amount: this.price
    });
    event.preventDefault();
  },
});

var handler = StripeCheckout.configure({
  key: '..............',
  token: function(token) {
    // Use the token to create the charge with a server-side script.
    // You can access the token ID with `token.id`

    tabId = Tabs.findOne()._id;
    Meteor.call('makePurchase', tabId, token, function(error, purchaseId) {
      if (error) {
        console.log('makePurchaseError: ' + error);
        FlashMessages.clear();
        return FlashMessages.sendError(error.message, {
          autoHide: true,
          hideDelay: 10000
        });
      }
      console.log(purchaseId);
      Router.go('viewPurchase', purchaseId);
    });
  }
});

Сервер:

Meteor.methods({

  /**
   * [makePurchase attempts to charge the customer's credit card, and if succesful
   * it inserts a new purchaes document in the database]
   *
   * @return {[String]} [purchaseId]
   */
  makePurchase: function(tabId, token) {
    check(tabId, String);
    tab = Tabs.findOne(tabId);

    Stripe.charges.create({
      amount: tab.price,
      currency: "USD",
      card: token.id
    }, Meteor.bindEnvironment(function (error, result) {
      if (error) {
        console.log('makePurchaseError: ' + error);
        return error;
      }

      purchaseId = Purchases.insert({
        sellerId: tab.userId,
        tabId: tab._id,
        price: tab.price
      }, function(error, result) {
        if (error) {
          console.log('InsertionError: ' + error);
          return error;
        }
        return result;
      });
    }));

    console.log(purchaseId);
    return purchaseId;
  }

});

0 ответов

Другие вопросы по тегам