Bu paket Laravel layihələrinizə Kapitalbankın ödəniş sistemini rahatlıqla bağlamağınıza köməklik edəcəkdoir.
composer require e1sn555/kapitalbank
Siz bu kodu layihənin olduğu qovluqda çalışdıraraq paketi layihəyə daxil edə bilərsiniz.
Əgər siz paketi yükləmisinizsə, lakin yenədə layihə paketi görmürsə və ya siz onu manual olaraq tanıtdırmaq istəyirsinizsə paketin ServiceProvider'ini config/app.php
daxilində müvafiq yerə yazmalısınız.
Kapitalbank\KapitalbankServiceProvider::class
Əgər siz Facade istifadə etmək istəyirsinizsə onda aşağıdakı koduda daxil etməlisiniz.
'Kapitalbank' => Kapitalbank\KapitalbankFacade::class
Paketi konfiqurasiya etmək üçün əvvəlcə konfiq fayıllarını çağırmalısınız. Bunun üçün aşağıdakə sətri icra etməyiniz bəs edir.
php artisan vendor:publish --provider=Kapitalbank\KapitalbankServiceProvider
Bu kodun icrasında sizin config
qovluğunuza kapitalbank.php
adlı yeni bir fayl gələcəkdir. Bu konfiq faylının daxili aşağıdakı kimidir.
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' => ''
];
Siz burada merchant
, certificate_path
və key_path
yazılan xanaları məcburi şəkildə doldurmalısınız (Siz kapitalbank əməkdaşına key
yaradıb verirsiz o isə sizə certificate
və merchant_id
təqdim edəcəkdir). approve_url
, cancel_url
və decline_url
isə default callback vermək üçün nəzərdə tutulub. Əgər siz bunu default şəkildə vermək istəmirsinizsə sorğu zamanıda verə bilərsiniz.
class OrderController {
public function __construct(private Kapitalbank\Kapitalbank $kapitalbank) {}
}
Servisi kontrollerin __construct()
metodunda bu şəkildə təyin etməyiniz servisdən istifadə etməyiniz üçün kifayət edəcəkdir.
Hazırda paketdən istifadə edərək purchase
, refund
və preAuth
sorğularını istifadə edə bilərsiniz. Bu haqda daha çox məlumat almaq üçün https://pg.kapitalbank.az/docs saytını ziyarət edə bilərsiniz.
Bu sorğuda siz müştərinin hesabından pulu bir başa olaraq öz hesabınıza çəkəcəksiniz. Nümunə aşağıdakı kimidir:
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();
}
Siz sorğu vasitəsilə pulu müştərinin hesabına qaytarırsız. Bu isə aşağıdakı kimi icra olunur:
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();
}
Bu sorğunun əsas məqsədi müştərinin hesabında olan pulu bloklamaqdır. Yəni siz müştəri məhsulu sifariş etdiyi anda pulu bloklayır, məhsulu ona çatdırdığınız anda isə pulu öz hesabınıza keçirirsiz və ya anbarınızda məhsul tükənibsə həmin sifariş ləğv edir, pulu da blokdan açırsınız. PreAuth sorğusu buna görədə 3 hissədən ibarətdir: sifariş yaratma
, sifarişi tamamlama
, sifarişi ləğv etmə
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();
}
Gördüyünüz kimi bu sorğu ilə birinci sorğu arasındaki tək fərq order_type
göndərməyimizdir. Qayıdan cavab da birinci sorğunun cavabı ilə eyni olacaqdır.
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 tərəfindən sizin üçün ayrılan ayları əvvəlcə müştəriyə seçdirməli daha sonra isə taksit sorğusu yaratmalısınız. Taksik sorğusu yaratmaq çox asandır, sadəcə description
hissəsində TAKSIT=$ay
kimi göndərəcəksiniz. Numünə aşağıdaki kimi olacaqdır:
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();
}