kllakk/yii2-yandex-kassa-api

此扩展允许您通过新的 Yandex.Kassa API 从用户那里获取资金

安装次数: 9

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 2

类型:yii2-extension

0.1 2018-02-07 10:29 UTC

This package is auto-updated.

Last update: 2024-09-25 19:26:14 UTC


README

此扩展允许您通过新的 Yandex.Kassa API 从用户那里获取资金。
它被设计得非常简单易用,因此您无需深入了解 Yandex.Kassa 的工作流程。

此扩展处于测试版阶段,因此您可以随意发送拉取请求并修复错误

安装

安装此扩展的首选方式是通过 composer

运行以下命令:

php composer.phar require --prefer-dist kllakk/yii2-yandex-kassa-api "*"

"kllakk/yii2-yandex-kassa-api": "*"

将以下内容添加到您的 composer.json 文件的 require 部分。

用法

扩展安装完成后,您需要按照以下步骤进行:

1. 将扩展添加到您的配置文件中

'components' => [
    ...
    'kassa' => [
        'class' => 'kllakk\YandexKassaAPI\YandexKassaAPI',
        'returnUrl' => '',
        'shopId' => '',
        'key' => '',
    ],

returnUrl - 用户支付成功后将到达此处
shopId - 您的商店 ID(来自 Yandex)
key - 您的秘密密钥(来自 Yandex)
currency - 显然是货币(默认为 RUB)

2. 在您的 Order 模型中实现 OrderInterface

class Orders extends Model implements OrderInterface {
    
    ...
      
    public function setInvoiceId($invoiceId) {
        $this->invoice_id = $invoiceId;
    }

    
    public function getInvoiceId() {
        return $this->invoice_id;
    }

    
    public function getPaymentAmount() {
        return $this->amount;
    }

    
    public function findByInvoiceId($invoiceId) {
        return self::find()->where(['invoice_id' => $invoiceId]);
    }
    
    public function findById($id) {
        return self::findOne($id);
    }

}

3. 向您的控制器添加新操作

 public function actions() {
        return [
            'create-payment' => [
                'class'=>'kllakk\YandexKassaAPI\actions\CreatePaymentAction',
                'orderClass' => Orders::className(),
                'beforePayment' => function($order) {
                    return $order->status == Orders::STATUS_NEW;
                }
            ],
            'notify' => [
                'class'=>'kllakk\YandexKassaAPI\actions\ConfirmPaymentAction',
                'orderClass' => Orders::className(),
                'beforeConfirm' => function($payment, $order) {
                    $order->status = Orders::STATUS_PAID; 
                    return $order->save();
                }
            ]
        ];
    }

这里有两个回调。

beforePayment 检查我们的订单是否正常。您可以在那里提供一些逻辑,并在出现问题并希望取消支付时返回 false

第二个是 beforeConfirm。在用户成功支付您的款项并且您需要确认此订单、发送短信通知等时执行。请注意,如果在回调中返回 false,则不会确认付款,用户将在几小时后收到退款。

4. 配置您的 Yandex.Kassa 通知页面

Settings page

将您的通知页面 URL 设置为与您在控制器中使用的相同。
例如,如果您将操作添加到 SiteController,则为 https://yoursite.com/site/notify
别忘了 SSL - Yandex 只通过它发送通知。

5. 支付操作后重定向用户

if ($order->payment_type == $order::PAYTYPE_ONLINE) {
    return $this->redirect(['order/create-payment', 'id' =>$order->id]);
} else {
    return $this->redirect(['order/success']);
}

您必须传递 $id 到操作,以便它可以通过 findById 方法找到您的模型。