✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Прийміть оплату кредитною карткою за допомогою Authorize.Net Payment Gateway у PHP

27

Ви хочете інтегрувати варіант оплати кредитною карткою на своєму веб-сайті? Якщо так, тоді Authorize.Net – хороший вибір для вас. Заснований у 1996 році, це один з популярних платіжних шлюзів в Інтернеті.

Для інтернет-магазину кредитні картки широко використовуються для прийому платежів. Клієнти воліють платити за допомогою кредитних карток, щоб купувати товари в Інтернеті. У своєму магазині ви повинні дати можливість оплати за допомогою кредитної картки. У цій статті я покажу вам, як інтегрувати платіжний шлюз Authorize.Net, який дозволить отримувати оплату за допомогою кредитної картки.

Всякий раз, коли ми додаємо платіжні шлюзи, ми повинні спочатку перевірити транзакції в режимі пісочниці. Як тільки тестові платежі запрацюють правильно, ви можете перейти до діючої версії.

Щоб розпочати роботу з Authorize.Net, спочатку створіть обліковий запис пісочниці. Після створення облікового запису скопіюйте ідентифікатор для входу та ключ транзакції. Ви можете отримати ці ключі API в обліковому записі-> Повноваження та ключі API. Зверніться до знімка екрана нижче.

Прийміть оплату кредитною карткою за допомогою Authorize.Net Payment Gateway у PHP

На наступній сторінці ви отримаєте свій "Ідентифікатор входу в API". Створіть ключ транзакції в розділі «Створити нові ключі», як показано на скріншоті нижче.

Прийміть оплату кредитною карткою за допомогою Authorize.Net Payment Gateway у 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'

Замініть заповнювачі фактичними значеннями. Оскільки ми тестуємо платежі в пісочниці, я перейшов до методу setTestMode. Коли ви будете готові перейти до виробництва, видаліть / прокоментуйте цей рядок.

У формі, яку ми створили вище, я встановив charge.phpяк URL-адресу дії. Це означає, що фактичний код, який фіксує оплату кредитною карткою, увійде до цього файлу.

заряд.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 Payment Gateway у PHP

Сподіваюся, ви розумієте, як приймати платежі за допомогою кредитної картки за допомогою платіжного шлюзу Authorize.Net. Будь ласка, поділіться своїми думками чи пропозиціями в розділі коментарів нижче.

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі