...
✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Integracja PayKun Payment Gateway w Laravel

19

Prowadzisz sklep internetowy w Indiach? Zapewne poszukujesz bramki płatniczej, przez którą Twój klient może płacić online.

PayKun to indyjska bramka płatnicza, która akceptuje płatności online za pomocą karty kredytowej, Net Banking, Wallet i UPI. Zapewniają 2 rodzaje planów dla handlowców – Standards i Enterprise. Możesz sprawdzić ich plan na stronie cennika. W tym artykule dowiemy się, jak zintegrować bramkę płatności PayKun w Laravel.

Integracja PayKun Payment Gateway w Laravel

Pierwsze kroki

Aby rozpocząć integrację PayKun w Laravel, musisz najpierw utworzyć konto na PayKun. Po utworzeniu konta wygeneruj klucze API w Ustawienia->Zabezpieczenia->Klucz API.

Zalecamy najpierw spróbować integracji z piaskownicą, a jeśli wszystko działa zgodnie z oczekiwaniami, przejdź do produkcji. Klucze API sandbox można generować dla środowiska sandbox w taki sam sposób, jak w środowisku produkcyjnym. Aby wejść do pulpitu piaskownicy, kliknij ikonę w prawym górnym rogu, a następnie „Tryb testowy".

Integracja PayKun Payment Gateway w Laravel

Następnie uzyskaj swój identyfikator sprzedawcy z Moje konta->Profil.

Podstawowa konfiguracja w Laravel do przyjmowania płatności za pomocą PayKun

Aby przetworzyć płatność za pomocą PayKun, wymagany jest identyfikator sprzedawcy i klucze API. Dodaj więc te wartości do .envpliku.

PAYKUN_ACCESS_TOKEN=PASTE_ACCESS_TOKEN_HERE
PAYKUN_KEY_SECRET=PASTE_API_KEY_SECRET_HERE
PAYKUN_MERCHANT_ID=PASTE_MERCHANT_ID_HERE

Kiedy Twoi użytkownicy dokonują płatności, musisz przechowywać ich szczegóły transakcji w bazie danych do późniejszego wykorzystania. Stwórzmy więc migrację za pomocą polecenia:

php artisan make:migration create_payments_table

Otwórz ten plik migracji i dodaj poniższy kod w metodzie 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();
    });
}

Uruchom tę migrację za pomocą polecenia:

php artisan migrate

Ta migracja utworzy w Twojej bazie danych tabelę „płatności”. Ponieważ musimy przechowywać transakcje w tej tabeli, utwórz model ‘Płatność’ odpowiadający tabeli ‘płatności’.

php artisan make:model Payment

Wszyscy przygotowaliśmy podstawową konfigurację i możemy przystąpić do integracji biblioteki PayKun w naszym projekcie Laravel.

Integracja PayKun Payment Gateway w Laravel

PayKun udostępnia pakiety SDK dla PHP, .NET, Java, Python itp. Będziemy korzystać z ich biblioteki GitHub stworzonej dla aplikacji PHP.

Zainstaluj bibliotekę PayKun w swoim projekcie Laravel za pomocą następującego polecenia kompozytora:

composer require paykun/checkout

Jeśli czytasz na ich stronie GitHub, możesz dodać dowolną liczbę pól, takich jak dane klienta, rozliczenia i wysyłki. Ale na potrzeby samouczka zajmiemy się tylko polem kwoty. Użytkownicy mogą rozszerzyć formularz zgodnie ze swoimi wymaganiami.

płatność.blade.php

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

Przekazaliśmy adres URL działania do trasy „opłata”. Będziesz potrzebować kilku tras, takich jak adres URL sukcesu, adres URL nieudany, opłata itp. Zdefiniujmy to w następujący sposób.

trasy/web.php

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

Następną rzeczą do zrobienia jest utworzenie pliku kontrolera, który pobierze kwotę, wyśle ​​użytkownika do serwisu PayKun w celu przetworzenia płatności, a następnie wstawi szczegóły transakcji do bazy danych.

php artisan make:controller PaymentController

Dodaj poniższy kod w tym pliku kontrolera, który będzie obsługiwał wszystkie rzeczy związane z płatnościami.

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

Jeśli spojrzysz na kod konstruktora, przekazaliśmy ostatni parametr jako „false” (wartość logiczna). Wchodząc na żywo, nie musisz przekazywać tego parametru. Również w trybie produkcyjnym usuń lub skomentuj poniższą linię w metodzie „opłaty”.

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

Podczas testowania płatności w piaskownicy musisz podać fałszywe numery kart kredytowych, które otrzymasz tutaj.

Otóż ​​to! Mamy nadzieję, że rozumiesz integrację bramki płatności PayKun w Laravel. Chcielibyśmy poznać Twoje przemyślenia w sekcji komentarzy poniżej.

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów