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
--------

Get all the build dependencies with nix::

  $ nix-shell PrivateStorageio/shell.nix   # Might be needed depending on your system, see #88
  $ nix-shell PaymentServer/shell.nix

Build using Stack::

  $ stack build

Testing
-------

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

  $ stack run

Then create a testing charge::

   $ curl \
     http://<youraddress>:8081/v1/stripe/charge \
     -X POST \
     -H 'content-type: application/json' \
     --data '{ "token":"tok_visa", "voucher":"abcdefg", "amount":"650", "currency":"USD" }'

The PaymentServer marks the voucher as paid in its database.
Then redeem the vouncher for tokens::

   $ curl \
     http://<youraddress>:8081/v1/redeem \
     -X POST \
     -H 'content-type: application/json' \
     --data '{ "redeemVoucher": "abcdefg", "redeemTokens":[]}'