...
✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Acceptera kreditkortsbetalning med Authorize.Net Payment Gateway i PHP

15

Vill du integrera ett kreditkortsbetalningsalternativ på din webbplats? Om ja, då är Authorize.Net ett bra val för dig. Grundades 1996 och är en av de populäraste betalningsportarna på Internet.

För en webbutik används kreditkort ofta för att acceptera betalning. Kunderna föredrar att betala med kreditkort för att köpa onlineprodukter. I din butik måste du ge möjlighet att betala med kreditkort. I den här artikeln visar jag dig hur du integrerar Payment Gateway för Authorize.Net som gör att du kan få kreditkortsbetalning.

När vi lägger till betalningsgateways måste vi först testa transaktionerna i sandlådeläget. När testbetalningarna fungerar korrekt kan du gå till liveversionen.

För att komma igång med Authorize.Net, skapa först ett sandbox-konto. Kopiera inloggnings-id och transaktionsnyckel när kontot skapats. Du kan hämta dessa API-nycklar från Account-> API Credentials & Keys. Se skärmdumpen nedan.

Acceptera kreditkortsbetalning med Authorize.Net Payment Gateway i PHP

På nästa sida får du ditt "API-inloggnings-ID". Skapa en transaktionsnyckel från avsnittet "Skapa nya nycklar" som visas i skärmbilden nedan.

Acceptera kreditkortsbetalning med Authorize.Net Payment Gateway i PHP

Komma igång

För att integrera Authorize.Net kommer vi att använda biblioteket Omnipay som ger ett enkelt och enkelt sätt för betalningsintegrering. Installera Omnipay-biblioteket till ditt projekt med kommandot:

composer require league/omnipay:^3

Det installerar Omnipay-biblioteket. Dessutom måste vi installera Omnipay-paketet för Authorize.Net. Detta paket tillåter oss att fånga betalning via Authorize.Net betalningsgateway. Läs mer om detta paket i deras dokumentation. Kör kommandot nedan för att installera det här paketet:

composer require "academe/omnipay-authorizenetapi: ~3.0"

Vi är redo med stödda bibliotek. Nu ska vi skapa ett enkelt formulär för att ange belopp och kortinformation. Jag skapar en index.phpfil och lägger till nedanstående HTML i den.

<form action="charge.php" method="post">
    <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>

När vi accepterar onlinebetalning måste vi lagra transaktionsuppgifterna i databasen. Så, för att lagra transaktionsinformation skapar du en ‘betalningstabell’ i databasen med hjälp av nedanstående fråga.

CREATE TABLE `payments` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `transaction_id` varchar(255) NOT NULL,
 `amount` float(10,2) NOT NULL,
 `currency` varchar(255) NOT NULL,
 `payment_status` varchar(255) NOT NULL,
 `captured_at` datetime NOT NULL DEFAULT current_timestamp(),
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Acceptera kreditkortsbetalning med Authorize.Net

Du har kopierat API-nycklarna till ditt Authorize.Net-konto i föregående steg. Det är dags att lägga till dessa nycklar i PHP-koden. Spara dessa referenser i config.phpfilen. Jag lägger också till databasanslutningen till den här filen.

config.php

<?php
require_once "vendor/autoload.php";
  
// Connect with the database
$db = new mysqli('localhost', 'MYSQL_DB_USERNAME', 'MYSQL_DB_PASSWORD', 'MYSQL_DB_NAME');
  
if ($db->connect_errno) {
    die("Connect failed: ". $db->connect_error);
}
  
$gateway = OmnipayOmnipay::create('AuthorizeNetApi_Api');
$gateway->setAuthName('PASTE_ANET_API_LOGIN_ID');
$gateway->setTransactionKey('PASTE_ANET_TRANSACTION_KEY');
$gateway->setTestMode(true); //comment this line when move to 'live'

Ersätt platshållarna med de faktiska värdena. När vi testar betalningarna på sandlådan passerade jag metoden setTestMode. När du är redo att gå vidare till produktion, ta bort / kommentera den här raden.

I formuläret vi har skapat ovan ställer jag in charge.phpsom åtgärds-URL. Det betyder att den faktiska koden som fångar kreditkortsbetalningen kommer att ligga i den här filen.

charge.php

<?php
require_once "config.php";
  
if (isset($_POST['submit'])) {
  
    try {
        $creditCard = new OmnipayCommonCreditCard([
            'number' => $_POST['cc_number'],
            'expiryMonth' => $_POST['expiry_month'],
            'expiryYear' => $_POST['expiry_year'],
            'cvv' => $_POST['cvv'],
        ]);
  
        // Generate a unique merchant site transaction ID.
        $transactionId = rand(100000000, 999999999);
  
        $response = $gateway->authorize([
            'amount' => $_POST['amount'],
            'currency' => 'USD',
            'transactionId' => $transactionId,
            'card' => $creditCard,
        ])->send();
  
        if($response->isSuccessful()) {
  
            // Captured from the authorization response.
            $transactionReference = $response->getTransactionReference();
  
            $response = $gateway->capture([
                'amount' => $_POST['amount'],
                'currency' => 'USD',
                'transactionReference' => $transactionReference,
                ])->send();
  
            $transaction_id = $response->getTransactionReference();
            $amount = $_POST['amount'];
  
            // Insert transaction data into the database
            $isPaymentExist = $db->query("SELECT * FROM payments WHERE transaction_id = '".$transaction_id."'");
  
            if($isPaymentExist->num_rows == 0) {
                $insert = $db->query("INSERT INTO payments(transaction_id, amount, currency, payment_status) VALUES('$transaction_id', '$amount', 'USD', 'Captured')");
            }
  
            echo "Your payment transaction id: ". $transaction_id;
        } else {
            // not successful
            echo $response->getMessage();
        }
    } catch(Exception $e) {
        echo $e->getMessage();
    }
}

Nu kan du testa en betalning. Få dessa testkreditkortsnummer för att testa betalningen. På det lyckade svaret bör du få ditt transaktions-ID.

Ägaren kan se transaktionerna på Dashboard Authorize.Net. Du hittar transaktioner under "Oavslutade transaktioner". Authorize.Net löser senare transaktionen på egen hand och meddelar dig via e-post.

Acceptera kreditkortsbetalning med Authorize.Net Payment Gateway i PHP

Jag hoppas att du förstår hur du accepterar kreditkortsbetalningar med Authorize.Net betalningsgateway. Dela dina tankar eller förslag i kommentarsektionen nedan.

relaterade artiklar

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer