NodeJS library to simplify paid subscriptions with Stripe and LevelDB.
$ npm install subscription
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: '[email protected]',
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('[email protected]', 'atlas magazine', function (error, has) {
has
// => true
})
Get remaining subscription of a customer:
subscription.remaining('[email protected]', 'atlas magazine', function (error, remaining) {
remaining
// => 8035200000 (3 months)
})
List subscriptions of a user:
subscription.subscriptionsOf('[email protected]', function (error, subs) {
subs
// => ['atlas magazine']
})
Extend a subscription:
subscription.purchase.extension('atlas magazine', { customer: '[email protected]', length: '2 years', token: token }, function (error, purchase) {
purchase.amount
// => 24000
});
Upgrade a subscription:
subscription.purchase.upgrade({ customer: '[email protected]', from: 'cheaper', to: 'more expensive service', token: token }, function (error, purchase) {
if (error) return callback(error);
});
Verbose:
$ DEBUG=subscription:* npm test
Less Verbose:
$ DEBUG=subscription:fatal,subscription:purchase
$ API_KEY=sk_test_FIvJu2hkZszNIFzGgVNAqo2x npm test
test.js
- english-time: The library used for parsing time inputs.