SPSP server that supports invoices
Make sure you have moneyd running. Then start the SPSP Invoice Server:
SPSP_LOCALTUNNEL=true SPSP_LOCALTUNNEL_SUBDOMAIN=mysubdomain npm startCreate an invoice with an amount due of 10 XRP. amount, assetCode, and assetScale are mandatory, you may add additional fields. See Create an Invoice for more information. Here, we add a reason for the invoice.
http POST mysubdomain.localtunnel.me amount=10000000 assetCode=XRP assetScale=6 reason=lunch Authorization:"Bearer test"
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 73
Content-Type: application/json; charset=utf-8
Date: Thu, 16 May 2019 16:37:52 GMT
Server: nginx/1.10.1
{
"invoice": "$mysubdomain.localtunnel.me/ef6e2a39-ba3c-a5cc-0849-9730ed56d525"
}Query the invoice:
ilp-spsp query -p '$mysubdomain.localtunnel.me/ef6e2a39-ba3c-a5cc-0849-9730ed56d525'
{
"destinationAccount": "private.moneyd.local.QGF2HflZ81d1uF1qXW9s-AjWtC23XY4tF-jZHhBdF_I.4eRM1t--cUUQqV5v8tsB0H9S~ef6e2a39-ba3c-a5cc-0849-9730ed56d525",
"sharedSecret": "4v82v2ho4b3DYxqhBKRWncQdIRePcB6/s8Gksc6EH/4=",
"push": {
"balance": "0",
"invoice": {
"amount": "10000000",
"asset": {
"code": "XRP",
"scale": "6"
},
"additionalFields": {
"reason": "lunch"
}
}
},
"contentType": "application/spsp4+json"
}Pay the invoice. Note that the amount depends on moneyd's uplink. Here, we assume XRP with a scale of 9:
ilp-spsp send -a 10000000000 -p '$mysubdomain.localtunnel.me/ef6e2a39-ba3c-a5cc-0849-9730ed56d525'
paying 10000000000 to "$mysubdomain.localtunnel.me/ef6e2a39-ba3c-a5cc-0849-9730ed56d525"...
sent 10000000000 units!Query again:
ilp-spsp query -p '$mysubdomain.localtunnel.me/ef6e2a39-ba3c-a5cc-0849-9730ed56d525'
{
"destinationAccount": "private.moneyd.local.QGF2HflZ81d1uF1qXW9s-AjWtC23XY4tF-jZHhBdF_I.4eRM1t--cUUQqV5v8tsB0H9S~ef6e2a39-ba3c-a5cc-0849-9730ed56d525",
"sharedSecret": "4v82v2ho4b3DYxqhBKRWncQdIRePcB6/s8Gksc6EH/4=",
"push": {
"balance": "10000000",
"invoice": {
"amount": "10000000",
"asset": {
"code": "XRP",
"scale": "6"
},
"additionalFields": {
"reason": "lunch"
}
}
},
"contentType": "application/spsp4+json"
}| Name | Default | Description |
|---|---|---|
SPSP_PORT |
6000 |
port to listen on locally. |
SPSP_LOCALTUNNEL |
If this variable is defined, SPSP_PORT will be proxied by localtunnel under SPSP_LOCALTUNNEL_SUBDOMAIN. |
|
SPSP_LOCALTUNNEL_SUBDOMAIN |
Subdomain to forward SPSP_PORT to. Must be defined if you set SPSP_LOCALTUNNEL |
|
SPSP_DB_PATH |
Path for leveldb database. Uses in-memory database if unspecified. | |
SPSP_AUTH_TOKEN |
test |
Bearer token for creating invoices and receiving webhooks. |
SPSP_HOST |
localhost or localtunnel | Host to include in payment pointers |
POST /Create an invoice.
amount- Invoice amount in units ofassetCodeandassetScale.assetCode- Asset code to identify the invoice's currency. Currencies that have ISO 4217 codes should use those.assetScale- Scale ofamountdenoted inassetCode(e.g. anamountof "1000" with anassetScaleof 2 translates to 10.00 units ofassetCode).webhook- (Optional) Webhook toPOSTto after the invoice is fully paid. See Webhooks"anything"- (Optional) Any additional fields can just be passed as named values, e.g.reason=lunch.
invoice- Payment pointer created for this invoice.
GET /:invoice_idSPSP endpoint for the invoice with :invoice_id. The payment pointer
returned by Create an Invoice resolves to this endpoint.
When you Create an Invoice and specify a webhook, it will
call the specified webhook when the invoice is paid. The request is a POST with
Authorization: Bearer <SPSP_AUTH_TOKEN>
{
"balance": 1000000,
"amount": 1000000,
"pointer": "$mysubdomain.localtunnel.me/ef6e2a39-ba3c-a5cc-0849-9730ed56d525",
}