Meteor выпускает возврат Stripe (mrgalaxy:stripe)

Как вернуть деньги с помощью mrgalaxy:stripe?

Stripe.refunds.create(refund, function(err, receipt) {
  ...
});

привело к Exception while simulating the effect of invoking 'rejectUserFromProject' TypeError: Cannot read property 'create' of undefined(…) TypeError: Cannot read property 'create' of undefined

Я использую StripeCheckout для оплаты и не смог найти, есть ли для него способ возврата:

StripeCheckout.open({
    key: _key,
    amount: fee * 100,
    currency: 'usd',
    name: 'name',
    description: 'description',
    panelLabel: 'label',
    token: function(receipt) {
      console.info(receipt);
  });

person aug2uag    schedule 03.05.2016    source источник


Ответы (1)


Checkout — это модуль UX/UI для транзакций cc, и его обработка зависит от библиотеки или вызова на стороне сервера, где аутентификация включает секрет сервера (т. е. Checkout использует открытый ключ).

mrgalaxy:meteor включает в себя API-интерфейс Node.js Stripe, однако я не тратил свое время должным образом. Лучшее решение — использовать API оттуда.

На данный момент хак состоял в том, чтобы импортировать пакет Stripe npm и использовать пакет meteorhacks:npm.

Создал файл package.json с отделом Stripe, и в итоге код выглядел так:

if (Meteor.isServer) {
  var stripe = Meteor.npmRequire("stripe")(
    Meteor.settings.private.testSecretKey
  );

  stripe.refunds.create(returnObj, function(err, refund) {
    // asynchronously called
    if (err) {
      // handle
    };
  });
};

Кроме того, поскольку код выполняется в обратном вызове, могут возникнуть проблемы с использованием методов Meteor или других, основанных на обещаниях, возможно, назначаемых в родительской области, хотя я этого не пробовал, поэтому необходимо инкапсулировать с помощью Fiber как есть:

stripe.refunds.create({
  // ...
}, Meteor.bindEnvironment(function (err, refund) {
  // ...
}));

Наконец, Meteor 1.3 поддерживает интеграцию с npm, так что вам не придется использовать что-то незнакомое:

if (Meteor.isServer) {
  var stripe = require("stripe")(
    Meteor.settings.private.testSecretKey
  );

  stripe.refunds.create(returnObj, function(err, refund) {
    // asynchronously called
    if (err) {
      // handle
    };
  });
};
person aug2uag    schedule 04.05.2016