✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Authorize.Net Payment Gateway’i integreerimine Laravelis

20

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.

Authorize.Net Payment Gateway'i integreerimine Laravelis

Järgmisel lehel saate oma API sisselogimise ID ja loote jaotisest „Loo uus võti (d)" uus tehinguvõti.

Authorize.Net Payment Gateway'i integreerimine Laravelis

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 .envfaili 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.phpja 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 chargefunktsiooni sisse PaymentControllerja 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 .envfaili tootmise üksikasjadega. Kommenteerige ka __constructmeetodi 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.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem