2.8.5 • Published 4 years ago

express-billing-block v2.8.5

Weekly downloads
7
License
MIT
Repository
-
Last release
4 years ago

express-billing-block

npm version

An Express (4.0+) middleware for rendering billing pages to your users, directly connected to Stripe.

Designed for MongoDB.

Requires Bootstrap 4 (CSS + JS), jQuery, and Open Iconic on your client side.

The goal is to be a drop-in module for handling and managing Stripe subscriptions.

Show your users a status of their subscriptions, a list of invoices, and allow them to manage their subscriptions and cards on their own.

Features

  • Upgrade popups
  • List of recent invoices to download
  • Support SCA (3D secure)
  • Display alert in case of payment failure
  • List active subscription plans
  • Add/remove/select credit cards
  • Support trials (with credit card)
  • Button to self cancel subscriptions
  • Support coupons in the URL
  • Autogenerated pricing

Who uses it?

👋 Want to be listed there? Contact me.

Notes

  • req.user must contain a valid user object

  • In your Mongoose model, your users should have a plan attribute (if you offer plans) and a stripe object:

let UserSchema = {
	...
	plan: String,
	stripe: {
		subscriptionId: String,
		subscriptionStatus: String,
		customerId: String,
		subscriptionItems: []
	}
	...
}

Usage

Install the library

npm install express-billing-block

Server code:

app.use('/billing', require('express-billing-block')({
	mongoUser: db.User, // A direct access to your Mongoose database User
	secretKey: "sk_live_xxxxxxxxxxxxxxxxxxxxxxx",
	publicKey: "pk_live_xxxxxxxxxxxxxxxxxxxxxxx",
	upgradable: true, // If you offer a product based on plans, will offer a popup to upgrade plans
	accountPath: '/account', // So the redirects don't fail
	allowNoUpgrade: true, // Allow to stay on the free plan
	sendMail: (subject, text, email) => {
		// Send a mail with the library of your choice
		// For upgrades and cancellations emails
	},
	onSubscriptionChange: (user) => {
		// Called when the subscription of an user changed
		// When he upgrades, cancels, or finishes trial

		console.log('Subscription status: ' + user.stripe.subscriptionStatus)
		console.log('The user is on this plan: ' + user.plan)
	},
	plans: [{
		name: 'Hobby',
		id: 'hobby',
		order: 1,
		stripeId: 'plan_xxxxxxxxxxxxx', // Id of your plan on Stripe
		price: 12,
		features: [{
			title: '200 daily active users' 
		}, { 
			title: '1 year data retention'
		}, {
			title: '3 apps'
		}, { 
			title: 'Priority support'
		}]
	}, {
		name: 'Pro',
		id: 'pro',
		order: 2,
		stripeId: 'plan_xxxxxxxxxxxxx',
		price: 29,
		features: [{
			title: '10000 daily active users'
		}, { 
			title: 'Unlimited data retention'
		}, { 
			title: '10 apps'
		}, { 
			title: 'High priority support'
		}]
	}]
}))

Simple client code example (jQuery & bootstrap.js are required):

<h1>Your subscription</h1>
<div id='billingSection'></div>

<script src='/billing/billing.js'></script>
<script>
	billing.load('#billingSection')
</script>
2.8.3

4 years ago

2.8.2

4 years ago

2.8.5

4 years ago

2.8.4

4 years ago

2.8.1

4 years ago

2.8.0

4 years ago

2.7.4

4 years ago

2.7.2

4 years ago

2.7.0

4 years ago

2.7.1

4 years ago

2.6.5

4 years ago

2.6.4

4 years ago

2.6.3

4 years ago

2.6.1

4 years ago

2.6.2

4 years ago

2.6.0

4 years ago

2.5.4

4 years ago

2.5.3

4 years ago

2.5.2

4 years ago

2.5.1

4 years ago

2.5.0

4 years ago

2.4.3

4 years ago

2.4.2

4 years ago

2.4.1

4 years ago

2.4.0

4 years ago

2.3.0

4 years ago

2.2.9

5 years ago

2.2.8

5 years ago

2.2.7

5 years ago

2.2.5

5 years ago

2.2.4

5 years ago

2.2.3

5 years ago

2.2.2

5 years ago

2.2.1

5 years ago

2.2.0

5 years ago

2.1.0

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago