...
WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Принимайте оплату кредитной картой с помощью платежного шлюза Authorize.Net на PHP

192

Вы хотите интегрировать на свой сайт возможность оплаты кредитной картой? Если да, то Authorize.Net – хороший выбор для вас. Основанный в 1996 году, это один из популярных платежных шлюзов в Интернете.

В интернет-магазине для приема платежей широко используются кредитные карты. Клиенты предпочитают расплачиваться кредитной картой при покупке товаров в Интернете. В вашем магазине вы должны предоставить возможность оплаты кредитной картой. В этой статье я покажу вам, как интегрировать платежный шлюз Authorize.Net, который позволит вам получать платежи по кредитной карте.

Каждый раз, когда мы добавляем платежные шлюзы, мы должны сначала протестировать транзакции в режиме песочницы. Как только тестовые платежи заработают правильно, вы можете перейти на живую версию.

Чтобы начать работу с Authorize.Net, сначала создайте учетную запись песочницы. После создания учетной записи скопируйте идентификатор входа и ключ транзакции. Вы можете получить эти ключи API в разделе Учетная запись-> Учетные данные и ключи API. См. Снимок экрана ниже.

Принимайте оплату кредитной картой с помощью платежного шлюза Authorize.Net на PHP

На следующей странице вы получите свой «Идентификатор входа в API». Создайте ключ транзакции в разделе «Создать новый ключ (и)», как показано на снимке экрана ниже.

Принимайте оплату кредитной картой с помощью платежного шлюза Authorize.Net на PHP

Начиная

Для интеграции 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.phpURL-адрес действия. Это означает, что фактический код, который фиксирует платеж по кредитной карте, будет находиться внутри этого файла.

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 на PHP

Надеюсь, вы понимаете, как принимать платежи по кредитным картам с помощью платежного шлюза Authorize.Net. Пожалуйста, поделитесь своими мыслями или предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее