...
✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Інтеграція PayKun Payment Gateway у Laravel

32

Ви працюєте в Інтернеті в Індії? Тоді ви, мабуть, шукаєте платіжний шлюз, за ​​допомогою якого ваш клієнт може здійснювати оплату через Інтернет.

PayKun – це індійський платіжний шлюз, який приймає оплату через Інтернет за допомогою кредитної картки, Net Banking, Wallet та UPI. Вони надають 2 типи планів для продавців – стандарти та підприємства. Ви можете ознайомитися з їх планом на сторінці цін. У цій статті ми вивчаємо, як інтегрувати платіжний шлюз PayKun у Laravel.

Інтеграція PayKun Payment Gateway у Laravel

Починаємо

Для початку роботи з інтеграцією PayKun у Laravel вам потрібно спочатку створити обліковий запис у PayKun. При створенні облікового запису згенеруйте ключі API у меню Параметри-> Безпека-> Ключ API.

Спочатку ми рекомендуємо спробувати інтеграцію спочатку з пісочницею, і якщо все працює належним чином, перейдіть до виробництва. Ви можете генерувати ключі API пісочниці для середовища пісочниці так само, як виробництво. Щоб увійти в інформаційну панель пісочниці, клацніть піктограму у верхньому правому куті, а потім – «Тестовий режим».

Інтеграція PayKun Payment Gateway у Laravel

Далі отримайте свій ідентифікатор продавця в розділі «Мої облікові записи-> Профіль».

Базове налаштування в Laravel для прийому платежів за допомогою PayKun

Для обробки платежу за допомогою PayKun потрібні ідентифікатор продавця та ключі API. Тож додайте ці значення у .envфайл.

PAYKUN_ACCESS_TOKEN=PASTE_ACCESS_TOKEN_HERE
PAYKUN_KEY_SECRET=PASTE_API_KEY_SECRET_HERE
PAYKUN_MERCHANT_ID=PASTE_MERCHANT_ID_HERE

Коли ваші користувачі здійснюють платіж, вам потрібно зберегти їх дані транзакції в базі даних для подальшого використання. Отже, давайте створимо міграцію за допомогою команди:

php artisan make:migration create_payments_table

Відкрийте цей файл міграції та додайте код нижче методом 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();
    });
}

Запустіть цю міграцію за командою:

php artisan migrate

Ця міграція створить таблицю "платежів" у вашій базі даних. Оскільки нам потрібно зберігати транзакції в цій таблиці, створіть модель "Оплата", яка відповідає таблиці "платежі".

php artisan make:model Payment

Ми всі готові до базового налаштування і можемо продовжувати інтегрувати бібліотеку PayKun у наш проект Laravel.

Інтеграція PayKun Payment Gateway у Laravel

PayKun пропонує SDK для PHP, .NET, Java, Python тощо. Ми збираємось використовувати їхню бібліотеку GitHub, створену для PHP-додатків.

Встановіть бібліотеку PayKun у своєму проекті Laravel, використовуючи таку команду композитора:

composer require paykun/checkout

Якщо ви прочитаєте на їхній сторінці GitHub, ви можете додати стільки полів, як дані про клієнта, рахунки та інформацію про доставку. Але заради підручника ми візьмемо лише поле суми. Користувачі можуть розширити форму відповідно до своїх вимог.

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>

Ми передали URL-адресу дії маршруту "заряд". Вам знадобиться кілька маршрутів, таких як URL-адреса успіху, невдала URL-адреса, плата тощо. Давайте визначимо це наступним чином.

routes / web.php

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

Наступне, що потрібно зробити, це створити файл контролера, який буде збирати суму, направляти користувача на веб-сайт PayKun для обробки платежу, а потім остаточно вставити дані про транзакцію в базу даних.

php artisan make:controller PaymentController

Додайте наведений нижче код у цей файл контролера, який буде обробляти всі речі, пов’язані з оплатою.

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

Якщо ви подивитесь на код конструктора, ми передали останній параметр як ‘false’ (логічне значення). Коли ви виходите в ефір, вам не потрібно передавати цей параметр. Також у виробничому режимі видаліть або прокоментуйте нижченаведений рядок методом "стягнення плати".

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

Поки ви тестуєте оплату в пісочниці, вам потрібно ввести фіктивні номери кредитних карток, які ви отримаєте тут.

Це воно! Ми сподіваємось, ви розумієте інтеграцію платіжного шлюзу PayKun у Laravel. Ми хотіли б почути ваші думки в розділі коментарів нижче.

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі