mikeyfinch / yii2-yandex-kassa-api
此扩展允许您通过新的 Yandex.Kassa API 从用户那里获得金钱
0.1
2018-02-07 10:29 UTC
Requires
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 通知页面
将您的通知页面 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 方法找到您的模型。