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.
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".
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 .env
faili.
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.