asciisd / knet
Knet package is provides an expressive, fluent interface to KNet's payment services.
Requires
- php: ^8.3
- ext-libxml: *
- ext-simplexml: *
- illuminate/contracts: ^10.0|^11.0|^12.0
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/events: ^10.0|^11.0|^12.0
- illuminate/http: ^10.0|^11.0|^12.0
- illuminate/log: ^10.0|^11.0|^12.0
- illuminate/routing: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
This package is auto-updated.
Last update: 2025-03-19 02:23:16 UTC
README
Laravel KNET Payment Integration
A robust Laravel package for integrating KNET payment gateway services in your applications. This package provides a clean and elegant way to handle payment processing, refunds, and transaction management with KNET.
Features
- đ Secure payment processing
- đŗ Transaction management
- đ Payment status inquiries
- âŠī¸ Refund processing
- đ¯ Event-driven architecture
- đ Detailed transaction logging
- đĄī¸ Error handling
- đ Transaction tracking
Installation
You can install the package via composer:
composer require asciisd/knet
After installation, publish the configuration file:
php artisan knet:publish"
Configuration
Configure your KNET credentials in your .env
file:
KNET_TRANSPORT_ID=your_transport_id KNET_TRANSPORT_PASSWORD=your_transport_password KNET_RESOURCE_KEY=your_resource_key # URLs Optional KNET_RESPONSE_URL=/knet/response KNET_REDIRECT_URL=/dashboard KNET_DEBUG=false
Basic Usage
Creating a Payment
use Asciisd\Knet\Services\KnetPaymentService; class PaymentController extends Controller { public function createPayment( Request $request, KnetPaymentService $paymentService ) { $transaction = $paymentService->createPayment( user: $request->user(), amount: 10.000, options: [ 'udf1' => 'custom_data_1', 'udf2' => 'custom_data_2', ] ); return redirect($transaction->url); } }
Manual Handling Payment Response
public function handleResponse( Request $request, KnetPaymentService $paymentService ) { $transaction = $paymentService->handlePaymentResponse($request->all()); if ($transaction->paid) { return redirect()->route('payment.success'); } return redirect()->route('payment.failed'); }
Processing Refunds
public function refund( KnetTransaction $transaction, KnetPaymentService $paymentService ) { // Full refund $result = $paymentService->refundPayment($transaction); // Partial refund $result = $paymentService->refundPayment($transaction, 5.000); return $result; }
Checking Transaction Status
public function checkStatus( KnetTransaction $transaction, KnetPaymentService $paymentService ) { $updatedTransaction = $paymentService->inquireAndUpdateTransaction($transaction); return $updatedTransaction; }
Events
The package dispatches several events that you can listen to:
KnetResponseReceived
: Fired when a payment response is receivedKnetResponsehandled
: Fired when a payment response is handled
Event Listeners Example
use Asciisd\Knet\Events\KnetResponseReceived; class PaymentReceivedListener { public function handle(KnetResponseReceived $event) { $transactionArray = $event->payload; // Handle payload } }
Transaction Model
The KnetTransaction
model provides several helpful methods:
$transaction->rawAmount(); // Get the raw amount $transaction->isPaid(); // Check if transaction is paid $transaction->isRefunded(); // Check if transaction is refunded $transaction->isRefundable(); // Check if transaction can be refunded
Error Handling
The package includes comprehensive error handling:
try { $result = $paymentService->refundPayment($transaction); } catch (\Exception $e) { Log::error('Refund failed', [ 'message' => $e->getMessage(), 'transaction_id' => $transaction->id ]); }
Database Schema
The package includes migrations for the knet_transactions
table with the following fields:
id
: Primary keyuser_id
: Foreign key to users tabletrackid
: KNET tracking IDamt
: Transaction amountpaymentid
: KNET payment IDtranid
: KNET transaction IDref
: Reference numberresult
: Transaction resultauth
: Authorization codeavr
: AVR valuepostdate
: Posting datepaid
: Payment statuserror_text
: Error message if anyurl
: Payment URLlivemode
: Production/Test mode flag- Various UDF fields (udf1 to udf5)
- Refund-related fields
- Timestamps
Testing
composer test
Security
If you discover any security-related issues, please email security@asciisd.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.