https://github.com/ruffrey/stripe-webhook-server
Backend webhook server for Stripe payment gateway, written in Node.js
https://github.com/ruffrey/stripe-webhook-server
Last synced: about 1 year ago
JSON representation
Backend webhook server for Stripe payment gateway, written in Node.js
- Host: GitHub
- URL: https://github.com/ruffrey/stripe-webhook-server
- Owner: ruffrey
- Created: 2013-09-15T15:00:15.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2014-09-27T16:38:35.000Z (over 11 years ago)
- Last Synced: 2025-04-04T16:41:48.224Z (about 1 year ago)
- Language: JavaScript
- Size: 1.53 MB
- Stars: 15
- Watchers: 2
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# stripe-webhook-server
This is a standalone scaffold or middleware for responding to [Stripe webhooks](https://stripe.com/docs/webhooks).
By default it sends emails upon receiving a webhook. You can reprogram it to do whatever. It's mean to be an example of how to implement Stripe webhooks in Node, but you can deploy it as-is for a webhook MVP.
There is no user interface. [Postman REST Client](https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en) is a great tool for local webhook development.
## Prerequisites
- You have a [Stripe](https://stripe.com) account.
- You're running [Node.js](http://nodejs.org) >= 8.x.x
- You are storing the customer's email address in the Stripe `email` field. Otherwise the emails won't work!
## Usage - Standalone service
$ git clone https://github.com/ruffrey/stripe-webhook-server
$ cd stripe-webhook-server
$ npm install
(or, fork it, then clone your own)
Edit `config.example.js` to suit your needs and rename it to `config.js`.
$ npm start
to run the server.
## Usage - Connect or Express middleware
$ npm install stripe-webhook-server
Then bind the middleware to a route. You must pass some configuration options.
```javascript
var app = require('express')();
var webhooks = require('stripe-webhook-server');
var config = {
// application settings
port: process.env.PORT || 3000,
appProtocol: "http://",
appdomain: "localhost",
helpUrl: "http://change.this.com/support",
webhookEndpointPath: '/',
// stripe
stripe: {
public_key: '',
secret_key: ''
},
// email templates
emailTemplateDir: 'templates/', // relative to root of the application
emailTemplateExt: '.html',
// email template fields
fromAddress: '',
fromAddressName: '',
supportAddress: '',
sincerely: '',
// settings for Nodemailer email module
nodemailer: {
service: "",
generateTextFromHTML: true,
auth: {
user: "",
pass: ""
},
//validateRecipients: true,
//debug: true,
maxConnections: 1
}
};
// setup the route
app.post('/my-webhook-endpoint', webhooks.webhookServer(config));
```
## Customization
Email templates use Handlebars and are at `templates/`.
`lib/webhooks.js` is a list of the webhooks you support.
If you don't want to respond to a webhook, leave the function empty, or just delete the entry completely.
If you have custom application logic, you would edit `lib/webhooks.js`. This project is really more of a scaffold than a module, in that respect.
## Modules
- [Express 3](http://expressjs.com)
- [Nodemailer](https://github.com/andris9/Nodemailer) for sending email.
- The `config.nodemailer` options are passed directly to the Nodemailer module.
- [Handlebars](http://handlebarsjs.com) for email templates
## Shameless plug
Check out [Paastor](https://paastor.com) for painless Node.js deployments - to your own server. For example, you can have stripe-webhook-server deployed in a few minutes using Paastor.
## Bugs
Please branch, fix, and submit pull request.
## Legal
(c) 2014 Jeff Parrish
Not affiliated with Stripe.
MIT License