ar2rsoft/yii2-yandex-kassa

Yandex kassa作为Yii2组件

安装: 30

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 9

类型:yii2-extension

0.1.5 2016-12-16 09:35 UTC

This package is auto-updated.

Last update: 2024-09-14 00:04:22 UTC


README

Yandex kassa作为Yii2组件

安装

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

运行以下命令:

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

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

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

使用方法

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

'components' => [
	...
	'yakassa' => [
		'class' => 'ar2rsoft\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',
		'disableErrors' => true, # disable any error codes for yandex callback
	]
	...
]

创建控制器并配置checkOrder和paymentAviso yandex请求的动作。如果需要,你可以使用actions的'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
                     */
                }
            ],
        ];
    }
}

使用小部件很简单。你需要实现2个接口。第一个是OrderInterface,用于你的订单模型,以将金额和ID传递到表单中。第二个是Customer interface,用于传递客户ID,如果存在则预先填充电话和电子邮件。

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