ElementsProject / Ifpaytt
Programming Languages
Projects that are alternatives of or similar to Ifpaytt
If Pay Then That
Use Bitcoin Lightning payments as the trigger for IFTTT (If This Then That) actions.
Powered by ⚡️ Lightning Charge and paypercall.
Install
$ npm install -g ifpaytt
Setup
Setup Lightning Charge, then:
-
Get your IFTTT maker key from IFTTT's Webhook settings page (shown as
https://maker.ifttt.com/use/[MAKER-KEY-HERE]
). -
Open the new applet page, click "this", enter "Webhooks", click "Receive a web request", enter a descriptive event name prefixed by
ifpaytt_
containing only numbers, lowercase letters and_
(e.g.ifpaytt_lightup_room404
orifpaytt_vend_machine137_item56
), and click "Create Trigger". -
Configure your "then" action and finish creating the IFTTT applet.
-
Start the
ifpaytt
server:$ ifpaytt --charge-token [mySecretToken] --ifttt-key [myMakerKey] --currency BTC \ --price-lightup_room404 0.00001 --price-vend_machine137_item56 0.000063 Running on http://localhost:6000
That's it! The server is now ready to accept payments and trigger IFTTT actions.
Paying to trigger actions
Users can access the IFTTT action through a three-part process:
-
Send an empty
POST
request to/{event-name}
to get the BOLT11 payment request and theX-Token
header:$ curl -i -X POST http://localhost:6000/lightup_room404 HTTP/1.1 402 Payment Required X-Token: lmbdmJeoSQ0ZCB5egtnph.af1eupleFBVuhN2vrbRuDLTlsnnUPYRzDWdL5HtWykY Content-Type: application/vnd.lightning.bolt11 lnbcrt8925560p1pdfh7n2pp54g5avyupe70l988h30u0hy8agpj2z7qsveu7ejhys97j98rgez0...
-
Make the payment:
$ lightning-cli pay lnbcrt8925560p1pdfh7n2pp54g5avyupe70l988h30u0hy8agpj2z7qsveu7ejhys97j98rgez0...
-
Send the request again, this time with the
X-Token
header echoed back and optionally withvalue1
,value2
andvalue3
in the request body (passed along to IFTTT):$ curl -i -X POST http://localhost:6000/lightup_room404 \ -H 'X-Token: lmbdmJeoSQ0ZCB5egtnph.af1eupleFBVuhN2vrbRuDLTlsnnUPYRzDWdL5HtWykY' \ -d value1='brightness=80,color=red' HTTP/1.1 200 OK Content-Type: text/plain Congratulations! You've fired the ifpaytt_lightup_room404 event
(if
value[1-3]
are not set, they'll automatically be populated with some useful information about the payment.)
CLI options
$ ifpaytt --help
Trigger IFTTT actions with Bitcoin Lightning payments
Usage
$ ifpaytt [options]
Options
-c, --charge-url <url> lightning charge server url [default: http://localhost:9112]
-t, --charge-token <token> lightning charge access token [required]
-k, --ifttt-key <key> IFTTT maker key (available in https://ifttt.com/services/maker_webhooks/settings) [required]
-r, --ifttt-prefix <prefix> prefix for IFTTT event names [default: ifpaytt_]
-x, --currency <name> the currency prices are quoted in [default: BTC]
--price-{event} <price> price to send events of type {event}
-d, --db-path <path> path to store payperclick sqlite database [default: ifpaytt.db]
--invoice-expiry <sec> how long should invoices be payable for [default: 1 hour]
--access-expiry <sec> how long should paid active tokens remain valid for [default: 1 hour]
--token-secret <secret> secret used for HMAC tokens [default: generated based on {charge-token}]
-p, --port <port> http server port [default: 6000]
-i, --host <host> http server listen address [default: 127.0.0.1]
-e, --node-env <env> nodejs environment mode [default: production]
-h, --help output usage information
-v, --version output version number
Example
$ ifpaytt -t chargeAccessToken -k iftttMakerKey -x BTC \
--price-lightup_room404 0.00001 --price-vend_machine137_item56 0.00023
License
MIT