...
✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

PayKun-maksuyhdyskäytävän integrointi Laravelissa

21

Pidätkö verkkokauppaa Intiassa? Sitten etsit todennäköisesti maksuyhdyskäytävää, jonka kautta asiakas voi maksaa verkossa.

PayKun on intialainen maksuyhdyskäytävä, joka hyväksyy maksun verkossa luottokortilla, verkkopankilla, lompakolla ja UPI: llä. Ne tarjoavat kahden tyyppisiä suunnitelmia kauppiaille – Standards ja Enterprise. Voit tarkistaa heidän suunnitelmansa hinnoittelusivulta. Tässä artikkelissa tutkitaan kuinka integroida PayKun-maksuyhdyskäytävä Laraveliin.

PayKun-maksuyhdyskäytävän integrointi Laravelissa

Päästä alkuun

Aloittaaksesi PayKun-integraation Laravelissa, sinun on ensin luotava tili PayKuniin. Kun luot tilin, luo API-avaimet Asetukset-> Suojaus-> API-avain.

Suosittelemme ensin kokeilemaan ensin integrointia hiekkalaatikkoon ja jos kaikki toimii odotetusti, siirry tuotantoon. Voit luoda hiekkalaatikkorajapinnan avaimet hiekkalaatikkoympäristölle samalla tavalla kuin tuotanto. Voit siirtyä hiekkalaatikkopaneeliin napsauttamalla oikean yläkulman kuvaketta ja sitten Testitila.

PayKun-maksuyhdyskäytävän integrointi Laravelissa

Hae seuraavaksi kauppiastunnuksesi kohdasta Omat tilit-> Profiili.

Perusasetukset Laravelissa maksun hyväksymiseksi PayKunilla

Maksun käsittelemiseksi PayKunilla vaaditaan kauppiastunnus ja API-avaimet. Joten lisää nämä arvot .envtiedostoon.

PAYKUN_ACCESS_TOKEN=PASTE_ACCESS_TOKEN_HERE
PAYKUN_KEY_SECRET=PASTE_API_KEY_SECRET_HERE
PAYKUN_MERCHANT_ID=PASTE_MERCHANT_ID_HERE

Kun käyttäjät suorittavat maksun, sinun on tallennettava tapahtuman tiedot tietokantaan myöhempää käyttöä varten. Joten, luodaan siirto komennolla:

php artisan make:migration create_payments_table

Avaa tämä siirtotiedosto ja lisää alla oleva koodi ylöspäin-menetelmään.

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

Suorita tämä siirto komennolla:

php artisan migrate

Tämä siirto luo tietokantaan "maksutaulukon". Koska meidän on tallennettava tapahtumia tähän taulukkoon, luo malli ‘Maksu’ vastaamaan ‘Maksut’ taulukkoa.

php artisan make:model Payment

Meillä kaikilla on perusasetukset ja voimme integroida PayKun-kirjaston Laravel-projektiimme.

PayKun-maksuyhdyskäytävän integrointi Laravelissa

PayKun tarjoaa SDK: ita PHP: lle, .NET: lle, Java: lle, Pythonille jne. Aiomme käyttää heidän PHP-sovelluksille luotua GitHub-kirjastoa.

Asenna PayKun-kirjasto Laravel-projektiisi seuraavalla säveltäjän komennolla:

composer require paykun/checkout

Jos luet heidän GitHub-sivullaan, voit lisätä niin monta kenttää kuin asiakas-, laskutus- ja toimitustiedot. Mutta opetusohjelman vuoksi otamme vain määrän kentän. Käyttäjät voivat laajentaa lomaketta vaatimustensa mukaisesti.

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>

Välitimme toiminnan URL-osoitteen reitille "maksu". Tarvitset muutaman reitin, kuten onnistuneen URL-osoitteen, epäonnistuneen URL-osoitteen, veloituksen jne. Määritetään se seuraavasti.

reitit / web.php

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

Seuraava asia, joka on tehtävä, on luoda ohjaintiedosto, joka kerää summan, lähettää käyttäjän PayKun-verkkosivustolle maksun käsittelyä varten ja sitten lopuksi lisätä tapahtuman tiedot tietokantaan.

php artisan make:controller PaymentController

Lisää alla oleva koodi tähän ohjaintiedostoon, joka käsittelee kaikki maksuihin liittyvät asiat.

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

Jos tarkastelet konstruktorikoodia, viimeinen parametri välitettiin vääräksi (looginen arvo). Kun lähetät suorana, sinun ei tarvitse antaa tätä parametria. Poista myös tuotantotilasta tai kommentoi alla olevaa riviä latausmenetelmässä.

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

Kun testaat hiekkalaatikkomaksua, sinun on annettava näennäisluottokortin numerot, jotka saat täältä.

Se siitä! Toivomme, että ymmärrät PayKun-maksuyhdyskäytävän integraation Laravelissa. Haluamme kuulla ajatuksesi alla olevassa kommenttiosassa.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja