...
✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

PayKun Payment Gateway-integration i Laravel

15

Driver du en webbutik i Indien? Då letar du förmodligen efter en betalningsgateway genom vilken din kund kan betala online.

PayKun är en indisk betalningsport som accepterar betalning online med kreditkort, nätbank, plånbok och UPI. De tillhandahåller två typer av planer för handlare – standarder och företag. Du kan kolla in deras plan på prissidan. I den här artikeln studerar vi hur man integrerar PayKun betalningsgateway i Laravel.

PayKun Payment Gateway-integration i Laravel

Komma igång

För att komma igång med PayKun-integrationen i Laravel måste du först skapa ett konto på PayKun. När du skapar konto genererar du API-nycklar från Inställningar-> Säkerhet-> API-nyckel.

Vi rekommenderar att du först försöker integrera med sandlådan och om allt fungerar som förväntat går du till produktion. Du kan skapa sandbox API-nycklar för en sandbox-miljö på samma sätt som produktion. För att komma in i sandlådans instrumentpanel, klicka på ikonen uppe till höger och sedan på "Testläge".

PayKun Payment Gateway-integration i Laravel

Hämta sedan ditt säljar-id från Mina konton-> Profil.

Grundläggande installation i Laravel för att acceptera betalning med PayKun

För att kunna hantera betalning med PayKun krävs säljar-id och API-nycklar. Så lägg till dessa värden i .envfilen.

PAYKUN_ACCESS_TOKEN=PASTE_ACCESS_TOKEN_HERE
PAYKUN_KEY_SECRET=PASTE_API_KEY_SECRET_HERE
PAYKUN_MERCHANT_ID=PASTE_MERCHANT_ID_HERE

När dina användare gör en betalning måste du lagra deras transaktionsinformation i databasen för senare användning. Så, låt oss skapa migration med kommandot:

php artisan make:migration create_payments_table

Öppna den här migreringsfilen och lägg till koden nedan i uppmetoden.

<?php
...
...
 
public function up()
{
    Schema::create('payments', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('payment_id');
        $table->string('payer_email');
        $table->string('payer_mobile');
        $table->float('amount', 10, 2);
        $table->string('payment_status');
        $table->timestamps();
    });
}

Kör denna migrering med kommando:

php artisan migrate

Denna migrering skapar en "betalningstabell" i din databas. Eftersom vi behöver lagra transaktioner i denna tabell, skapa en modell ‘Betalning’ motsvarar ‘betalningstabellen.

php artisan make:model Payment

Vi är alla inställda på grundläggande installation och kan fortsätta integrera PayKun-biblioteket i vårt Laravel-projekt.

PayKun Payment Gateway-integration i Laravel

PayKun har tillhandahållit SDK: er för PHP, .NET, Java, Python, etc. Vi ska använda deras GitHub-bibliotek skapat för PHP-applikationer.

Installera PayKun-biblioteket i ditt Laravel-projekt med följande kompositörskommando:

composer require paykun/checkout

Om du läser på deras GitHub-sida kan du lägga till så många fält som kund-, fakturerings- och leveransinformation. Men för handledningens skull tar vi bara mängdsfältet. Användarna kan utöka formuläret enligt deras krav.

payment.blade.php

<form action="{{ url('charge') }}" method="post">
    <input type="text" name="amount" />
    {{ csrf_field() }}
    <input type="submit" name="submit" value="Pay Now">
</form>

Vi skickade åtgärds-URL: en till rutten "avgift". Du kommer att behöva några rutter som framgångs-URL, misslyckad URL, avgift etc. Låt oss definiera det enligt följande.

rutter / web.php

Route::get('payment', 'PaymentController@index');
Route::post('charge', 'PaymentController@charge');
Route::get('paymentsuccess', 'PaymentController@payment_success');
Route::get('paymenterror', 'PaymentController@payment_error');

Nästa sak som behöver göras är att skapa en kontrollerfil som samlar in beloppet, skickar en användare till PayKun-webbplatsen för att hantera betalningen och sedan slutligen infoga transaktionsuppgifterna i databasen.

php artisan make:controller PaymentController

Lägg till koden nedan i den här kontrollfilen som hanterar alla betalningsrelaterade saker.

PaymentController.php

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRequest;
use PaykunCheckoutPayment;
use AppPayment as PaymentModel;
 
class PaymentController extends Controller
{
    public $gateway;
  
    public function __construct()
    {
        $this->gateway = new Payment(env('PAYKUN_MERCHANT_ID'), env('PAYKUN_ACCESS_TOKEN'), env('PAYKUN_KEY_SECRET'), false); // here we pass last parameter as false to enable sandbox mode.
    }
 
    public function index()
    {
        return view('payment');
    }
 
    public function charge(Request $request)
    {
        if($request->input('submit'))
        {
            try {
 
                $this->gateway->setCustomFields(array('udf_1' => 'test')); //remove or comment this line when go live
 
                $this->gateway->initOrder('ORD'.uniqid(), 'My Product Name', $request->input('amount'), url('paymentsuccess'), url('paymenterror'));
 
                // Add Customer
                $this->gateway->addCustomer('', '', '');
 
                // Add Shipping address
                $this->gateway->addShippingAddress('', '', '', '', '');
 
                // Add Billing Address
                $this->gateway->addBillingAddress('', '', '', '', '');
 
                echo $this->gateway->submit();
            } catch(Exception $e) {
                return $e->getMessage();
            }
        }
    }
 
    public function payment_success(Request $request)
    {
 
        if ($request->input('payment-id'))
        {
            $transactionData = $this->gateway->getTransactionInfo($request->input('payment-id'));
 
            if ($transactionData['status'])
            {
                $arr_transaction = $transactionData['data']['transaction'];
 
                // Check if payment_id already exists in the database
                $isPaymentExist = PaymentModel::where('payment_id', $arr_transaction['payment_id'])->first();
          
                if(!$isPaymentExist)
                {
                    $payment = new PaymentModel;
                    $payment->payment_id = $arr_transaction['payment_id'];
                    $payment->payer_email = $arr_transaction['customer']['email_id'];
                    $payment->payer_mobile = $arr_transaction['customer']['mobile_no'];
                    $payment->amount = $arr_transaction['order']['gross_amount'];
                    $payment->payment_status = $arr_transaction['status'];
                    $payment->save();
                }
          
                return "Payment is successful. Your transaction id is: ". $arr_transaction['payment_id'];
            }
        }
    }
 
    public function payment_error(Request $request)
    {
        return "Something went wrong. Try again later.";
    }
}

Om du tittar på konstruktorkoden skickade vi den sista parametern som ‘falsk’ (booleskt värde). När du går live behöver du inte skicka den här parametern. Ta också bort eller kommentera nedanstående rad i produktionsläget i metoden "laddning".

$this->gateway->setCustomFields(array('udf_1' => 'test'));

När du testar betalning med sandlåda måste du ange dummy kreditkortsnummer som du får här.

Det är allt! Vi hoppas att du förstår PayKun-betalningsgateway-integrationen i Laravel. Vi vill höra dina tankar i kommentarsektionen nedan.

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer