ar2rsoft / 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 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' => 'С банковской карты']
]);