node package manager
Don’t reinvent the wheel. Reuse code within your team. Create a free org »

fired-up-stripe

Fired Up Donate - Stripe Backend

This library allows you to process donations with stripe. While baseline functionality is included, you'll probably need to clone and customize some pieces. Features:

  • Creates customers upon donation
  • Create one time donations
  • Create recurring donations
  • Writes Donor, Donation, and Subscription data in OSDI format
  • Writes data to Firebase Database

Why Fired Up Donate/Stripe instead of another Stripe processor?

  • Uses firebase cloud functions, which is free for X invocations
  • ... So it runs on Google's cloud, which has remarkable uptime.
  • Uses the Open Supporter Data Interface so data is portable
  • TODO: Process changes made in the Stripe UI. Including refunds, cancelling subscriptions, and reverting plan changes to prevent unexpected changes to uses subscriptions
  • TODO: Works with Fired Up Donate Form out of the box
  • Verbose in communicating donor/donation transaction data to Stripe, so Stripe data can be exported or a Stripe analytics provider can provide value

Library Usage

  1. yarn add fired-up-stripe

Functions Usage

  1. git clone
  2. yarn && cd functions && yarn && cd ..
  3. firebase init (Take care to not overwrite anything)
  4. firebase functions:config:set stripe.private="%STRIPE_PRIVATE" stripe.connect="%STRIPE_CLIENT%" (Connect is optional, only use if you're connecting accounts)
  5. Send the following JSON to your new donation processing route https://us-central1-%yourappname%.cloudfunctions.net/FUPDonateOnce
{
    "amount":"25",
    "email":"test@test.com",
    "given_name":"Test",
    "family_name":"User",
    "mailing_street1":"Street Address 1",
    "mailing_locality":"Anytown",
    "mailing_postal_code":"00000",
    "mailing_region":"CA",
    "mailing_country":"US",
    "employer":"Test",
    "occupation":"Test",
    "use_mailing":true,
    "token":"tok_xxxxxxxxxxxxx",
    "url":"http://localhost/your-donate-page",
    "source":"refering_person_name",
    "website":"localhost:3000",
    "referrer":"http://localhost:3000/your-donate-page",
    "recipient":"Your Org Name Here"
}

Development

Webhooks

The freely-available Ultrahook service makes building with webhooks a breeze. To develop in this repo, do the following:

  1. gem install ultrahook
  2. ultrahook stripe 4000 (You may need to login/create an account here)
  3. Add https://stripe.%your-ultrahook-slug%.ultrahook.com/stripe/webhook
  4. Send test webhooks via the UI OR use stripe's testing info to simulate various recurring donation failures