跳转到主要内容

Django web框架的比特币应用集成

项目描述

简介

django-bitcoin是一个用于构建比特币Web应用的Django web框架应用程序。

功能

  • 简单的比特币钱包管理

  • 比特币支付处理

  • 比特币市场信息

安装

要安装,只需将应用添加到settings.py的INSTALLED_APPS中,如下所示

INSTALLED_APPS = [
    ...
    'django_bitcoin',
    ...
]
```

此外,您还需要运行本地bitcoind实例,并在设置中指定连接字符串

BITCOIND_CONNECTION_STRING = "http://bitcoinuser:password@localhost:8332"

使用

教程

这里有一个关于如何使用django-bitcoin创建自己的即时钱包的小教程.

使用“钱包”模型的钱包网站、担保服务

您可以使用Wallet类进行不同的比特币移动应用程序。一个典型的例子是一个市场风格网站,其中有多位卖家和买家。或者一个自由职业网站,其中需要担保。甚至可以使用这个抽象(但需要一些额外的类)来进行交易所。

请注意,当您在钱包对象之间移动比特币时,只需要需要的比特币交易是收入和支出交易。系统“钱包”对象之间的交易不会生成“真实”的比特币交易。每个交易(除收入交易外)都会记录到WalletTransaction对象中,以便于会计。

这也意味着支出比特币交易是“混合”的

from django_bitcoin import Wallet, currency

class Profile(models.Model):
    wallet = ForeignKey(Wallet)
    outgoing_bitcoin_address = CharField()

class Escrow(models.Model):
    wallet = ForeignKey(Wallet)
    buyer_happy = BooleanField(default=False)

buyer=Profile.objects.create()
seller=Profile.objects.create()

purchase=Escrow.objects.create()

AMOUNT_USD="9.99"

m=currency.Money(AMOUNT_USD, "USD")
btc_amount=currency.exchange(m, "BTC")

print "Send "+str(btc_amount)+" BTC to address "+buyer.wallet.receiving_address()

sleep(5000) # wait for transaction

if p1.wallet.total_balance()>=btc_amount:
    p1.send_to_wallet(purchase, btc_amount)

    sleep(1000) # wait for product/service delivery

    if purchase.buyer_happy:
        purchase.wallet.send_to_wallet(seller.wallet)
        seller.wallet.send_to_address(seller.outgoing_bitcoin_address, seller.wallet.total_balance())
    else:
        print "WHY U NO HAPPY"
        #return bitcoins to buyer, 50/50 split or something

模板标签

要在视图中显示交易历史和简单的钱包标签行,请使用以下模板标签

{% load currency_conversions %}
<!-- display balance tagline, estimate in USD and received/sent -->
{% wallet_tagline profile.bitcoin_wallet %}
<!-- display list of transactions as a table -->
{% wallet_history profile.bitcoin_wallet %}

轻松转换货币的方法: btc2usd, usd2btc, eur2btc, btc2eur

还包括bitcoincharts.com上的任何货币的currency2btc, btc2currency

{% load currency_conversions %}
Hi, for the pizza: send me {{bitcoin_amount}}BTC (about {{ bitcoin_amount|btc2usd }}USD).

使用google charts API显示比特币支付的二维码

{% load currency_conversions %}
Pay the following payment with your android bitcoin wallet:
{% bitcoin_payment_qr wallet.receiving_address bitcoin_amount %}.

The same but display also description and an estimate in EUR:
{% bitcoin_payment_qr wallet.receiving_address bitcoin_amount "One beer" "EUR" %}.

交易通知

要启用比特币交易通知,请在您的 settings.py 中设置以下标志

BITCOIN_TRANSACTION_SIGNALING = True

之后,您需要设置一个每分钟运行的 cron 任务,如下所示

* * * * * (cd $APP_PATH && python manage.py python manage.py CheckTransactions >> $APP_PATH/logs/email_sends.log 2>&1)

之后您可以定义您的balance_changed和balance_changed_confirmed信号

from django_bitcoin.models import balance_changed, balance_changed_confirmed
from django.dispatch import receiver


@receiver(balance_changed)
def balance_changed_handler(sender, **kwargs):
    pass
    # try:
    # print "balance changed", sender.id, kwargs["changed"], sender.total_balance()


@receiver(balance_changed_confirmed)
def balance_changed_confirmed_handler(sender, **kwargs):
    pass

社区

目前 django-bitcoin 在以下生产环境中使用

更多即将到来!

如果您有使用django-bitcoin的网站,请给我发邮件,我会在这里链接到它。

支持和源代码

Github.com的issue追踪器.

变更日志

0.2 (2013-05-14)

  • README.rst,变更日志和发布流程更新 [miohtama]

  • 处理历史价格数据 [Jeremias Kangas]

0.1

  • 初始发布

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

django-bitcoin-0.2.zip (63.6 kB 查看哈希值)

上传时间

由支持