NodeJS library to simplify paid subscriptions with Stripe and LevelDB.
JavaScript
Switch branches/tags
Nothing to show
Latest commit f2cc544 Nov 10, 2013 @azer 0.0.5
Permalink
Failed to load latest commit information.
lib
test priceOf.upgrade Nov 10, 2013
.gitignore
.npmignore
Devfile fix missing and leaking things Nov 2, 2013
README.md Update README.md Nov 2, 2013
index.js
package.json

README.md

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.