subscription

Library to store and manage paid subscriptions via Stripe and LevelDB

npm install subscription
17 downloads in the last month

subscription

NodeJS library to simplify paid subscriptions with Stripe and LevelDB.

Install

$ npm install subscription

Usage

Define a new subscription:

subscription = require('subscription')('stripe-api-key', 'leveldb-path')

subscription.service.define('atlas magazine', { 'price': 1000, period: '1 month', currency: 'usd' }, function (error, atlas) {

  subscription.priceOf(atlas, '1 month')
  // => 1000 (Ten dollars)

    subscription.priceOf(atlas, '1 year')
  // => 12000 (One Twenty Dollars)

})

Purchase a subscription:

options = {
  customer: 'customer@website.com',
  length: '1 year',
  token: 'tok_2oWvm6yRBFSMSh' // obtain it with Stripe.js
}

subscription.purchase('atlas magazine', options, function (error, purchase) {
  purchase.amount
  // => 12000

  purchase.expires_ts
  // => 1390912838816
})

Validate a subscription:

subscription.has('azer@kodfabrik.com', 'atlas magazine', function (error, has) {
  has
  // => true
})

Get remaining subscription of a customer:

subscription.remaining('azer@kodfabrik.com', 'atlas magazine', function (error, remaining) {
  remaining
  // => 8035200000 (3 months)
})

List subscriptions of a user:

subscription.subscriptionsOf('azer@kodfabrik.com', function (error, subs) {
  subs
  // => ['atlas magazine']
})

Extend a subscription:

subscription.purchase.extension('atlas magazine', { customer: 'azer@kodfabrik.com', length: '2 years', token: token }, function (error, purchase) {
  purchase.amount
  // => 24000
});

Upgrade a subscription:

subscription.purchase.upgrade({ customer: 'hi@ada.io', from: 'cheaper', to: 'more expensive service', token: token }, function (error, purchase) {
  if (error) return callback(error);
});

Debugging

Verbose:

$ DEBUG=subscription:* npm test

Less Verbose:

$ DEBUG=subscription:fatal,subscription:purchase

Running Tests

$ API_KEY=sk_test_FIvJu2hkZszNIFzGgVNAqo2x npm test

More Docs

  • test.js
  • english-time: The library used for parsing time inputs.
npm loves you