Skip to content
Snippets Groups Projects
Jean-Paul Calderone's avatar
Jean-Paul Calderone authored
Connections could probably be in a per-thread cache or something but
redemption costs are going to dwarf database opening costs.

Also, filesystem caches and no benchmarks and all that.
5e98b666
History

PaymentServer

PaymentServer maintains the state of a voucher database with respect to payments. It receives payment notifications from payment processors and notes this in the database.

Currently, Stripe is supported.

Building

Build using Stack:

$ stack build

Testing

You can perform manual integration testing against Stripe. First, run the server:

$ stack run

Then configure Stripe with a webhook pointing at the server and receiving the charge.successful event. Configure Stripe with http://<youraddress>:8081/v1/stripe/webhook.

Then create a testing charge using Stripe:

$ STRIPE_SECRET_KEY=sk_test_...
$ curl \
  https://api.stripe.com/v1/charges   \
  -u ${STRIPE_SECRET_KEY}:   \
  -d amount=999   \
  -d currency=usd   \
  -d source=tok_visa   \
  -d 'metadata[Voucher]=abcdefghijk'

This results in Stripe making a callback to the PaymentServer with the charge details. The PaymentServer marks the voucher as paid in its database.