krushilin/yii2-yandex-kassa

Yandex kassa 作为 Yii2 组件

安装次数: 19,728

依赖项: 0

建议者: 0

安全: 0

星标: 31

关注者: 2

分支: 9

开放性问题: 1

类型:yii2-extension

0.1.5 2016-12-16 09:35 UTC

This package is auto-updated.

Last update: 2024-09-19 20:45:21 UTC


README

Yandex kassa 作为 Yii2 组件

安装

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

运行以下命令之一:

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

或者将以下内容添加到您的 composer.json 文件的 require 部分中:

"kroshilin/yii2-yandex-kassa": "*"

使用方法

首先,在您的 config.php 文件的 components 部分下添加扩展。

'components' => [
	...
	'yakassa' => [
		'class' => 'kroshilin\yakassa\YaKassa',
		'paymentAction' => YII_DEBUG ? 'https://demomoney.yandex.ru/eshop.xml' : 'https://money.yandex.ru/eshop.xml',
		'shopPassword' => 'password',
		'securityType' => 'MD5',
		'shopId' => '12345',
		'scId' => '123',
		'currency' => '10643'
	]
	...
]

创建控制器并配置 checkOrder 和 paymentAviso yandex 请求的动作。如果需要,您可以使用动作的 'beforeResponse' 属性,以定义对 Yandex 请求的额外检查。根据 'beforeResponse' 的结果(true||false),将生成相应的响应。

class YaKassaController extends Controller
{
    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'order-check' => ['post'],
                    'payment-notification' => ['post'],
                ],
            ]
        ];
    }

    public function actions()
    {
        return [
            'order-check' => [
                'class' => 'app\components\yakassa\actions\CheckOrderAction',
                'beforeResponse' => function ($request) {
                    /**
                     * @var \yii\web\Request $request
                     */
                    $invoice_id = (int) $request->post('orderNumber');
		                Yii::warning("Кто-то хотел купить несуществующую подписку! InvoiceId: {$invoice_id}", Yii::$app->yakassa->logCategory);
                    return false;
                }
            ],
            'payment-notification' => [
                'class' => 'app\components\yakassa\actions\PaymentAvisoAction',
                'beforeResponse' => function ($request) {
                    /**
                     * @var \yii\web\Request $request
                     */
                }
            ],
        ];
    }
}

使用小部件很简单。您必须实现两个接口。第一个是 OrderInterface,用于您的订单模型,以将金额和 ID 传递到表单中。第二个是 Customer 接口,以传递客户 ID,并在存在的情况下预填手机和电子邮件。

echo kroshilin\yakassa\widgets\Payment::widget([
    'order' => $order,
    'userIdentity' => Yii::$app->user->identity,
	'data' => ['customParam' => 'value'],
	'paymentType' => ['PC' => 'Со счета в Яндекс.Деньгах', 'AC' => 'С банковской карты']
]);