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

Authorize.Net Payment Gateway -integraatio Laravelissa

31

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.

Authorize.Net Payment Gateway -integraatio Laravelissa

Seuraavalla sivulla saat API-tunnuksesi ja luo uusi tapahtuma-avain Luo uusi avain (t) -osiosta.

Authorize.Net Payment Gateway -integraatio Laravelissa

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 .envtiedostoosi 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.phpja 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 chargefunktioon PaymentControllerja 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.

Authorize.Net Payment Gateway -integraatio Laravelissa

Suorita maksu suorana

Kun olet onnistuneesti testannut maksusi hiekkalaatikkotilassa, voit siirtyä tuotantotilaan. Sinun tarvitsee vain korvata hiekkalaatikkotiedot .envtiedostoilla olevilla tuotannon tiedoilla. Kommentoi myös alla olevaa riviä __constructmenetelmä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.

Aiheeseen liittyvät artikkelit

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