mitrm/yii2-gourlio

gourl.io 支付扩展。

安装数: 2,191

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

公开问题: 0

类型:yii2-extension

1.000 2018-04-01 17:55 UTC

This package is auto-updated.

Last update: 2024-09-26 05:22:22 UTC


README

比特币和代币支付接受

安装

安装此扩展的首选方法是通过 Composer

可以运行

composer require --prefer-dist mitrm/yii2-gourlio "*"

或者添加

"mitrm/yii2-gourlio": "*"

到您的 composer.json 文件的 require 部分。

用法

在 config/main.php 中添加

'components' => [
    'gourlio' => [
        'class' => 'mitrm\gourlio\Cryptobox',
        'period' => 'NOEXPIRY',
        'all_key' => [
            'bitcoin' => ['public_key' => '', 'private_key' => ''],
            'speedcoin' => ['public_key' => '', 'private_key' => ''],
            ...
        ]
    ],
]

支付数据生成

$options = array(
    'order_id' => $order_id,
    'user_id' => Yii::$app->user->id,
    'amount' => $sum,
    'coinName' => 'speedcoin', // bitcoin ...
);
$data_pay = Yii::$app->gourlio->load($options)->getPaymentData();

$data_pay['addr']; // Номер кошелька для перевода средств
$data_pay['amount']; // сумма к оплате

支付检查

$options = array(
    'order_id' => $order_id,
    'user_id' => Yii::$app->user->id,
    'amount' => $sum,
    'coinName' => 'speedcoin', // bitcoin ...
);
if(Yii::$app->gourlio->load($options)->isPaid())  {
    // Оплата пришла
}

从 gourl.io 获取支付通知

class PaymentsController extends Controller
{
    public $enableCsrfValidation = false;

    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'result' => [
                'class' => '\mitrm\gourlio\ResultAction',
                'callback' => [$this, 'resultCallbackGourlio'],
            ]
        ];
    }

    /**
     * Обработка оповещения о платеже с gourl.io
     * @param $cryptobox Cryptobox
     * @param $return_data
     * @return string
     */
    public function resultCallbackGourlio($cryptobox, $return_data)
    {
        $model = PaymentRequest::findOne(['id' => $return_data['params']['order'], 'user_id' => $return_data['params']['user']]);
        if (!$model) {
            throw new BadRequestHttpException('Транзакция не найдена');
        }
        $data = [
            'order_id' => $model->id,
            'user_id' => Yii::$app->user->id,
            'amount' => $model->sum,
            'coinName' => $model->currency, // speedcoin, bitcoin, ...
        ];
        $cryptobox->load($data);
        if($cryptobox->isPaid()) {
            $model->sum = $return_data['params']['amount'];
            $model->status_id = PaymentRequest::STATUS_SUCCESS;
            $model->save();
        }
        return $return_data['text_return'];
    }


}