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

Authorize.Net Payment Gateway -integraatio Laravelissa

27

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