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.