...
✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Integração de gateway de pagamento PayKun no Laravel

54

Você tem uma loja online na Índia? Então, provavelmente, você está procurando um portal de pagamento através do qual seu cliente possa pagar online.

PayKun é um portal de pagamento indiano que aceita pagamentos online usando cartão de crédito, Net Banking, Wallet e UPI. Eles oferecem 2 tipos de planos para comerciantes – Padrões e Empresa. Você pode verificar o plano deles na página de preços. Neste artigo, estudamos como integrar o gateway de pagamento PayKun no Laravel.

Integração de gateway de pagamento PayKun no Laravel

Começando

Para começar a integração do PayKun no Laravel, você precisa primeiro criar uma conta no PayKun. Ao criar a conta, gere chaves API em Configurações-> Segurança-> Chave API.

Recomendamos primeiro tentar a integração com o sandbox e, se tudo funcionar conforme o esperado, vá para a produção. Você pode gerar chaves de API de sandbox para um ambiente de sandbox da mesma forma que a produção. Para entrar no painel da sandbox, clique no ícone do canto superior direito e depois em ‘Modo de Teste’.

Integração de gateway de pagamento PayKun no Laravel

Em seguida, obtenha seu ID de comerciante em Minhas contas-> Perfil.

Configuração básica no Laravel para aceitar pagamento usando PayKun

Para processar o pagamento usando o PayKun, são necessários o ID do comerciante e as chaves API. Portanto, adicione esses valores ao .envarquivo.

PAYKUN_ACCESS_TOKEN=PASTE_ACCESS_TOKEN_HERE
PAYKUN_KEY_SECRET=PASTE_API_KEY_SECRET_HERE
PAYKUN_MERCHANT_ID=PASTE_MERCHANT_ID_HERE

Quando seus usuários fazem um pagamento, você precisa armazenar os detalhes da transação no banco de dados para uso posterior. Então, vamos criar a migração usando o comando:

php artisan make:migration create_payments_table

Abra este arquivo de migração e adicione o código abaixo no método 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();
    });
}

Execute esta migração por comando:

php artisan migrate

Esta migração criará uma tabela de ‘pagamentos’ em seu banco de dados. Como precisamos armazenar transações nesta tabela, crie um modelo ‘Pagamento’ correspondente à tabela ‘pagamentos’.

php artisan make:model Payment

Estamos todos prontos com a configuração básica e podemos prosseguir para a integração da biblioteca PayKun em nosso projeto Laravel.

Integração de gateway de pagamento PayKun no Laravel

PayKun fornece SDKs para PHP, .NET, Java, Python, etc. Vamos usar sua biblioteca GitHub criada para aplicativos PHP.

Instale a biblioteca PayKun em seu projeto Laravel usando o seguinte comando composer:

composer require paykun/checkout

Se você ler na página do GitHub, poderá adicionar tantos campos como cliente, faturamento e detalhes de envio. Mas por causa do tutorial, vamos pegar apenas o campo de quantidade. Os usuários podem estender o formulário de acordo com seus requisitos.

pagamento.blade.php

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

Passamos a URL de ação para a rota ‘cobrar’. Você precisará de algumas rotas, como URL de sucesso, URL com falha, cobrança, etc. Vamos definir como segue.

rotas / web.php

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

A próxima coisa que precisa fazer é criar um arquivo de controlador que irá coletar a quantia, enviar um usuário ao site da PayKun para processar o pagamento e, finalmente, inserir os detalhes da transação no banco de dados.

php artisan make:controller PaymentController

Adicione o código abaixo neste arquivo de controlador que tratará de todas as coisas relacionadas ao pagamento.

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 você olhar o código do construtor, passamos o último parâmetro como ‘falso’ (valor booleano). Ao entrar no ar, você não precisa passar este parâmetro. Também no modo de produção, remova ou comente a linha abaixo no método de ‘carga’.

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

Enquanto você está testando o pagamento sandbox, você precisa inserir números de cartão de crédito fictícios que você obterá aqui.

É isso! Esperamos que você entenda a integração do gateway de pagamento PayKun no Laravel. Gostaríamos de ouvir sua opinião na seção de comentários abaixo.

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação