Akceptuj płatności kartą kredytową za pomocą bramki płatności Authorize.Net w PHP
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.
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.
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.php
plik 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.php
pliku. 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.php
jako 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.
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
- Integracja PayPal Payment Gateway w PHP przy użyciu PayPal REST API
- Przewodnik po integracji Stripe w witrynie z PHP
- Akceptuj płatności kartą kredytową za pomocą Paypal Payments Pro w PHP