Authorize.Net Payment Gateway’i integreerimine Laravelis
Authorize.Net on kahtlemata üks usaldusväärsemaid ja populaarsemaid makselahendusi Internetis. Kui teil on veebipood ja soovite makseid saada krediit- või deebetkaartidega, siis oleks teie valik Authorize.Net. Selles artiklis näitan teile, kuidas Authorize.Net makselüüsi oma Laraveli rakendusse integreerida.
Alustamine teil peaks olema konto Authorize.Net. Kõigepealt peaksite oma makseid testima liivakasti režiimis ja kui kõik töötab ootuspäraselt, minge reaalajas režiimi. Authorize.Neti abil makse aktsepteerimiseks peate haarama oma API mandaadid. Logige sisse oma liivakasti kontole ja saate need API-võtmed menüüst Konto-> API mandaadid ja võtmed.
Järgmisel lehel saate oma API sisselogimise ID ja loote jaotisest „Loo uus võti (d)" uus tehinguvõti.
Laraveli põhiseadistamine makse aktsepteerimiseks Authorize.Neti abil
Kui teie kliendid ostavad tooteid, peaksite nende makseandmed andmebaasi salvestama. Sellest hoolimata loome tehingute üksikasjade salvestamiseks tabeli „maksed”.
php artisan make:migration create_payments_table
Loodud migratsioonifailis lisage allpool olev kood up-meetodile.
<?php
...
...
public function up()
{
Schema::create('payments', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('transaction_id');
$table->string('payer_email');
$table->float('amount', 10, 2);
$table->string('currency');
$table->string('payment_status');
$table->timestamps();
});
}
Järgmisena käivitage käsk migrate, mis lisab selle tabeli teie andmebaasi.
php artisan migrate
„Maksete” tabeliga suhtlemiseks peab teil olema mudel „Makse”. Looge see käsuga:
php artisan make:model Payment
Olete kopeerinud Authorize.Net API mandaadid. Paneme selle teie .env
faili järgmiselt.
ANET_API_LOGIN_ID=PASTE_HERE_API_LOGIN_ID
ANET_TRANSACTION_KEY=PASTE_HERE_TRANSACTION_KEY
Asendage kohatäited tegelike väärtustega. Pärast seda tühjendage oma konfiguratsioonivahemälu.
php artisan config:clear
Makse töötlemise ajal peate Laravelis määratlema marsruudid. Nii et määratleme selle marsruudid.
marsruudid / web.php
<?php
...
...
Route::get('payment', 'PaymentController@index');
Route::post('charge', 'PaymentController@charge');
Authorize.Net Payment Gateway’i integreerimine Laravelis
Möödas on ajad, mil arendajatel oli vaja oma teenuste integreerimiseks lugeda makselüüsi pakkujate API dokumentatsiooni. Omnipay on PHP jaoks maksete töötlemise raamatukogu ja nad teevad kõik raske töö meie arendajate elu lihtsustamiseks. Nad pakuvad tuge mitme maksega lüüsiteenuste jaoks. Samuti kavatseme Laravelis Autorize.Neti integreerimiseks kasutada Omnipay-d. Koos Omnipayga kasutame ka nende teist teeki Authorize.Net API juurutamiseks.
Seda öeldes installige need 2 teeki, kasutades käsku Composer:
composer require league/omnipay:^3 "academe/omnipay-authorizenetapi: ~3.0"
Nüüd looge kontroller, mis kutsub vaatefaili, töötleb makse ja salvestab tehingu üksikasjad andmebaasi.
php artisan make:controller PaymentController
Sellesse kontrollerisse lisage allpool olev kood sellisena, nagu see on kõigi maksetega seotud asjadega.
PaymentController.php
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use OmnipayOmnipay;
use AppPayment;
class PaymentController extends Controller
{
public $gateway;
public function __construct()
{
$this->gateway = Omnipay::create('AuthorizeNetApi_Api');
$this->gateway->setAuthName(env('ANET_API_LOGIN_ID'));
$this->gateway->setTransactionKey(env('ANET_TRANSACTION_KEY'));
$this->gateway->setTestMode(true); //comment this line when move to 'live'
}
public function index()
{
return view('payment');
}
public function charge(Request $request)
{
try {
$creditCard = new OmnipayCommonCreditCard([
'number' => $request->input('cc_number'),
'expiryMonth' => $request->input('expiry_month'),
'expiryYear' => $request->input('expiry_year'),
'cvv' => $request->input('cvv'),
]);
// Generate a unique merchant site transaction ID.
$transactionId = rand(100000000, 999999999);
$response = $this->gateway->authorize([
'amount' => $request->input('amount'),
'currency' => 'USD',
'transactionId' => $transactionId,
'card' => $creditCard,
])->send();
if($response->isSuccessful()) {
// Captured from the authorization response.
$transactionReference = $response->getTransactionReference();
$response = $this->gateway->capture([
'amount' => $request->input('amount'),
'currency' => 'USD',
'transactionReference' => $transactionReference,
])->send();
$transaction_id = $response->getTransactionReference();
$amount = $request->input('amount');
// Insert transaction data into the database
$isPaymentExist = Payment::where('transaction_id', $transaction_id)->first();
if(!$isPaymentExist)
{
$payment = new Payment;
$payment->transaction_id = $transaction_id;
$payment->payer_email = $request->input('email');
$payment->amount = $request->input('amount');
$payment->currency = 'USD';
$payment->payment_status = 'Captured';
$payment->save();
}
return "Payment is successful. Your transaction id is: ". $transaction_id;
} else {
// not successful
return $response->getMessage();
}
} catch(Exception $e) {
return $e->getMessage();
}
}
}
See kontroller haarab HTML-vormilt summa, kaardi üksikasjad ja töötleb makse. Eduka makse korral salvestab see kõik tehingu üksikasjad tabelisse „maksed”.
Lõpuks looge vaade payment.blade.php
ja see sisaldab järgmist koodi.
payment.blade.php
<form action="{{ url('charge') }}" method="post">
{{ csrf_field() }}
<input type="email" name="email" placeholder="Enter Email" />
<input type="text" name="amount" placeholder="Enter Amount" />
<input type="text" name="cc_number" placeholder="Card Number" />
<input type="text" name="expiry_month" placeholder="Month" />
<input type="text" name="expiry_year" placeholder="Year" />
<input type="text" name="cvv" placeholder="CVV" />
<input type="submit" name="submit" value="Submit" />
</form>
Selle vormi esitamisel läheb kontroll charge
funktsiooni sisse PaymentController
ja kontroller teeb ülejäänud makseprotsessi. Liivakasti makse testimiseks klõpsake siin näivade krediitkaardinumbrite saamiseks. Kasutaja näeb oma tehingut ka Authorize.Neti juhtpaneelil. Esialgu loetletakse tehingud, mis on loetletud arveldamata tehingutena. Authorize.Net arveldab tehingu hiljem ise.
Makse otseülekanne
Kui olete oma maksed liivakasti režiimis edukalt testinud, saate üle minna tootmisrežiimile. Kõik, mida peate tegema, on liivakasti mandaatide asendamine .env
faili tootmise üksikasjadega. Kommenteerige ka __construct
meetodi allpool olevat rida PaymentController
.
$this->gateway->setTestMode(true); //comment this line when move to 'live'
See on kõik! Loodan, et mõistate Authorize.Net Payment Gateway’i integreerimist Laravelis. Tahaksin kuulda teie mõtteid või ettepanekuid allpool olevas kommentaaride jaotises.