mikeyfinch/yii2-yandex-kassa-api

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

0.1 2018-02-07 10:29 UTC

This package is not auto-updated.

Last update: 2024-09-23 06:54:18 UTC


README

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

此扩展处于测试阶段,因此您可以自由提交拉取请求和修复错误

安装

安装此扩展的最佳方式是通过 composer

运行以下命令

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

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

将其添加到您的 composer.json 文件的 require 部分。

使用方法

扩展安装后,您需要遵循以下步骤

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

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

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

2. 在您的订单模型中实现 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'=>'mikefinch\YandexKassaAPI\actions\CreatePaymentAction',
                'orderClass' => Orders::className(),
                'beforePayment' => function($order) {
                    return $order->status == Orders::STATUS_NEW;
                }
            ],
            'notify' => [
                'class'=>'mikefinch\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 方法找到您的模型。