✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Acepte el pago con tarjeta de crédito utilizando Authorize.Net Payment Gateway en PHP

86

¿Quiere integrar una opción de pago con tarjeta de crédito en su sitio web? En caso afirmativo, Authorize.Net es una buena opción para usted. Fundada en 1996, esta es una de las pasarelas de pago más populares en Internet.

Para una tienda en línea, las tarjetas de crédito se utilizan ampliamente para aceptar pagos. Los clientes prefieren pagar con tarjetas de crédito para comprar productos en línea. En su tienda, debe dar la opción de pago con tarjeta de crédito. En este artículo, le muestro cómo integrar la pasarela de pago Authorize.Net que le permitirá recibir pagos con tarjeta de crédito.

Siempre que agreguemos pasarelas de pago, primero debemos probar las transacciones en el modo sandbox. Una vez que los pagos de prueba funcionen correctamente, puede optar por la versión en vivo.

Para comenzar con Authorize.Net, primero cree una cuenta de espacio aislado. Al crear la cuenta, copie la identificación de inicio de sesión y la clave de transacción. Puede obtener estas claves de API en Cuenta-> Credenciales y claves de API. Consulte la captura de pantalla a continuación.

Acepte el pago con tarjeta de crédito utilizando Authorize.Net Payment Gateway en PHP

En la página siguiente, obtendrá su ‘ID de inicio de sesión de API’. Cree una clave de transacción desde la sección ‘Crear nuevas claves’ como se muestra en la siguiente captura de pantalla.

Acepte el pago con tarjeta de crédito utilizando Authorize.Net Payment Gateway en PHP

Empezando

Para integrar Authorize.Net, usaremos la biblioteca Omnipay, que proporciona una forma limpia y sencilla de integración de pagos. Instale la biblioteca Omnipay en su proyecto usando el comando:

composer require league/omnipay:^3

Instalará la biblioteca Omnipay. Además, debemos instalar el paquete Omnipay para Authorize.Net. Este paquete nos permite capturar el pago a través de la pasarela de pago Authorize.Net. Lea más sobre este paquete en su documentación. Ejecute el siguiente comando para instalar este paquete:

composer require "academe/omnipay-authorizenetapi: ~3.0"

Estamos listos con bibliotecas compatibles. Ahora, creemos un formulario simple para ingresar el monto y los detalles de la tarjeta. Estoy creando un index.phparchivo y agrego el siguiente HTML en él.

<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>

Al aceptar el pago en línea, debemos almacenar los detalles de la transacción en la base de datos. Por lo tanto, para almacenar la información de la transacción, cree una tabla de ‘pagos’ en la base de datos utilizando la siguiente consulta.

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;

Acepte el pago con tarjeta de crédito mediante Authorize.Net

Ha copiado las claves API de su cuenta Authorize.Net en los pasos anteriores. Es hora de agregar estas claves al código PHP. Guarde estas credenciales en el config.phparchivo. También estoy agregando la conexión de la base de datos a este archivo.

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'

Reemplace los marcadores de posición con los valores reales. Mientras probamos los pagos en la zona de pruebas, pasé fiel al método setTestMode. Cuando esté listo para pasar a la producción, elimine / comente esta línea.

En el formulario que hemos creado anteriormente, lo configuro charge.phpcomo la URL de acción. Significa que el código real que captura el pago con tarjeta de crédito irá dentro de este archivo.

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();
    }
}

Ahora puede continuar y probar un pago. Obtenga estos números de tarjeta de crédito de prueba para probar el pago. En la respuesta exitosa, debe obtener su ID de transacción.

El propietario puede ver las transacciones en el panel de Authorize.Net. Encontrará las transacciones en ‘Transacciones sin liquidar’. Authorize.Net luego liquida la transacción por su cuenta y le notifica por correo electrónico.

Acepte el pago con tarjeta de crédito utilizando Authorize.Net Payment Gateway en PHP

Espero que comprenda cómo aceptar pagos con tarjeta de crédito mediante la pasarela de pago Authorize.Net. Comparta sus pensamientos o sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More