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.
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.
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 .env
tiedostoon.
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.