wangta69/btc-payment

基于bitcoind的btc支付系统

1.0.0 2019-04-24 07:17 UTC

This package is auto-updated.

Last update: 2024-09-04 21:23:48 UTC


README

先决条件

Laravel版本 >= 5.5

通过composer安装包

composer require wangta69/btc-payment
$btc = app("Pondol\BtcPayment\Bitcoind");
protected $btc;
/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct(Bitcoind $btc)
{
    $this->btc = $btc;
    $this->btc->getaccountaddress("");
}

或者

public function getaccountaddress() {
    $btc = app("Pondol\BtcPayment\Bitcoind");
    return $btc->getaccountaddress("37");
}

检查支付和确认

包包含类Pondol\BtcPayment\Commands\CheckPayment。这是一个Laravel命令,您可以通过php artisan调用它。

php artisan bitcoin:checkpayment

每次调用它时,它都会在区块链上扫描支付和确认。您可以根据上面的说明手动调用它进行测试,但这没有太多意义,因为它的工作是检查支付,并且它需要始终运行。

您需要在Linux服务器上创建crontab条目或在Win服务器上创建任务计划程序,以每分钟调用此命令。

// Example for linux
crontab -e

// add this line to cron tab and replace path
* * * * * cd /path/to/your/project/ php artisan bitcoin:checkpayment >/dev/null 2>&1

此脚本还会触发我们可以监听的事件...

监听支付

当您发布包时,您会在app\Listeners文件夹中找到新的类(请参阅安装部分)。这是

ConfirmedPaymentListener.php

要激活这些监听器,将此代码复制到app\Providers\EventServiceProvider.php类中(此类是Laravel默认安装的一部分),在类的$listen属性中。

如下所示

protected $listen = [
        'App\Events\Event' => [
            'App\Listeners\EventListener',
        ],

        'Pondol\BtcPayment\Events\ConfirmedPaymentEvent' => [
            'App\Listeners\ConfirmedPaymentListener',
        ],
    ];

在这些类的每个类中都有一个handle方法,您可以在其中放置当事件触发时需要执行的操作的逻辑(DB插入-更新,发送邮件...)。

以下是一个ConfimedPaymentListener的示例,当确认次数等于.env文件中的BITCOIND_MIN_CONFIRMATIONS时,事件被生成,我们可以确信支付是成功的。

    public function handle(ConfirmedPaymentEvent $event)
    {
        Log::debug('Confirmed Payment listener: '. $event->confirmedPayment);
         // Here you add your code for sending mails, db update ...
    }

事件

  1. Pondol\BtcPayment\Events\ConfirmedPaymentEvent - 已支付,且确认次数等于或大于.env文件中BITCOIND_MIN_CONFIRMATIONS的值。

模型

Pondol\BtcPayment\Models\Payment - 表示已确认和未确认的支付(请参阅使用部分)

许可

MIT许可