Authorize.Net Payment Gateway -integraatio Laravelissa
Authorize.Net on epäilemättä yksi luotettavista ja suosituimmista maksuratkaisuista Internetissä. Jos sinulla on verkkokauppa ja haluat vastaanottaa maksuja luotto- tai maksukortilla, valitse Authorize.Net. Tässä artikkelissa näytän sinulle, miten Authorize.Net-maksuyhdyskäytävä voidaan integroida Laravel-sovellukseesi.
Aloittamiseen sinulla on oltava tili Authorize.Net-sivustossa. Testaa ensin maksusi hiekkalaatikkotilassa ja jos kaikki toimii odotetulla tavalla, siirry live-tilaan. Jotta voit hyväksyä maksun Authorize.Net-palvelun avulla, sinun on tartuttava sovellusliittymän kirjautumistiedoihisi. Kirjaudu hiekkalaatikkotiliisi ja saat nämä API-avaimet kohdasta Tili-> API- tunnukset ja avaimet.
Seuraavalla sivulla saat API-tunnuksesi ja luo uusi tapahtuma-avain Luo uusi avain (t) -osiosta.
Perusasetukset Laravelissa maksun hyväksymiseksi Authorize.Net-sovelluksella
Kun asiakkaasi ostavat tuotteita, sinun tulee tallentaa heidän maksutiedot tietokantaan. Luodaan siis luodaan taulukko ‘maksut’ tapahtumien yksityiskohtien tallentamiseksi.
php artisan make:migration create_payments_table
Lisää luotu siirtotiedosto alla oleva koodi ylös-menetelmään.
<?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();
});
}
Suorita seuraavaksi siirto-komento, joka lisää tämän taulukon tietokantaan.
php artisan migrate
Jotta voit olla vuorovaikutuksessa maksujen taulukon kanssa, sinulla on oltava malli "Maksu". Luo se komennolla:
php artisan make:model Payment
Olet kopioinut Authorize.Net-sovellusliittymän kirjautumistiedot. Laitetaan se .env
tiedostoosi seuraavasti.
ANET_API_LOGIN_ID=PASTE_HERE_API_LOGIN_ID
ANET_TRANSACTION_KEY=PASTE_HERE_TRANSACTION_KEY
Muista korvata paikkamerkit todellisilla arvoilla. Tämän jälkeen tyhjennä määritysvälimuisti.
php artisan config:clear
Maksua käsiteltäessä sinun on määriteltävä reitit Laravelissa. Joten määritellään reitit sille.
reitit / web.php
<?php
...
...
Route::get('payment', 'PaymentController@index');
Route::post('charge', 'PaymentController@charge');
Authorize.Net Payment Gateway -integraatio Laravelissa
Menneet ovat päivät, jolloin kehittäjien tarvitsi lukea maksuyhdyskäytävien tarjoajien API-dokumentaatiot palvelujensa integroimiseksi. Omnipay on PHP: n maksunkäsittelykirjasto, ja he tekevät kaiken kovan työn helpottaakseen kehittäjien elämää. Ne tarjoavat tukea monen maksun yhdyskäytäväpalveluille. Aiomme myös käyttää Omnipayä Authorize.Netin integrointiin Laravelissa. Omnipayn kanssa käytämme myös heidän toista kirjastoa Authorize.Net-sovellusliittymän toteuttamiseen.
Tämän jälkeen asenna nämä 2 kirjastoa Composer-komennolla:
composer require league/omnipay:^3 "academe/omnipay-authorizenetapi: ~3.0"
Luo nyt ohjain, joka kutsuu näkymätiedoston, käsittelee maksun ja tallentaa tapahtuman tiedot tietokantaan.
php artisan make:controller PaymentController
Lisää tähän ohjaimeen alla oleva koodi sellaisenaan, joka käsittelee kaikki maksuihin liittyvät asiat.
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();
}
}
}
Tämä ohjain tarttuu summaan, korttitietoihin HTML-lomakkeesta ja käsittelee maksun. Onnistuneen maksun yhteydessä se tallentaa kaikki maksutapahtumatiedot "maksut" -taulukkoon.
Luo lopuksi näkymä, payment.blade.php
ja se sisältää seuraavan koodin.
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>
Kun lähetät tämän lomakkeen, hallinta siirtyy charge
funktioon PaymentController
ja ohjain suorittaa loput maksuprosessin. Napsauta tätä saadaksesi nuken luottokortin numerot hiekkalaatikkomaksun testaamiseksi. Käyttäjä voi nähdä tapahtuman myös Authorize.Net-hallintapaneelissa. Aluksi liiketoimet, jotka on lueteltu järjestämättöminä liiketoimina. Authorize.Net ratkaisee tapahtuman myöhemmin itse.
Suorita maksu suorana
Kun olet onnistuneesti testannut maksusi hiekkalaatikkotilassa, voit siirtyä tuotantotilaan. Sinun tarvitsee vain korvata hiekkalaatikkotiedot .env
tiedostoilla olevilla tuotannon tiedoilla. Kommentoi myös alla olevaa riviä __construct
menetelmästä PaymentController
.
$this->gateway->setTestMode(true); //comment this line when move to 'live'
Siinä kaikki! Toivon, että ymmärrät Authorize.Net Payment Gateway -integraation Laravelissa. Haluaisin kuulla ajatuksesi tai ehdotuksesi alla olevassa kommenttiosassa.