...
WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Интеграция платежного шлюза PayKun в Laravel

94

У вас есть интернет-магазин в Индии? Тогда, вероятно, вы ищете платежный шлюз, через который ваш клиент может платить онлайн.

PayKun – это индийский платежный шлюз, который принимает онлайн-платежи с помощью кредитной карты, Net Banking, Wallet и UPI. Они предоставляют 2 типа тарифных планов для продавцов – «Стандарты» и «Корпоративные». Вы можете ознакомиться с их тарифным планом на странице цен. В этой статье мы изучаем, как интегрировать платежный шлюз PayKun в Laravel.

Интеграция платежного шлюза PayKun в Laravel

Начиная

Чтобы начать работу с интеграцией PayKun в Laravel, вам необходимо сначала создать учетную запись в PayKun. После создания учетной записи сгенерируйте ключи API из Настройки-> Безопасность-> Ключ API.

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

Интеграция платежного шлюза PayKun в 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 в 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-адрес действия в маршрут «charge». Вам потребуется несколько маршрутов, таких как успешный URL, неудачный URL, начисление и т.д. Давайте определим это следующим образом.

маршруты / 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 для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее