Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
NodeJS library to simplify paid subscriptions with Stripe and LevelDB.
JavaScript
branch: master

0.0.5

latest commit f2cc544d63
@azer authored
Failed to load latest commit information.
lib priceOf.upgrade
test priceOf.upgrade
.gitignore fix missing and leaking things
.npmignore fix missing and leaking things
Devfile fix missing and leaking things
README.md Update README.md
index.js fix missing and leaking things
package.json 0.0.5

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.
Something went wrong with that request. Please try again.