...
✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Akceptuj płatności kartą kredytową za pomocą bramki płatności Authorize.Net w PHP

60

Chcesz zintegrować opcję płatności kartą kredytową na swojej stronie internetowej? Jeśli tak, to Authorize.Net jest dla Ciebie dobrym wyborem. Założona w 1996 roku, jest jedną z najpopularniejszych bramek płatniczych w Internecie.

W przypadku sklepu internetowego karty kredytowe są powszechnie używane do przyjmowania płatności. Klienci wolą płacić kartami kredytowymi, aby kupować produkty online. W swoim sklepie musisz podać opcję płatności kartą kredytową. W tym artykule pokażę, jak zintegrować bramkę płatności Authorize.Net, która pozwoli na otrzymywanie płatności kartą kredytową.

Za każdym razem, gdy dodajemy bramki płatności, musimy najpierw przetestować transakcje w trybie piaskownicy. Gdy płatności testowe działają poprawnie, możesz przejść do wersji na żywo.

Aby rozpocząć korzystanie z Authorize.Net, najpierw utwórz konto piaskownicy. Po utworzeniu konta skopiuj identyfikator logowania i klucz transakcji. Możesz uzyskać te klucze API z Konto->Poświadczenia i klucze API. Proszę zapoznać się z poniższym zrzutem ekranu.

Akceptuj płatności kartą kredytową za pomocą bramki płatności Authorize.Net w PHP

Na następnej stronie otrzymasz swój „Identyfikator logowania API". Utwórz klucz transakcji z sekcji „Utwórz nowe klucze”, jak pokazano na poniższym zrzucie ekranu.

Akceptuj płatności kartą kredytową za pomocą bramki płatności Authorize.Net w PHP

Pierwsze kroki

Do integracji Authorize.Net wykorzystamy bibliotekę Omnipay, która w przejrzysty i łatwy sposób umożliwia integrację płatności. Zainstaluj bibliotekę Omnipay w swoim projekcie za pomocą polecenia:

composer require league/omnipay:^3

Zainstaluje bibliotekę Omnipay. Dodatkowo jesteśmy zobowiązani do zainstalowania pakietu Omnipay dla Authorize.Net. Ten pakiet pozwala nam na przechwytywanie płatności przez bramkę płatności Authorize.Net. Przeczytaj więcej o tym pakiecie w ich dokumentacji. Uruchom poniższe polecenie, aby zainstalować ten pakiet:

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

Jesteśmy gotowi z obsługiwanymi bibliotekami. Teraz stwórzmy prosty formularz do wpisania kwoty i danych karty. Tworzę index.phpplik i dodaję do niego poniższy kod HTML.

<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>

Przyjmując płatność online, musimy przechowywać dane transakcji w bazie danych. Tak więc, aby przechowywać informacje o transakcji, utwórz tabelę „płatności” w bazie danych, korzystając z poniższego zapytania.

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;

Akceptuj płatność kartą kredytową za pomocą Authorize.Net

Skopiowałeś klucze API swojego konta Authorize.Net w poprzednich krokach. Czas dodać te klucze do kodu PHP. Zapisz te poświadczenia w config.phppliku. Dodaję również połączenie z bazą danych do tego pliku.

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'

Zastąp symbole zastępcze rzeczywistymi wartościami. Ponieważ testujemy płatności na piaskownicy, przeszedłem true do metody setTestMode. Kiedy będziesz gotowy do przejścia do produkcji, usuń/skomentuj tę linię.

W formularzu, który stworzyliśmy powyżej, ustawiłem charge.phpjako adres URL akcji. Oznacza to, że rzeczywisty kod, który przechwytuje płatność kartą kredytową, zostanie umieszczony w tym pliku.

opłata.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();
    }
}

Możesz teraz śmiało przetestować płatność. Uzyskaj te testowe numery kart kredytowych, aby przetestować płatność. Po pomyślnej odpowiedzi powinieneś otrzymać swój identyfikator transakcji.

Właściciel może zobaczyć transakcje na pulpicie nawigacyjnym Authorize.Net. Transakcje znajdziesz w zakładce „Transakcje nierozliczone”. Authorize.Net później sam rozliczy transakcję i powiadomi Cię e-mailem.

Akceptuj płatności kartą kredytową za pomocą bramki płatności Authorize.Net w PHP

Mam nadzieję, że rozumiesz, jak akceptować płatności kartą kredytową za pomocą bramki płatności Authorize.Net. Podziel się swoimi przemyśleniami lub sugestiami w sekcji komentarzy poniżej.

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów