Skip to main content

Python library for interacting with Acinq's Strike lightning network payment web service.

Project description

https://travis-ci.org/JASchilz/pystrike.svg?branch=master Maintainability PyPI Documentation Status

pystrike

Python wrapper for Acinq’s Strike lightning network payment service.

Example

Initialize the Charge class:

from pystrike.charge import make_charge_class

Charge = make_charge_class(
    api_key="YOURSTRIKEAPIKEY",
    api_host="api.strike.acinq.co",
    api_base="/api/v1/",
)

Create a new charge:

charge = Charge(
        currency=Charge.CURRENCY_BTC,
        amount=42000,                   # Amount in Satoshi
        description="1%20Blockaccino",
    )

Retrieve a payment request:

payment_request = charge.payment_request

# Now `payment_request` might be something like "lnbcb420u1pdsdxfep..."

At this point, you would present the payment_request to your customer. You can call charge.update() to poll the Strike server for the current status of the charge, and then retrieve whether or not the charge has been paid from the charge.paid attribute.

Use

Creating an API Key

Begin by creating an account on Acinq’s Strike lightning network payment service. Note that there is also a testnet version of the service that you may wish to use for your initial development. The two versions of this service are distinct, with separate accounts, separate API keys, and separate API hosts.

Once you have created an account and logged into the dashboard, you can retrieve an API key from your dashboard settings. You will need this key to configure your connection to Strike.

Configuring a Charge Class

You’ll begin by creating a Charge class from the provided make_charge_class function.

from pystrike.charge import make_charge_class

Charge = make_charge_class(
    api_key="YOURSTRIKEAPIKEY",
    api_host="api.strike.acinq.co",
    api_base="/api/v1/",
)

The host will probably be one of:

  • api.strike.acinq.co: the mainnet version of Strike

  • api.dev.strike.acinq.co: the testnet version of Strike

Creating a Charge

You can create a new charge with the following code:

charge = Charge(
        currency=Charge.CURRENCY_BTC,
        amount=42000,                   # Amount in Satoshi
        description="1%20Blockaccino",
    )

This initialization will automatically reach out to the Strike web service and create a new charge on their servers. Once this call has returned, you can immediately access the details of that charge through charge.id, charge.payment_request, and so on.

At this point, you might present the charge.payment_request to your customer for payment.

Retrieving a Charge

Rather than creating a new charge, if you know the Strike id of an existing charge you can retrieve it with the following code:

charge = Charge.from_charge_id('ch_LWawgrPmsuuRjFFv8eurFJkerhgDA')

Updating a Charge

You can poll the Strike server to update your local charge object:

charge.update()

For example, if you are waiting on payment for a charge, you might run charge.update() and then access charge.paid to see if a payment has been recorded for the charge on the Strike server.

If you’re developing a web application, you could use web hooks instead of polling the server. See Strike’s documentation on web hooks for more information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pystrike-0.5.1.tar.gz (6.4 kB view hashes)

Uploaded Source

Built Distribution

pystrike-0.5.1-py3-none-any.whl (7.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page