LaravelPackages.net
Acme Inc.
Toggle sidebar
asciisd/knet

Knet package is provides an expressive, fluent interface to KNet's payment services.

1.427
14
v7.2.0
About asciisd/knet

asciisd/knet is a Laravel package for knet package is provides an expressive, fluent interface to knet's payment services.. It currently has 14 GitHub stars and 1.427 downloads on Packagist (latest version v7.2.0). Install it with composer require asciisd/knet. Discover more Laravel packages by asciisd or browse all Laravel packages to compare alternatives.

Last updated

Latest Version on Packagist Software License Total Downloads

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 received
  • KnetResponsehandled: 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 key
  • user_id: Foreign key to users table
  • trackid: KNET tracking ID
  • amt: Transaction amount
  • paymentid: KNET payment ID
  • tranid: KNET transaction ID
  • ref: Reference number
  • result: Transaction result
  • auth: Authorization code
  • avr: AVR value
  • postdate: Posting date
  • paid: Payment status
  • error_text: Error message if any
  • url: Payment URL
  • livemode: 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 [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Star History Chart