npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

trailpack-stripe

v2.0.0

Published

Stripe API Trailpack for Trails

Downloads

36

Readme

trailpack-stripe

NPM version NPM downloads Build status Dependency Status Code Climate

Stripe API Trailpack for Trails

Handles and validates Stripe Webhooks.
It checks the time the webhooks were received and keeps the DB in sync by adding a lastStripeEvent attribute to each event.

Optionally, it can perform Round Trip validation of every Stripe webhook that hits the endpoint.

Stores Stripe event models with lifecyle handler for after a Stripe event occurs.

Makes call via Stripe API using a Stripe Service.

Supported ORMs

| Repo | Build Status (edge) | |---------------|---------------------------------------| | trailpack-waterline | Build status | | trailpack-sequelize | Build status | | trailpack-js-data | Build status |

Don't see your ORM here? Make a PR!

Why Store Models from Stripe?

Stripe has a great API, but performing complex queries through it are not really possible. By storing events and models from Stripe, you get the ability to do complex queries and analytics. This also allows you to interact qucikly with an entry that you've just created instead of waiting for Stripe Webhooks.

Install

With yo:

$ yo trails:trailpack trailpack-stripe

With npm:

$ npm install --save trailpack-stripe

Configure

// config/main.js
module.exports = {
  packs: [
    // ... other trailpacks
    require('trailpack-stripe')
  ]
}

// config/stripe
module.exports = {
  // Public Key
  public: process.env.STRIPE_PUBLIC || '<test_public_key>',
  // Secret Key
  secret: process.env.STRIPE_SECRET || '<test_secret_key>',
  // Validate Events with Stripe
  validate: process.env.STRIPE_VALIDATE || false
}

Then on Stripe

 In Account settings Webhooks
 Point webhook to <yourdomain>/stripe/webhook
 Enable whatever webhooks you desire

Usage Examples

Get a Full list of API calls here

var const StripeService = this.app.services.StripeService

// Create a Customer
StripeService.customers.create({
  description: 'Customer for [email protected]',
  source: "tok_189fGA2eZvKYlo2C3pWnuPIc" // obtained with Stripe.js
}, (err, customer) => {
  // asynchronously called
  // Stripe will issue a webhook after this is called and add it to the database.
  // However, you may wish to interact with the customer before the webhook is delivered
  // In which case we can ignore the webhook by adding `lastStripeEvent` manually
  customer.lastStripeEvent = new Date(customer.created * 1000)
  this.app.services.FootprintService.create('Customer',customer)
  
})

// Retreive a Customer
StripeService.customers.retrieve(
  "cus_8jZwX4LTADczc2",
  (err, customer) => {
    // asynchronously called
  }
)