用于与acinq的strike lightning网络支付web服务交互的python库。

pystrike的Python项目详细描述


https://travis-ci.org/JASchilz/pystrike.svg?branch=masterMaintainabilityPyPIDocumentation Status

pystrike

Acinq’s Strike lightning network payment service的python包装器。

闪电网络允许在比特币链层上进行近收费、近即时的交易。acinq运行strike服务,它允许您创建lightning发票,将lightning付款存入strike帐户,然后在chain上接收合并付款。这个python库允许您向客户开具发票,并在几行代码中检查这些发票的付款状态。

此库不需要任何第三方依赖项。

示例

初始化Charge类:

from pystrike.charge import make_charge_class

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

新建charge

charge = Charge(
        currency=Charge.CURRENCY_BTC,
        amount=4200,                    # Amount in Satoshi
        description="services rendered",
    )

检索付款请求:

payment_request = charge.payment_request

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

此时,您将向 顾客。您可以调用charge.update()来轮询Strike服务器 获取当前充电状态,然后检索是否 费用已从charge.paid属性中支付。

例如,假设charge.payment_request尚未支付,然后我们运行以下代码:

charge.update()  # Reaches out the the Acinq server to retrieve the
                 # status of the charge

paid = charge.paid
# Because the payment request has not yet been paid, charge.paid is False

然后假设客户支付charge.payment_request,然后我们运行以下代码:

charge.update()
paid = charge.paid
# Because the client paid the request before we called `update`, charge.paid
# evaluates to True.

acinq的strike服务还提供了一个web钩子/回调服务,如果您运行的是web服务,这是一种比频繁轮询更好的更新费用的方法。

上面的例子使用strike的testnet web服务,位于api.dev.strike.acinq.co。当您准备好发布mainnet lightning发票时,您需要使用strike mainnet api密钥并请求宿主api.strike.acinq.co

使用

安装pystrike
$ pip install pystrike

创建API密钥

首先在Acinq’s Strike lightning network payment service上创建一个帐户。注意,还有一个testnet version of the service您可能希望用于您的初始开发。此服务的两个版本是不同的,它们具有不同的帐户、不同的api密钥和不同的api主机。

创建帐户并登录仪表板后,可以从仪表板设置中检索API密钥。您需要此密钥才能将连接配置为strike。

配置费用类别

首先从提供的make_charge_class函数创建一个charge类。

from pystrike.charge import make_charge_class

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

主持人可能是:

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

如果您将charge类指向mainnet版本,请确保使用mainnet strike仪表板中的api键。

创建充电

您可以使用以下代码创建新费用:

charge = Charge(
        currency=Charge.CURRENCY_BTC,
        amount=4200,                     # Amount in Satoshi
        description="services rendered",
    )

此初始化将自动联系Strike Web服务,并在其服务器上创建新的费用。一旦这个调用返回,您可以立即通过charge.idcharge.payment_request等访问该费用的详细信息。

此时,您可以将charge.payment_request提交给您的客户进行付款。

检索充电

与创建一个新的收费相比,如果您知道现有收费的罢工ID,您可以用以下代码检索它:
charge = Charge.from_charge_id('ch_LWafoobarbazjFFv8eurFJkerhgDA')

更新费用

您可以轮询Strike服务器以更新本地收费对象:

charge.update()

这个命令到达攻击服务器并更新冲锋的属性。例如,如果您正在等待收费的付款,则可以运行charge.update()从Strike服务器检索收费的状态,然后访问charge.paid以查看是否已在Strike服务器上记录了收费的付款。

如果您正在开发web应用程序,可以使用web钩子而不是轮询服务器。有关更多信息,请参阅Strike关于Web挂钩的文档。

测试

运行库测试需要两个环境变量:

  • ^{tt16}$: Your API key for the ^{tt8}$ web service.
  • ^{tt18}$: The Strike id of a charge in your ^{tt8}$. For example: ^{tt20}$

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
实现接口方法时不允许java@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程