Acepte el pago con tarjeta de crédito utilizando Authorize.Net Payment Gateway en PHP
¿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.
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.
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.php
archivo 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.php
archivo. 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.php
como 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.
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
- Integración de la pasarela de pago de PayPal en PHP mediante la API REST de PayPal
- Una guía para la integración de Stripe en un sitio web con PHP
- Acepte pagos con tarjeta de crédito usando Paypal Payments Pro en PHP