{"id":29525,"date":"2021-06-17T14:09:00","date_gmt":"2021-06-17T11:09:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29525"},"modified":"2021-10-17T16:16:15","modified_gmt":"2021-10-17T13:16:15","slug":"una-guia-para-la-integracion-de-stripe-en-un-sitio-web-con-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/una-guia-para-la-integracion-de-stripe-en-un-sitio-web-con-php\/","title":{"rendered":"Una gu\u00eda para la integraci\u00f3n de Stripe en un sitio web con PHP"},"content":{"rendered":"<p>Si est\u00e1 ejecutando un sitio web, cobrando un pago en l\u00ednea, probablemente haya o\u00eddo hablar de <strong>Stripe Payment Gateway<\/strong>. Con Stripe, se puede aceptar el pago con tarjeta de cr\u00e9dito o d\u00e9bito. Esta es una forma m\u00e1s conveniente de pagar en l\u00ednea para sus clientes. En este art\u00edculo, estudiamos la integraci\u00f3n de Stripe al sitio web con PHP.<\/p>\n<h3>\u00bfPor qu\u00e9 deber\u00eda utilizar Stripe Payment Gateway?<\/h3>\n<p><a href=\"https:\/\/stripe.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Stripe<\/a> es una de las pasarelas de pago m\u00e1s populares y seguras de Internet. Los datos de la tarjeta del usuario est\u00e1n siempre seguros con los pagos de Stripe. De hecho, en el proceso de compra de Stripe, proporcionan elementos generados donde un usuario debe ingresar los detalles de la tarjeta. Stripe genera los elementos para ingresar los detalles de la tarjeta en tiempo de ejecuci\u00f3n, lo que hace que esta puerta de enlace sea m\u00e1s segura.<\/p>\n<p>Despu\u00e9s de ingresar los detalles de la tarjeta, Stripe genera un token que se utilizar\u00e1 para cargar el pago con la tarjeta. Como resultado, no es necesario almacenar los datos de la tarjeta en absoluto.<\/p>\n<p>Dicho esto, echemos un vistazo a la integraci\u00f3n de Stripe en un sitio web usando PHP.<\/p>\n<h3>Obtenga claves de API para la integraci\u00f3n de Stripe<\/h3>\n<p>Para comenzar, debe tener una <a href=\"https:\/\/dashboard.stripe.com\/login\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cuenta de Stripe<\/a>. Para integrar Stripe Gateway en su aplicaci\u00f3n, necesita obtener su clave secreta Stripe y su clave publicable.<\/p>\n<p>Inicie sesi\u00f3n en su panel de Stripe. Obtendr\u00e1 esas claves de <strong>Desarrolladores-&gt; Claves de API<\/strong>. Le recomiendo que primero pruebe las transacciones de pago con el modo de prueba. Si todo funciona bien, pase al modo en vivo. As\u00ed que toma las claves API para el modo de prueba.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20173-6081c7d230f6d.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-20173-6081c7d230f6d.png\" alt=\"Una gu\u00eda para la integraci\u00f3n de Stripe en un sitio web con PHP\" ><\/a><\/p>\n<h3>Formulario de pago de Stripe<\/h3>\n<p>Siempre que integremos una pasarela de pago en el sitio web, necesitamos almacenar los detalles de la transacci\u00f3n en la base de datos. As\u00ed que creemos una <code>payments<\/code>tabla usando la siguiente consulta SQL.<\/p>\n<pre><code>CREATE TABLE `payments` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`payment_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<p>A continuaci\u00f3n, cree un formulario de pago. Como mencion\u00e9 anteriormente, Stripe genera elementos de tarjeta para ti. Generaremos estos elementos en el formulario de pago siguiendo la <a href=\"https:\/\/stripe.com\/docs\/payments\/cards\/collecting\/web\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n de Stripe<\/a>.<\/p>\n<p>Cree el <code>index.html<\/code>archivo y coloque el siguiente c\u00f3digo en \u00e9l.<\/p>\n<pre><code>&lt;link rel=\"stylesheet\" href=\"style.css\" \/&gt;\n&lt;script src=\"https:\/\/js.stripe.com\/v3\/\"&gt;&lt;\/script&gt;\n&lt;form action=\"charge.php\" method=\"post\" id=\"payment-form\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-row\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" name=\"amount\" placeholder=\"Enter Amount\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"card-element\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Credit or debit card\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div id=\"card-element\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!-- A Stripe Element will be inserted here. --&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!-- Used to display form errors. --&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div id=\"card-errors\" role=\"alert\"&gt;&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;button&gt;Submit Payment&lt;\/button&gt;\n&lt;\/form&gt;\n&lt;script src=\"card.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>Agregue un poco de estilo al formulario usando el siguiente c\u00f3digo en el <code>style.css<\/code>archivo.<\/p>\n<pre><code>.StripeElement {\n\u00a0\u00a0\u00a0\u00a0box-sizing: border-box;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0height: 40px;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0padding: 10px 12px;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0border: 1px solid transparent;\n\u00a0\u00a0\u00a0\u00a0border-radius: 4px;\n\u00a0\u00a0\u00a0\u00a0background-color: white;\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0box-shadow: 0 1px 3px 0 #e6ebf1;\n\u00a0\u00a0\u00a0\u00a0-webkit-transition: box-shadow 150ms ease;\n\u00a0\u00a0\u00a0\u00a0transition: box-shadow 150ms ease;\n}\n\u00a0\u00a0\n.StripeElement--focus {\n\u00a0\u00a0\u00a0\u00a0box-shadow: 0 1px 3px 0 #cfd7df;\n}\n\u00a0\u00a0\n.StripeElement--invalid {\n\u00a0\u00a0\u00a0\u00a0border-color: #fa755a;\n}\n\u00a0\u00a0\n.StripeElement--webkit-autofill {\n\u00a0\u00a0\u00a0\u00a0background-color: #fefde5 !important;\n}<\/code><\/pre>\n<p>Despu\u00e9s de esto, para generar el elemento de tarjeta y stripeToken, debe agregar el siguiente c\u00f3digo JavaScript en el <code>card.js<\/code>archivo. Este c\u00f3digo JavaScript tambi\u00e9n valida los detalles de la tarjeta.<\/p>\n<pre><code>\/\/ Create a Stripe client.\nvar stripe = Stripe('PUBLISHABLE_KEY');\n\u00a0\u00a0\n\/\/ Create an instance of Elements.\nvar elements = stripe.elements();\n\u00a0\u00a0\n\/\/ Custom styling can be passed to options when creating an Element.\n\/\/ (Note that this demo uses a wider set of styles than the guide below.)\nvar style = {\n\u00a0\u00a0\u00a0\u00a0base: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0color: '#32325d',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fontFamily: '\"Helvetica Neue\", Helvetica, sans-serif',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fontSmoothing: 'antialiased',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fontSize: '16px',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'::placeholder': {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0color: '#aab7c4'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0},\n\u00a0\u00a0\u00a0\u00a0invalid: {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0color: '#fa755a',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0iconColor: '#fa755a'\n\u00a0\u00a0\u00a0\u00a0}\n};\n\u00a0\u00a0\n\/\/ Create an instance of the card Element.\nvar card = elements.create('card', {style: style});\n\u00a0\u00a0\n\/\/ Add an instance of the card Element into the `card-element` &lt;div&gt;.\ncard.mount('#card-element');\n\u00a0\u00a0\n\/\/ Handle real-time validation errors from the card Element.\ncard.addEventListener('change', function(event) {\n\u00a0\u00a0\u00a0\u00a0var displayError = document.getElementById('card-errors');\n\u00a0\u00a0\u00a0\u00a0if (event.error) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0displayError.textContent = event.error.message;\n\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0displayError.textContent = '';\n\u00a0\u00a0\u00a0\u00a0}\n});\n\u00a0\u00a0\n\/\/ Handle form submission.\nvar form = document.getElementById('payment-form');\nform.addEventListener('submit', function(event) {\n\u00a0\u00a0\u00a0\u00a0event.preventDefault();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0stripe.createToken(card).then(function(result) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (result.error) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Inform the user if there was an error.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var errorElement = document.getElementById('card-errors');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0errorElement.textContent = result.error.message;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Send the token to your server.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0stripeTokenHandler(result.token);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0});\n});\n\u00a0\u00a0\n\/\/ Submit the form with the token ID.\nfunction stripeTokenHandler(token) {\n\u00a0\u00a0\u00a0\u00a0\/\/ Insert the token ID into the form so it gets submitted to the server\n\u00a0\u00a0\u00a0\u00a0var form = document.getElementById('payment-form');\n\u00a0\u00a0\u00a0\u00a0var hiddenInput = document.createElement('input');\n\u00a0\u00a0\u00a0\u00a0hiddenInput.setAttribute('type', 'hidden');\n\u00a0\u00a0\u00a0\u00a0hiddenInput.setAttribute('name', 'stripeToken');\n\u00a0\u00a0\u00a0\u00a0hiddenInput.setAttribute('value', token.id);\n\u00a0\u00a0\u00a0\u00a0form.appendChild(hiddenInput);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Submit the form\n\u00a0\u00a0\u00a0\u00a0form.submit();\n}<\/code><\/pre>\n<p>Debe reemplazar el marcador de posici\u00f3n PUBLISHABLE_KEY con su clave real en el c\u00f3digo anterior.<\/p>\n<p>He agregado un estilo aleatorio al formulario. Puede ajustar el dise\u00f1o del formulario para que se adapte a su sitio web. Adem\u00e1s, Stripe ofrece diferentes dise\u00f1os de elementos de tarjeta. Lea m\u00e1s sobre esto en la <a href=\"https:\/\/stripe.com\/payments\/elements\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n<\/a>.<\/p>\n<p>Cuando el usuario env\u00eda un formulario con los detalles de la tarjeta, Stripe genera un token en segundo plano que se establecer\u00e1 como un campo oculto &#8216;token&#8217;. Este token se utilizar\u00e1 para cobrar un pago con tarjeta mediante Stripe SDK.<\/p>\n<p>Estamos publicando los datos del formulario en el <code>charge.php<\/code>. En este archivo PHP, cargaremos la tarjeta y ejecutaremos el pago.<\/p>\n<h3>Integraci\u00f3n de Stripe con Omnipay en PHP<\/h3>\n<p>Todos nos pusimos con la configuraci\u00f3n b\u00e1sica. Ahora, para cargar el pago con tarjeta, instale la <a href=\"https:\/\/github.com\/thephpleague\/omnipay-stripe\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">biblioteca Omnipay Stripe<\/a>. Abra la terminal en el directorio ra\u00edz de su proyecto y ejecute el siguiente comando:<\/p>\n<pre><code>composer require league\/omnipay omnipay\/stripe<\/code><\/pre>\n<p>Tras la instalaci\u00f3n de la biblioteca, cree un archivo config.php e inicialice el objeto de pago y la conexi\u00f3n a la base de datos.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\nuse OmnipayOmnipay;\n\u00a0\u00a0\u00a0\n\/\/ Connect with the database \n$db = new mysqli('MYSQL_HOST', 'MYSQL_DB_USERNAME', 'MYSQL_DB_PASSWORD', 'MYSQL_DB_NAME');\n\u00a0\u00a0\u00a0\u00a0\nif ($db-&gt;connect_errno) {\n\u00a0\u00a0\u00a0\u00a0die(\"Connect failed: \". $db-&gt;connect_error);\n}\n\u00a0\u00a0\u00a0\n$gateway = Omnipay::create('Stripe');\n$gateway-&gt;setApiKey('SECRET_KEY_HERE');<\/code><\/pre>\n<p>Aseg\u00farese de reemplazar todos los marcadores de posici\u00f3n con los valores reales. A continuaci\u00f3n, <code>charge.php<\/code>escriba el c\u00f3digo de la siguiente manera.<\/p>\n<pre><code>&lt;?php\nrequire_once \"config.php\";\n\u00a0\u00a0\u00a0\nif (isset($_POST['stripeToken']) &amp;&amp; !empty($_POST['stripeToken'])) {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$token = $_POST['stripeToken'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $gateway-&gt;purchase([\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'token' =&gt; $token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0])-&gt;send();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($response-&gt;isSuccessful()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ payment was successful: update database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_payment_data = $response-&gt;getData();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$payment_id = $arr_payment_data['id'];\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 payment_id = '\".$payment_id.\"'\");\n\u00a0\u00a0\u00a0\u00a0\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(payment_id, amount, currency, payment_status) VALUES('$payment_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 \"Payment is successful. Your payment id is: \". $payment_id;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ payment failed: display message to customer\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>Hemos terminado con la parte de codificaci\u00f3n. Contin\u00fae y pruebe los pagos de la zona de pruebas. Stripe proporciona <a href=\"https:\/\/stripe.com\/docs\/testing\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">detalles de la tarjeta ficticia<\/a> para probar el pago.<\/p>\n<p>Siempre que decida comenzar a funcionar, solo necesita cambiar su clave secreta y publicable con las credenciales en vivo.<\/p>\n<p>Espero que pueda aprender sobre la integraci\u00f3n de Stripe en un sitio web con PHP. Me gustar\u00eda escuchar sus pensamientos y 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\/acepte-el-pago-con-tarjeta-de-credito-utilizando-authorize-net-payment-gateway-en-php\/\" title=\"Acepte el pago con tarjeta de cr\u00e9dito utilizando la pasarela de pago Authorize.net en PHP\">Acepte el pago con tarjeta de cr\u00e9dito utilizando la pasarela de pago Authorize.net en PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-configurar-pagos-recurrentes-en-authorize-net\/\" title=\"C\u00f3mo configurar pagos recurrentes en Authorize.net\">C\u00f3mo configurar pagos recurrentes en Authorize.net<\/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>\u00bfEst\u00e1 buscando la integraci\u00f3n de Stripe en su sitio web? Con Stripe, uno puede aceptar pagos en l\u00ednea a trav\u00e9s de tarjetas de cr\u00e9dito o d\u00e9bito. En este art\u00edculo, le mostramos c\u00f3mo aceptar pagos con tarjeta usando Stripe con PHP en su sitio web.<\/p>\n","protected":false},"author":1,"featured_media":21618,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[271],"tags":[849],"class_list":["post-29525","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\/29525","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=29525"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/29525\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21618"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=29525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=29525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=29525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}