e1sn555 / kapitalbank
为 Kapitalbank 提供支付服务
README
信息
此包将帮助您轻松地将 Kapitalbank 的支付系统集成到 Laravel 项目中。
安装
composer require e1sn555/kapitalbank
您可以通过在项目文件夹中运行此代码来将包添加到项目中。
在没有 Laravel 自动加载器的情况下识别包
如果您已安装包但项目仍看不到该包,或者您希望手动识别该包,则需要在 config/app.php 中将包的 ServiceProvider 写入相应位置。
Kapitalbank\KapitalbankServiceProvider::class
如果使用 Facade,则还需要添加以下代码。
'Kapitalbank' => Kapitalbank\KapitalbankFacade::class
配置
要配置包,首先需要调用配置文件。为此,执行以下命令即可。
php artisan vendor:publish --provider=Kapitalbank\KapitalbankServiceProvider
执行此代码后,您的 config 文件夹中将会生成一个名为 kapitalbank.php 的新文件。此配置文件的内部结构如下。
return [ /** * Merchant id */ 'merchant' => '', /** * Certificate path */ 'certificate_path' => '', /** * Key path */ 'key_path' => '', /** * Approve callback url */ 'approve_url' => '', /** * Cancel callback url */ 'cancel_url' => '', /** * Decline callback url */ 'decline_url' => '' ];
在这里,您必须填写 merchant
、certificate_path
和 key_path
必填字段(您创建一个 key 并将其提供给 Kapitalbank 合作伙伴,他将向您提供 certificate
和 merchant_id
)。approve_url
、cancel_url
和 decline_url
是为提供默认回调而预留的。如果您不想使用默认值,可以在查询时提供。
将服务介绍给控制器(依赖注入)
class OrderController { public function __construct(private Kapitalbank\Kapitalbank $kapitalbank) {} }
为了在控制器中使用此服务,您需要在 __construct()
方法中按照这种方式进行配置。
使用说明
目前,您可以使用此包执行 purchase
、refund
和 preAuth
查询。有关更多信息,请访问 https://pg.kapitalbank.az/docs 网站。
购买查询
在此查询中,您将从客户账户中提取资金到您的账户。示例如下
public function createOrder(Request $request) { $response = $this->kapitalbank->createOrder(amount: $request->amount, description: 'X ayaqqabı üçün ödəniş'); if($response->failed()) { $response->errors(function ($response, $e) { // }) // Servisə sorğu zamanı yarana biləcək xətaların ələ alınması } // Servisdən qayıdan cavabı ələ almaq. Qayıdan cavabları daha dəqiq bilmək üçün Kapitalbankın yuxarıda verilən rəsmi saytına göz ata bilərsiniz. $response->toArray(); }
退款查询
您可以通过查询将资金退还到客户账户。以下是执行方式
public function refund(Request $request) { $response = $this->kapitalbank->refund(amount: $request->amount, session_id: $request->session_id, order_id: $request->order_id, description: 'X ayaqqabının geri qaytarılması'); if($response->failed()) { // Servisə sorğu zamanı yarana biləcək xətaların ələ alınması } // Servisdən qayıdan cavabı ələ almaq. Qayıdan cavabları daha dəqiq bilmək üçün Kapitalbankın yuxarıda verilən rəsmi saytına göz ata bilərsiniz. $response->toArray(); }
预授权查询
此查询的主要目的是锁定客户账户中的资金。即当客户下单时,您锁定资金,当您将产品送达客户时,您将资金转入您的账户,或者当库存耗尽时,您将取消订单并解除锁定资金。预授权查询由三个部分组成:创建订单
、完成订单
、取消订单
创建订单
public function createOrder(Request $request) { $response = $this->kapitalbank->createOrder(amount: $request->amount, description: 'X ayaqqabı üçün preAuth sorğusu yaratmaq', order_type: 'PreAuth'); if($response->failed()) { // Servisə sorğu zamanı yarana biləcək xətaların ələ alınması } // Servisdən qayıdan cavabı ələ almaq. Qayıdan cavabları daha dəqiq bilmək üçün Kapitalbankın yuxarıda verilən rəsmi saytına göz ata bilərsiniz. $response->toArray(); }
如您所见,此查询与第一个查询之间的唯一区别是发送 order_type
。返回的响应也将与第一个查询的响应相同。
完成订单
public function completePreAuth(Request $request) { $response = $this->kapitalbank->completePreAuth(amount: $request->amount, description: 'X ayaqqabı üçün preAuth sorğusunu tamamlamaq', order_id: $request->order_id, session_id: $request->session_id); if($response->failed()) { // Servisə sorğu zamanı yarana biləcək xətaların ələ alınması } // Servisdən qayıdan cavabı ələ almaq. Qayıdan cavabları daha dəqiq bilmək üçün Kapitalbankın yuxarıda verilən rəsmi saytına göz ata bilərsiniz. $response->toArray(); }
取消订单
public function cancelPreAuth(Request $request) { $response = $this->kapitalbank->cancelPreAuth(order_id: $request->order_id, session_id: $request->session_id, description: 'X ayaqqabı üçün preAuth sorğusunu ləğv etmək'); if($response->failed()) { // Servisə sorğu zamanı yarana biləcək xətaların ələ alınması } // Servisdən qayıdan cavabı ələ almaq. Qayıdan cavabları daha dəqiq bilmək üçün Kapitalbankın yuxarıda verilən rəsmi saytına göz ata bilərsiniz. $response->toArray(); }
分期付款
Kapitalbank 为您预留了月份,您需要先让客户选择月份,然后创建分期付款查询。创建分期付款查询很简单,只需在 description
部分发送 TAKSIT=$月
即可。示例如下
public function createOrder(Request $request) { $response = $this->kapitalbank->createOrder(amount: $request->amount, description: "TAKSIT=$request->month"); if($response->failed()) { // Servisə sorğu zamanı yarana biləcək xətaların ələ alınması } // Servisdən qayıdan cavabı ələ almaq. Qayıdan cavabları daha dəqiq bilmək üçün Kapitalbankın yuxarıda verilən rəsmi saytına göz ata bilərsiniz. $response->toArray(); }