...
✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Integrazione del gateway di pagamento PayKun in Laravel

31

Gestisci un negozio online in India? Allora probabilmente stai cercando un gateway di pagamento attraverso il quale il tuo cliente possa pagare online.

PayKun è un gateway di pagamento indiano che accetta pagamenti online utilizzando una carta di credito, Net Banking, Wallet e UPI. Forniscono 2 tipi di piani per i commercianti: Standard ed Enterprise. Puoi controllare il loro piano nella pagina dei prezzi. In questo articolo, studiamo come integrare il gateway di pagamento PayKun in Laravel.

Integrazione del gateway di pagamento PayKun in Laravel

Iniziare

Per iniziare con l’integrazione di PayKun in Laravel, devi prima creare un account su PayKun. Al momento della creazione dell’account, generare le chiavi API da Impostazioni->Sicurezza->Chiave API.

Si consiglia innanzitutto di provare l’integrazione con sandbox e se tutto funziona come previsto, passare alla produzione. Puoi generare chiavi API sandbox per un ambiente sandbox allo stesso modo della produzione. Per accedere alla dashboard sandbox, fai clic sull’icona nell’angolo in alto a destra e quindi su "Modalità test".

Integrazione del gateway di pagamento PayKun in Laravel

Quindi, ottieni il tuo ID commerciante da I miei account->Profilo.

Configurazione di base in Laravel per accettare pagamenti utilizzando PayKun

Per elaborare il pagamento utilizzando PayKun, sono richiesti l’ID commerciante e le chiavi API. Quindi aggiungi questi valori nel .envfile.

PAYKUN_ACCESS_TOKEN=PASTE_ACCESS_TOKEN_HERE
PAYKUN_KEY_SECRET=PASTE_API_KEY_SECRET_HERE
PAYKUN_MERCHANT_ID=PASTE_MERCHANT_ID_HERE

Quando i tuoi utenti effettuano un pagamento, devi memorizzare i dettagli della loro transazione nel database per un uso successivo. Quindi, creiamo la migrazione usando il comando:

php artisan make:migration create_payments_table

Apri questo file di migrazione e aggiungi il codice di seguito nel metodo up.

<?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();
    });
}

Esegui questa migrazione tramite il comando:

php artisan migrate

Questa migrazione creerà una tabella "pagamenti" nel tuo database. Poiché è necessario memorizzare le transazioni in questa tabella, creare un modello "Pagamento" corrispondente alla tabella "pagamenti".

php artisan make:model Payment

Abbiamo impostato tutto con la configurazione di base e possiamo procedere con l’integrazione della libreria PayKun nel nostro progetto Laravel.

Integrazione del gateway di pagamento PayKun in Laravel

PayKun fornisce SDK per PHP, .NET, Java, Python, ecc. Useremo la loro libreria GitHub creata per le applicazioni PHP.

Installa la libreria PayKun nel tuo progetto Laravel usando il seguente comando composer:

composer require paykun/checkout

Se leggi sulla loro pagina GitHub puoi aggiungere tanti campi come i dettagli del cliente, della fatturazione e della spedizione. Ma per il tutorial, prenderemo solo il campo dell’importo. Gli utenti possono estendere il modulo secondo le loro esigenze.

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>

Abbiamo passato l’URL dell’azione al percorso "addebito". Avrai bisogno di alcuni percorsi come URL di successo, URL non riuscito, addebito, ecc. Definiamolo come segue.

route/web.php

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

La prossima cosa che deve fare è creare un file controller che raccoglierà l’importo, invierà un utente al sito Web PayKun per l’elaborazione del pagamento e infine inserirà i dettagli della transazione nel database.

php artisan make:controller PaymentController

Aggiungi il codice di seguito in questo file del controller che gestirà tutte le cose relative ai pagamenti.

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.";
    }
}

Se guardi il codice del costruttore, abbiamo passato l’ultimo parametro come ‘false’ (valore booleano). Quando vai in diretta, non è necessario passare questo parametro. Anche sulla modalità di produzione, rimuovere o commentare la riga sottostante nel metodo "addebito".

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

Mentre stai testando il pagamento sandbox, devi inserire numeri fittizi di carta di credito che otterrai qui.

Questo è tutto! Ci auguriamo che tu capisca l’integrazione del gateway di pagamento PayKun in Laravel. Ci piacerebbe sentire i tuoi pensieri nella sezione commenti qui sotto.

Fonte di registrazione: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More