✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

PayKuni makselüüsi integreerimine Laravelis

23

Kas teil on India veebipood? Siis otsite tõenäoliselt makseväravat, mille kaudu teie klient saab veebis maksta.

PayKun on India maksevärav, mis aktsepteerib makseid veebis, kasutades krediitkaarti, Net Banking, Wallet ja UPI. Nad pakuvad kaupmeestele kahte tüüpi plaane – Standardid ja Ettevõtlus. Nende paketti saate vaadata hinnakujunduse lehelt. Selles artiklis uurime, kuidas integreerida PayKuni makselüüsi Laravelis.

PayKuni makselüüsi integreerimine Laravelis

Alustamine

Laraveli PayKuni integreerimise alustamiseks peate kõigepealt looma konto PayKunis. Konto loomisel genereerige API-võtmed menüüst Seaded-> Turvalisus-> API-võti.

Esmalt soovitame kõigepealt proovida liivakastiga integreerimist ja kui kõik töötab ootuspäraselt, siis minge tootmiseks. Liivakasti API võtmeid saate liivakasti keskkonna jaoks genereerida samamoodi nagu tootmist. Liivakasti armatuurlauale sisenemiseks klõpsake paremas ülanurgas oleval ikoonil ja seejärel nupul „Testrežiim".

PayKuni makselüüsi integreerimine Laravelis

Järgmisena hankige oma kaupmehe ID jaotisest Minu kontod-> Profiil.

Laraveli põhiseadistus PayKuni abil makse aktsepteerimiseks

PayKuni abil makse töötlemiseks on vaja kaupmehe ID ja API võtmeid. Nii lisage need väärtused .envfaili.

PAYKUN_ACCESS_TOKEN=PASTE_ACCESS_TOKEN_HERE
PAYKUN_KEY_SECRET=PASTE_API_KEY_SECRET_HERE
PAYKUN_MERCHANT_ID=PASTE_MERCHANT_ID_HERE

Kui teie kasutajad teevad makse, peate nende tehingu üksikasjad hilisemaks kasutamiseks andmebaasi salvestama. Niisiis, loome migratsiooni käsuga:

php artisan make:migration create_payments_table

Avage see rändefail ja lisage allpool olev meetod up-meetodisse.

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

Käivitage see migreerimine käsuga:

php artisan migrate

Selle üleviimise korral luuakse teie andmebaasi tabel „maksed”. Kuna peame selles tabelis tehingud salvestama, looge tabelile „maksed” vastav mudel „Makse”.

php artisan make:model Payment

Oleme kõik seadistanud põhiseadistusega ja saame PayKuni teegi integreerimisega oma Laraveli projekti jätkata.

PayKuni makselüüsi integreerimine Laravelis

PayKun pakub SDK-sid PHP, .NET, Java, Python jne jaoks. Kasutame nende PHP-rakenduste jaoks loodud GitHubi teeki.

Paigaldage PayKuni teek oma Laraveli projekti järgmise helilooja käsuga:

composer require paykun/checkout

Kui loete nende GitHubi lehelt, saate lisada nii palju välju nagu klient, arveldus ja saatmise üksikasjad. Kuid õpetuse huvides võtame välja ainult summa. Kasutajad saavad vormi vastavalt oma nõuetele laiendada.

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>

Edastasime toimingu URL-i marsruudile ‘laadimine’. Te vajate mõnda marsruuti, näiteks õnnestunud URL, ebaõnnestunud URL, tasu jne. Määratleme see järgmiselt.

marsruudid / web.php

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

Järgmine asi, mida tuleb teha, on luua kontrolleri fail, mis kogub summa, saadab kasutaja PayKuni veebisaidile makse töötlemiseks ja seejärel sisestab tehingu üksikasjad lõpuks andmebaasi.

php artisan make:controller PaymentController

Lisage sellesse kontrollerifaili allpool olev kood, mis haldab kõiki maksetega seotud asju.

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

Kui vaatate konstruktori koodi, edastasime viimase parameetri väärana (tõeväärtus). Otseülekande ajal ei pea te seda parameetrit edastama. Eemaldage või kommenteerige allalaadimismeetodil ka tootmisrežiimi.

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

Liivakasti makse testimise ajal peate sisestama näilise krediitkaardi numbri, mille saate siit.

See selleks! Loodame, et mõistate PayKuni maksevärava integreerimist Laravelis. Tahaksime teie mõtteid kuulda allpool olevas kommentaaride jaotises.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem