Subscription
NodeJS library to simplify paid subscriptions with Stripe and LevelDB.
Install / Use
/learn @azer/SubscriptionREADME
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.
Related Skills
node-connect
341.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.4kCommit, push, and open a PR
