Принимайте оплату кредитной картой с помощью платежного шлюза Authorize.Net на PHP
Вы хотите интегрировать на свой сайт возможность оплаты кредитной картой? Если да, то Authorize.Net – хороший выбор для вас. Основанный в 1996 году, это один из популярных платежных шлюзов в Интернете.
В интернет-магазине для приема платежей широко используются кредитные карты. Клиенты предпочитают расплачиваться кредитной картой при покупке товаров в Интернете. В вашем магазине вы должны предоставить возможность оплаты кредитной картой. В этой статье я покажу вам, как интегрировать платежный шлюз Authorize.Net, который позволит вам получать платежи по кредитной карте.
Каждый раз, когда мы добавляем платежные шлюзы, мы должны сначала протестировать транзакции в режиме песочницы. Как только тестовые платежи заработают правильно, вы можете перейти на живую версию.
Чтобы начать работу с Authorize.Net, сначала создайте учетную запись песочницы. После создания учетной записи скопируйте идентификатор входа и ключ транзакции. Вы можете получить эти ключи API в разделе Учетная запись-> Учетные данные и ключи API. См. Снимок экрана ниже.
На следующей странице вы получите свой «Идентификатор входа в API». Создайте ключ транзакции в разделе «Создать новый ключ (и)», как показано на снимке экрана ниже.
Начиная
Для интеграции Authorize.Net мы будем использовать библиотеку Omnipay, которая обеспечивает чистый и простой способ интеграции платежей. Установите библиотеку Omnipay в свой проект с помощью команды:
composer require league/omnipay:^3
Он установит библиотеку Omnipay. Кроме того, нам необходимо установить пакет Omnipay для Authorize.Net. Этот пакет позволяет нам фиксировать платеж через платежный шлюз Authorize.Net. Подробнее об этом пакете читайте в их документации. Выполните команду ниже, чтобы установить этот пакет:
composer require "academe/omnipay-authorizenetapi: ~3.0"
Мы готовы с поддерживаемыми библиотеками. Теперь давайте создадим простую форму для ввода суммы и реквизитов карты. Я создаю index.php
файл и добавляю в него следующий 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>
Принимая онлайн-платеж, мы должны хранить детали транзакции в базе данных. Итак, чтобы сохранить информацию о транзакции, создайте таблицу «платежей» в базе данных, используя запрос ниже.
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;
Принимайте оплату кредитной картой с помощью Authorize.Net
Вы скопировали ключи API своей учетной записи Authorize.Net на предыдущих шагах. Пора добавить эти ключи в код PHP. Сохраните эти учетные данные в config.php
файле. Я также добавляю в этот файл подключение к базе данных.
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'
Замените заполнители фактическими значениями. Поскольку мы тестируем платежи в песочнице, я передал методу true setTestMode
. Когда вы будете готовы перейти к производству, удалите / закомментируйте эту строку.
В форме, которую мы создали выше, я установил charge.php
URL-адрес действия. Это означает, что фактический код, который фиксирует платеж по кредитной карте, будет находиться внутри этого файла.
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();
}
}
Теперь вы можете протестировать платеж. Получите эти тестовые номера кредитных карт для проверки платежа. При успешном ответе вы должны получить идентификатор транзакции.
Владелец может видеть транзакции на панели инструментов Authorize.Net. Вы найдете транзакции в разделе «Неоплаченные транзакции». Позже Authorize.Net самостоятельно оформляет транзакцию и уведомляет вас по электронной почте.
Надеюсь, вы понимаете, как принимать платежи по кредитным картам с помощью платежного шлюза Authorize.Net. Пожалуйста, поделитесь своими мыслями или предложениями в разделе комментариев ниже.
Статьи по Теме
- Интеграция PayPal Payment Gateway в PHP с использованием PayPal REST API
- Руководство по интеграции Stripe на веб-сайте с помощью PHP
- Принимайте платежи по кредитным картам с помощью Paypal Payments Pro на PHP