Изучение интеграции платежного шлюза Paystack в PHP: подробное руководство

В современную цифровую эпоху прием онлайн-платежей имеет решающее значение для предприятий любого размера. Paystack, популярный платежный шлюз в Нигерии, предоставляет комплексное решение для безопасной и эффективной обработки платежей. В этой статье мы рассмотрим различные методы инициализации API платежного шлюза Paystack с использованием PHP, а также приведем примеры кода.

Методы инициализации API платежного шлюза Paystack в PHP:

  1. Базовая интеграция.
    Базовый метод интеграции включает в себя настройку необходимых конфигураций и выполнение POST-запроса к API Paystack.
<?php
$paystack_secret_key = 'YOUR_SECRET_KEY';
$amount = 5000; // Amount in kobo (for example, ₦5000)
$callback_url = 'https://example.com/checkout/callback.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.paystack.co/transaction/initialize');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'amount' => $amount,
    'callback_url' => $callback_url,
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $paystack_secret_key,
    'Content-Type: application/x-www-form-urlencoded',
]);
$response = curl_exec($ch);
curl_close($ch);
$payment_data = json_decode($response, true);
$authorization_url = $payment_data['data']['authorization_url'];
// Redirect the user to the authorization URL
header('Location: ' . $authorization_url);
exit;
?>
  1. Настраиваемая интеграция.
    Настраиваемый метод интеграции позволяет вам настроить форму оплаты и управлять процессом оплаты на вашем веб-сайте.
<?php
// Add your form HTML here
// Process the form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $paystack_secret_key = 'YOUR_SECRET_KEY';
    $amount = $_POST['amount']; // Amount in kobo
    $email = $_POST['email'];
    $callback_url = 'https://example.com/checkout/callback.php';
    // Make a POST request to Paystack's initialize endpoint
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.paystack.co/transaction/initialize');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
        'amount' => $amount,
        'email' => $email,
        'callback_url' => $callback_url,
    ]));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $paystack_secret_key,
        'Content-Type: application/x-www-form-urlencoded',
    ]);
    $response = curl_exec($ch);
    curl_close($ch);
    $payment_data = json_decode($response, true);
    $authorization_url = $payment_data['data']['authorization_url'];
    // Redirect the user to the authorization URL
    header('Location: ' . $authorization_url);
    exit;
}
?>
  1. Расширенная интеграция.
    Расширенный метод интеграции предполагает использование библиотеки JavaScript Paystack для асинхронной обработки процесса оплаты.
<?php
$paystack_public_key = 'YOUR_PUBLIC_KEY';
$amount = 5000; // Amount in kobo
$callback_url = 'https://example.com/checkout/callback.php';
?>
<!DOCTYPE html>
<html>
<head>
    <!-- Include Paystack's JavaScript library -->
    <script src="https://js.paystack.co/v1/inline.js"></script>
</head>
<body>
    <!-- Add your payment form HTML here -->
    <script>
        // Initialize Paystack's payment form
        var handler = PaystackPop.setup({
            key: <?php echo json_encode($paystack_public_key); ?>,
            email: '<?php echo $_POST['email']; ?>',
            amount: <?php echo $amount; ?>,
            callback: function (response) {
                // Handle the payment callback
                window.location.href = "<?php echo $callback_url; ?>?reference=" + response.reference;
            },
            onClose: function () {
                // Handle the case when the user closes the payment form
                alert('Payment canceled.');
            }
        });
        // Open Paystack's payment form when the submit button is clicked
        document.getElementById('pay-button').onclick = function () {
            handler.openIframe();
        };
    </script>
</body>
</html>