krushilin / yii2-yandex-kassa
Yandex kassa 作为 Yii2 组件
0.1.5
2016-12-16 09:35 UTC
Requires
- yiisoft/yii2: *
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' => 'С банковской карты']
]);