{"id":29427,"date":"2021-06-15T12:19:00","date_gmt":"2021-06-15T09:19:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29427"},"modified":"2021-10-17T16:17:19","modified_gmt":"2021-10-17T13:17:19","slug":"acepte-el-pago-con-tarjeta-de-credito-utilizando-authorize-net-payment-gateway-en-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/acepte-el-pago-con-tarjeta-de-credito-utilizando-authorize-net-payment-gateway-en-php\/","title":{"rendered":"Acepte el pago con tarjeta de cr\u00e9dito utilizando Authorize.Net Payment Gateway en PHP"},"content":{"rendered":"<p>\u00bfQuiere integrar una opci\u00f3n de pago con tarjeta de cr\u00e9dito en su sitio web? En caso afirmativo, Authorize.Net es una buena opci\u00f3n para usted. Fundada en 1996, esta es una de las pasarelas de pago m\u00e1s populares en Internet.<\/p>\n<p>Para una tienda en l\u00ednea, las tarjetas de cr\u00e9dito se utilizan ampliamente para aceptar pagos. Los clientes prefieren pagar con tarjetas de cr\u00e9dito para comprar productos en l\u00ednea. En su tienda, debe dar la opci\u00f3n de pago con tarjeta de cr\u00e9dito. En este art\u00edculo, le muestro c\u00f3mo integrar la pasarela de pago Authorize.Net que le permitir\u00e1 recibir pagos con tarjeta de cr\u00e9dito.<\/p>\n<p>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\u00f3n en vivo.<\/p>\n<p>Para comenzar con Authorize.Net, primero cree una <a href=\"https:\/\/developer.authorize.net\/hello_world\/sandbox\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cuenta de espacio aislado<\/a>. Al crear la cuenta, copie la identificaci\u00f3n de inicio de sesi\u00f3n y la clave de transacci\u00f3n. Puede obtener estas claves de API en <strong>Cuenta-&gt; Credenciales y claves de API<\/strong>. Consulte la captura de pantalla a continuaci\u00f3n.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20201-6081cc62a61f7.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20201-6081cc62a61f7.png\" alt=\"Acepte el pago con tarjeta de cr\u00e9dito utilizando Authorize.Net Payment Gateway en PHP\" ><\/a><\/p>\n<p>En la p\u00e1gina siguiente, obtendr\u00e1 su &#8216;ID de inicio de sesi\u00f3n de API&#8217;. Cree una clave de transacci\u00f3n desde la secci\u00f3n &#8216;Crear nuevas claves&#8217; como se muestra en la siguiente captura de pantalla.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20201-6081cc632ae89.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20201-6081cc632ae89.png\" alt=\"Acepte el pago con tarjeta de cr\u00e9dito utilizando Authorize.Net Payment Gateway en PHP\" ><\/a><\/p>\n<h3>Empezando<\/h3>\n<p>Para integrar Authorize.Net, usaremos la biblioteca <a href=\"https:\/\/github.com\/thephpleague\/omnipay\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Omnipay<\/a>, que proporciona una forma limpia y sencilla de integraci\u00f3n de pagos. Instale la biblioteca Omnipay en su proyecto usando el comando:<\/p>\n<pre><code>composer require league\/omnipay:^3<\/code><\/pre>\n<p>Instalar\u00e1 la biblioteca Omnipay. Adem\u00e1s, debemos instalar el paquete Omnipay para Authorize.Net. Este paquete nos permite capturar el pago a trav\u00e9s de la pasarela de pago Authorize.Net. Lea m\u00e1s sobre este paquete en su <a href=\"https:\/\/github.com\/academe\/omnipay-authorizenetapi\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n<\/a>. Ejecute el siguiente comando para instalar este paquete:<\/p>\n<pre><code>composer require \"academe\/omnipay-authorizenetapi: ~3.0\"<\/code><\/pre>\n<p>Estamos listos con bibliotecas compatibles. Ahora, creemos un formulario simple para ingresar el monto y los detalles de la tarjeta. Estoy creando un <code>index.php<\/code>archivo y agrego el siguiente HTML en \u00e9l.<\/p>\n<pre><code>&lt;form action=\"charge.php\" method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"amount\" placeholder=\"Enter Amount\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"cc_number\" placeholder=\"Card Number\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"expiry_month\" placeholder=\"Month\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"expiry_year\" placeholder=\"Year\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"cvv\" placeholder=\"CVV\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Al aceptar el pago en l\u00ednea, debemos almacenar los detalles de la transacci\u00f3n en la base de datos. Por lo tanto, para almacenar la informaci\u00f3n de la transacci\u00f3n, cree una tabla de &#8216;pagos&#8217; en la base de datos utilizando la siguiente consulta.<\/p>\n<pre><code>CREATE TABLE `payments` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`transaction_id` varchar(255) NOT NULL,\n\u00a0`amount` float(10,2) NOT NULL,\n\u00a0`currency` varchar(255) NOT NULL,\n\u00a0`payment_status` varchar(255) NOT NULL,\n\u00a0`captured_at` datetime NOT NULL DEFAULT current_timestamp(),\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;<\/code><\/pre>\n<h3>Acepte el pago con tarjeta de cr\u00e9dito mediante Authorize.Net<\/h3>\n<p>Ha copiado las claves API de su cuenta Authorize.Net en los pasos anteriores. Es hora de agregar estas claves al c\u00f3digo PHP. Guarde estas credenciales en el <code>config.php<\/code>archivo. Tambi\u00e9n estoy agregando la conexi\u00f3n de la base de datos a este archivo.<\/p>\n<p><strong>config.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\n\/\/ Connect with the database\n$db = new mysqli('localhost', 'MYSQL_DB_USERNAME', 'MYSQL_DB_PASSWORD', 'MYSQL_DB_NAME');\n\u00a0\u00a0\nif ($db-&gt;connect_errno) {\n\u00a0\u00a0\u00a0\u00a0die(\"Connect failed: \". $db-&gt;connect_error);\n}\n\u00a0\u00a0\n$gateway = OmnipayOmnipay::create('AuthorizeNetApi_Api');\n$gateway-&gt;setAuthName('PASTE_ANET_API_LOGIN_ID');\n$gateway-&gt;setTransactionKey('PASTE_ANET_TRANSACTION_KEY');\n$gateway-&gt;setTestMode(true); \/\/comment this line when move to 'live'<\/code><\/pre>\n<p>Reemplace los marcadores de posici\u00f3n con los valores reales. Mientras probamos los pagos en la zona de pruebas, pas\u00e9 fiel al m\u00e9todo <code>setTestMode<\/code>. Cuando est\u00e9 listo para pasar a la producci\u00f3n, elimine \/ comente esta l\u00ednea.<\/p>\n<p>En el formulario que hemos creado anteriormente, lo configuro <code>charge.php<\/code>como la URL de acci\u00f3n. Significa que el c\u00f3digo real que captura el pago con tarjeta de cr\u00e9dito ir\u00e1 dentro de este archivo.<\/p>\n<p><strong>charge.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"config.php\";\n\u00a0\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$creditCard = new OmnipayCommonCreditCard([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'number' =&gt; $_POST['cc_number'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryMonth' =&gt; $_POST['expiry_month'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expiryYear' =&gt; $_POST['expiry_year'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'cvv' =&gt; $_POST['cvv'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Generate a unique merchant site transaction ID.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transactionId = rand(100000000, 999999999);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $gateway-&gt;authorize([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'amount' =&gt; $_POST['amount'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'currency' =&gt; 'USD',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'transactionId' =&gt; $transactionId,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'card' =&gt; $creditCard,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])-&gt;send();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($response-&gt;isSuccessful()) {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Captured from the authorization response.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transactionReference = $response-&gt;getTransactionReference();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $gateway-&gt;capture([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'amount' =&gt; $_POST['amount'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'currency' =&gt; 'USD',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'transactionReference' =&gt; $transactionReference,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])-&gt;send();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transaction_id = $response-&gt;getTransactionReference();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$amount = $_POST['amount'];\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Insert transaction data into the database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$isPaymentExist = $db-&gt;query(\"SELECT * FROM payments WHERE transaction_id = '\".$transaction_id.\"'\");\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($isPaymentExist-&gt;num_rows == 0) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$insert = $db-&gt;query(\"INSERT INTO payments(transaction_id, amount, currency, payment_status) VALUES('$transaction_id', '$amount', 'USD', 'Captured')\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Your payment transaction id: \". $transaction_id;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ not successful\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $response-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Ahora puede continuar y probar un pago. Obtenga estos <a href=\"https:\/\/developer.authorize.net\/hello_world\/testing_guide\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">n\u00fameros de tarjeta de cr\u00e9dito<\/a> de prueba para probar el pago. En la respuesta exitosa, debe obtener su ID de transacci\u00f3n.<\/p>\n<p>El propietario puede ver las transacciones en el panel de Authorize.Net. Encontrar\u00e1 las transacciones en &#8216;Transacciones sin liquidar&#8217;. Authorize.Net luego liquida la transacci\u00f3n por su cuenta y le notifica por correo electr\u00f3nico.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20201-6081cc632ae89.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20201-6081cc632ae89.png\" alt=\"Acepte el pago con tarjeta de cr\u00e9dito utilizando Authorize.Net Payment Gateway en PHP\" ><\/a><\/p>\n<p>Espero que comprenda c\u00f3mo aceptar pagos con tarjeta de cr\u00e9dito mediante la pasarela de pago Authorize.Net. Comparta sus pensamientos o sugerencias en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/integracion-de-la-pasarela-de-pago-de-paypal-en-php-mediante-la-api-rest-de-paypal\/\" title=\"Integraci\u00f3n de la pasarela de pago de PayPal en PHP mediante la API REST de PayPal\">Integraci\u00f3n de la pasarela de pago de PayPal en PHP mediante la API REST de PayPal<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/una-guia-para-la-integracion-de-stripe-en-un-sitio-web-con-php\/\" title=\"Una gu\u00eda para la integraci\u00f3n de Stripe en un sitio web con PHP\">Una gu\u00eda para la integraci\u00f3n de Stripe en un sitio web con PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/acepte-pagos-con-tarjeta-de-credito-usando-paypal-payments-pro-en-php\/\" title=\"Acepte pagos con tarjeta de cr\u00e9dito usando Paypal Payments Pro en PHP\">Acepte pagos con tarjeta de cr\u00e9dito usando Paypal Payments Pro en PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este art\u00edculo, estudiamos c\u00f3mo integrar Authorize.net para aceptar pagos con tarjeta de cr\u00e9dito. Agregar la opci\u00f3n de pago con tarjeta de cr\u00e9dito es muy com\u00fan<\/p>\n","protected":false},"author":1,"featured_media":21609,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[271],"tags":[849],"class_list":["post-29427","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=29427"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29427\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21609"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=29427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=29427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=29427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}