¿Así que quieres aceptar tarjetas de crédito en línea?

Hasta hace poco, aceptar tarjetas de crédito en un sitio web era costoso y complicado. Pero eso fue antes de Stripe: una compañía de procesamiento de tarjetas de crédito radicalmente diferente e increíblemente increíble. Hoy, le mostraré cómo comenzar a aceptar tarjetas en 30 minutos o menos, sin gastar un centavo..

Tutorial republicado

Cada pocas semanas, revisamos algunas de las publicaciones favoritas de nuestros lectores de toda la historia del sitio. Este tutorial se publicó por primera vez en junio de 2012..


La forma en que las cosas solían ser

Sin Stripe, aceptar tarjetas de crédito en un sitio web es una tarea enorme. Primero, necesita abrir una "cuenta de comerciante", que es como una cuenta bancaria regular, pero con más tarifas. Entonces, necesita una "pasarela de pago", ya que el procesamiento de la tarjeta de crédito aparentemente tiene lugar en una dimensión separada donde los banqueros gobiernan con mano de hierro y Lindsey Lohan tiene una exitosa carrera como actriz. Y luego vienen las sanguijuelas: tarifa mensual de $ 25. Tarifa de instalación de $ 99. Cuota anual de $ 50. $ 0.35 tarifa de transacción fallida (¡USTED paga cuando la tarjeta de su cliente no se tramita!). $ 0.25 + 2.0% tarifa de transacción exitosa. Tarifa de $ 2.00 por lote. $ 5.00 la tarifa de papi necesita un nuevo porsche. Es ridículo. El procesador de tarjetas más popular es Authorize.net, y la gente de esa compañía (y sus muchos revendedores) pasan todos los días pensando en formas nuevas y ridículas de ganar su dinero..


Entrar raya

La configuración tarda unos cinco minutos.

Desafortunadamente es Es ilegal secuestrar al CEO de Authorize.net, envolverlo en salsa barbacoa y dejarlo en un pozo de tejones de miel. Pero, puedes hacer la siguiente mejor cosa: no use su servicio. Cambiar a raya. No necesitarás una cuenta de comerciante o una pasarela de pago. Stripe depositará dinero en alguna cuenta bancaria que te gusta. Hay cero tarifas. La configuración tarda unos cinco minutos. (Sí, en serio). Y usted paga exactamente una cosa: 2.9% + $ 0.30 por cada transacción con tarjeta exitosa. (Entonces, si estás vendiendo algo por $ 30, mantienes $ 28.83, y Stripe obtiene $ 1.17). El sitio web es simple e intuitivo y el personal es muy útil. El único inconveniente es que Stripe no está disponible actualmente fuera de los Estados Unidos. (Nota: Stripe SI acepta tarjetas de crédito del extranjero; es solo que no puede registrarse en una cuenta de Stripe fuera de los EE. UU.) Están trabajando para expandirse a otros países.

El resto de este tutorial detallará cómo implementar Stripe en su sitio web con PHP y Javascript (jQuery). El servicio también tiene API para Ruby, Python, Java y otras plataformas. Aunque parezca que hay mucho trabajo por delante, realmente no lo hay; Estarás en marcha en muy poco tiempo. Empecemos:


Paso 0: instalar un certificado SSL

Estamos tratando con la información de la tarjeta de crédito, así que, por supuesto, tenemos que asegurar la conexión del usuario a nuestro servidor. Lo hacemos utilizando un certificado SSL y no es opcional. No solo los usuarios esperan ver el protocolo "https: //" en una página de pedido, sino que Stripe lo requiere. Pero no te preocupes: implementar SSL es muy simple. Casi todos los proveedores de alojamiento ofrecen la instalación automática de certificados SSL. Simplemente compre el certificado a través de su proveedor y ellos lo instalarán y configurarán automáticamente para usted. No necesitas hacer nada más a tu sitio. Si su formulario de pedido se encuentra en http://mydomain.com/order.php, simplemente envíe al cliente a https://mydomain.com/order.php en su lugar y la conexión se protegerá con su nuevo certificado SSL. Eso es!

Nota: hay una excepción Si la página de su pedido carga recursos como hojas de estilo, scripts o imágenes usando una URL absoluta (en lugar de relativa), deberá asegurarse de que esas URL utilicen el protocolo "https: //". Por ejemplo, si incluye una imagen en su página de pedido seguro como esta, recibirá una advertencia en el navegador de que la página contiene elementos seguros e inseguros:

 

Para solucionar este problema, cargue la imagen desde una URL segura, como esta:

 

No tiene que preocuparse por este problema para las URL relativas (como "... /images/someImage.jpg") porque su servidor cargará automáticamente estos elementos de forma segura.


Paso 1: Crea una cuenta

Visita Stripe.com y crea una nueva cuenta. Una vez que haya pasado la solicitud inicial de nombre de usuario / contraseña, haga clic en el menú "Su cuenta" en la parte superior derecha y abra el panel "Configuración de la cuenta", que se muestra a continuación. Primero, asegúrese de configurar un buen "Descriptor de Declaración". Esto es lo que los clientes verán en sus estados de cuenta de tarjeta de crédito. Un buen descriptor ayuda al cliente a recordar lo que compró para no confundir su transacción con fraude y cancelar el cargo. (Cuando esto sucede, se llama "contracargo" y pagará una tarifa de $ 15 además de perder la venta, así que asegúrese de que su descriptor esté configurado). A continuación, especifique la cuenta bancaria en la que desea que se deposite su dinero . Eres bienvenido a usar el mío. Y, por último, eche un vistazo a la pestaña "Claves de API". Los usaremos en breve, así que manténgalos a la mano.


Paso 2: Crea tu forma de pago

Lo siguiente que necesitamos es un formulario que nuestros clientes completen para realizar un pedido de tarjeta de crédito con nosotros. Hoy, usaremos esta página de PHP muy simplificada, llamada "buy.php":

       

Formulario de pago

Nombre de pila:

Apellido:

Dirección de correo electrónico:

Número de tarjeta de crédito:

Fecha de caducidad:

CVC:

Hay tres cosas a tener en cuenta sobre el fragmento de código anterior.

  1. Primero, hemos establecido la acción del formulario en "javascript:" en lugar de proporcionar una ruta a un script del lado del servidor. (Verás por qué en un minuto).
  2. En segundo lugar, hay un breve fragmento de PHP que rellena automáticamente nuestro campo de año de vencimiento con los próximos 20 años para que no tengamos que actualizarlo manualmente en el futuro..
  3. En tercer lugar, ninguno de los campos de formulario tiene un conjunto de parámetros de "nombre". Esto es crucial porque evitará que el valor del campo (como el número de la tarjeta de crédito) se envíe a nuestro servidor cuando se envíe el formulario. Hablaremos de por qué esto es importante en solo un minuto..

Cuánta información debo recopilar?

Las únicas cosas que absolutamente debe Hay que cobrar una tarjeta de crédito son el número de la tarjeta y la fecha de vencimiento. Pero siempre debes recopilar al menos alguna información adicional. A continuación, se explica por qué: si un cliente cuestiona el cargo en su tarjeta, se le pedirá que demuestre que, de hecho, hizo un pedido con usted..

Cuanta más información recopile, más fácil será demostrar que el cliente (en lugar de un ladrón de identidad) realizó el pedido en su sitio..


¿Qué sigue ?: El panorama general

Bien, tenemos SSL instalado y un formulario de pago listo para usar. Supongamos que vamos a cobrarle al cliente $ 20.00 por este pedido. (En realidad, calcularía el total en función de lo que el cliente ordenó, etc. Eso depende de usted). Cuando llena el formulario y presiona el botón Enviar, suceden tres cosas en este orden:

  1. Usando Javascript (jQuery), recopilamos el valor de cada campo de formulario. Pasamos esta información directamente al servidor de Stripe, usando Stripe.js.
  2. El servidor de Stripe se asegurará de que los datos de la tarjeta de crédito estén bien formados, preparará una transacción y nos enviará un "token de uso único".
  3. Pasamos el token a un script del lado del servidor en nuestro propio servidor, que se pone en contacto con Stripe nuevamente y activa el cargo real a la tarjeta de crédito. Eso es!

Por qué hacerlo de esta manera?

Seguridad. La información de la tarjeta de crédito del usuario nunca toca nuestro propio servidor. Lo pasamos directamente a Stripe en el lado del cliente usando Javascript. El servidor de Stripe toma esa información y prepara una transacción. El "token" que nos envía de vuelta NO contiene los detalles de la tarjeta de crédito, pero SÍ contiene una identificación que nos permite activar la transacción que Stripe ha preparado en su final. Por lo tanto, podemos pasar el token de manera segura a nuestro propio servidor sin arriesgar la seguridad de los datos de la tarjeta de crédito del usuario.

Nota: mientras tú puede usar Stripe sin el proceso de token, yo fuertemente desalentarlo Si pasa los detalles de la tarjeta de crédito en bruto a su propio servidor, debe ser extremadamente cuidadoso para protegerlos y hay muchas maneras de arruinarlos. Por ejemplo, los registros de errores del servidor podrían registrar fácilmente información confidencial, por lo que debe limpiarlos de forma segura y regular. Si está en un plan de alojamiento compartido, probablemente no tenga el control necesario para hacerlo. Además, si alguna vez se piratea tu servidor, los clientes tachados podrían ser demandados hasta el olvido. Y si haces algo De Verdad Estúpido como almacenar información de tarjeta sin cifrar en una base de datos, personalmente conduciré a tu casa y te golpearé con un cactus. Juegalo de forma segura; usar el proceso de token.


Paso 3: Recoge los valores del formulario

Cree un nuevo archivo Javascript, llamado "buy-controller.js". Comencemos a codificar ese archivo con algunas verificaciones básicas de validación:

 function showErrorDialogWithMessage (message) // Para el tutorial, solo haremos una alerta. Debe personalizar esta función para // presentar mensajes de error "bonitos" en su página. mensaje de alerta); // Vuelva a habilitar el botón de orden para que el usuario pueda intentar nuevamente $ ('# buy-submit-button'). RemoveAttr ("disabled");  $ (document) .ready (function () $ ('# buy-form'). submit (function (evento) // deshabilita inmediatamente el botón de envío para evitar que se doble $ ('# buy-submit-button' ) .attr ("deshabilitado", "deshabilitado"); var fName = $ ('# first-name'). val (); var lName = $ ('# last-name'). val (); var email = $ ('# email'). val (); var CardNumber = $ ('# card-number'). val (); var cardCVC = $ ('# card-security-code'). val (); // Primer y último campo de nombre: asegúrese de que no estén en blanco si (fName === "") showErrorDialogWithMessage ("Por favor ingrese su nombre". "Por favor, ingrese su apellido."); Volver; // Valide la dirección de correo electrónico: var emailFilter = /^([a-zA-Z0-9_\.\-◆)+\@([[azA- Z0-9 \ -]) + \.) + ([A-zA-Z0-9] 2,4) + $ /; if (email === "") showErrorDialogWithMessage ("Por favor ingrese su dirección de correo electrónico ";; así que asegúrese de que no estén en blanco si (cardNumber === "") showErrorDialogWithMessage ("Por favor, ingrese el número de su tarjeta."); regreso;  if (cardCVC === "") showErrorDialogWithMessage ("Por favor ingrese el código de seguridad de su tarjeta."); regreso;  // ¡Boom! Pasamos la validación básica, ¡así que estamos listos para enviar la información a // Stripe para crear un token! (Agregaremos este código pronto.)); );

A continuación, debemos agregar este nuevo archivo JavaScript a la Elemento de nuestra página "buy.php". También agregaremos "Stripe.js", que es un archivo alojado en el servidor de Stripe que nos permite contactar a Stripe desde el lado del cliente para pasar los detalles de la tarjeta de crédito y recibir nuestro token. (Tenga en cuenta que cargamos Stripe.js utilizando el protocolo "https: //"). Modifique el elemento de "buy.php" para verse así:

     

Claves API

Antes de que podamos enviar información a Stripe, tenemos que decirle a Stripe quiénes somos. Para hacer eso, usamos un par de "claves", que son cadenas únicas que identifican nuestra cuenta. Para ubicar estas claves, vaya al panel de configuración de su cuenta de Stripe y despliegue la pestaña de Claves de la API, que se muestra aquí:

Como puede ver, hay un total de cuatro teclas en dos conjuntos: "Test" y "Live". Utiliza el conjunto de pruebas durante el desarrollo para que puedas verificar tu código sin cargar ninguna tarjeta. Cuando esté listo para implementar un sitio web, simplemente reemplace las claves de prueba con las vivas. Hay dos claves en cada conjunto: "publicable" y "secreto". (Usaremos la clave "secreta" en nuestro script del lado del servidor una vez que hayamos recibido un token de Stripe). Por ahora, tome la clave de prueba publicable y agréguelo al elemento HEAD de "buy.php" de la siguiente manera:

      

Advertencia: DEBE incluir Stripe.js ANTES de establecer la clave publicable. Además, ¡tenga mucho cuidado de no llevar un sitio web en vivo sin cambiar a las teclas "en vivo"! Y, por último, asegúrese de mantener seguras y seguras sus claves secretas. secreto!


Paso 4: Solicitar un token

De regreso al final de "buy-controller.js", estamos listos para agregar el código que solicita un token de Stripe. Son sólo unas pocas líneas:

 // ¡Boom! Pasamos la validación básica, así que solicite un token de Stripe: Stripe.createToken (number: cardNumber, cvc: cardCVC, exp_month: $ ('# # expiration-month'). Val (), exp_year: $ ('# expiration- year '). val (), stripeResponseHandler); // Evita que la acción de envío predeterminada en el formulario devuelva false;

La función "createToken" (que se define en Stripe.js) acepta dos parámetros. El primero es un objeto con los detalles de la tarjeta de crédito. El segundo es el nombre de la función de devolución de llamada que se invocará cuando el servidor de Stripe termine de preparar la transacción y devuelva el token. En este caso, nuestra función de devolución de llamada se llama "stripeResponseHandler". Agreguemos esa función a la parte superior de "buy-controller.js":

 function stripeResponseHandler (estado, respuesta) if (response.error) // Stripe.js no pudo generar un token. El mensaje de error explicará por qué. // Por lo general, es porque el cliente escribió la información de su tarjeta. // Debe personalizar esto para presentar el mensaje de una manera bonita: alert (response.error.message);  else // Stripe.js generó un token con éxito. ¡Estamos listos para cargar la tarjeta! var token = response.id; var firstName = $ ("# first-name"). val (); var lastName = $ ("# last-name"). val (); var email = $ ("# email"). val (); // Necesitamos saber qué cantidad cobrar. Supongamos $ 20.00 para el tutorial. // Es obvio que calcularías esto por tu cuenta: var price = 20; // Haga la llamada al servidor-script para procesar el pedido. // Pasar el token y la información de forma no sensible. var request = $ .ajax (type: "POST", url: "pay.php", dataType: "json", data: "stripeToken": token, "firstName": firstName, "lastName": lastName, " correo electrónico ": correo electrónico," precio ": precio); request.done (function (msg) if (msg.result === 0) // Personalice esta sección para presentar un mensaje de éxito y mostrar lo // que se debe mostrar al usuario. alert ("La tarjeta de crédito fue cargada exitosamente! "); else // La tarjeta NO se cargó correctamente, pero tuvimos una interfaz con Stripe // muy bien. Probablemente haya un problema con la tarjeta de crédito del usuario. // Personalice esta sección para presentar una alerta de explicación de error (" La tarjeta de crédito del usuario falló. ");); request.fail (función (jqXHR, textStatus) // No pudimos hacer la llamada AJAX a pay.php. Algo está mal en nuestro final. // Esto normalmente no debería suceder, pero debemos manejarlo si sucede. Alerta ("Error: no se pudo llamar pay.php para procesar la transacción.");); 

Esta función primero verifica si hubo un error al crear el token. Si Stripe.js no puede devolver un token válido, generalmente es porque el cliente ingresó incorrectamente parte de la información de su tarjeta de crédito. Es posible que hayan escrito mal un número o hayan seleccionado la fecha de caducidad incorrecta. Afortunadamente, el mensaje de error que acompaña a la respuesta le dirá exactamente por qué falló la creación del token. Stripe garantiza que este mensaje de error es adecuado para la visualización, pero no es detallado. Espere ver cadenas como "fecha de caducidad no válida" o "CVC incorrecto" en lugar de oraciones completas.

Si, por otro lado, todo fue validado y Stripe creó un token, estamos listos para entregar ese token a nuestro script del lado del servidor y, de hecho, colocar el cargo. En el código anterior, estamos usando la función Ajax de jQuery para hacer eso. Pasamos el token, así como cierta información que podríamos querer registrar en una base de datos: el nombre y el correo electrónico del cliente. Finalmente, necesitamos saber cuánto dinero para cargar la tarjeta. Asumimos $ 20.00 hoy, pero pasarías un valor calculado de tu carrito de compras, etc. Tiramos toda esa información a un objeto JSON y hacemos la llamada Ajax a nuestro script del lado del servidor, "pay.php" ( que vamos a crear a continuación). Luego, simplemente observamos la respuesta y presentamos al usuario un mensaje de error o éxito. Obviamente, personalizaría este código para adaptarse al diseño de su sitio..


Paso 5: Crear una secuencia de comandos del lado del servidor

Lo único que queda por hacer es crear el script PHP del lado del servidor que realmente active el cargo en la tarjeta de nuestro cliente. Primero, necesitaremos la librería PHP de Stripe. Para descargarlo, vaya al sitio web de Stripe, haga clic en el enlace "Documentación" en la parte superior derecha y luego seleccione la sección "Bibliotecas API". (O puede ir directamente allí haciendo clic aquí). Desplácese hacia abajo en la página hasta que vea la sección de PHP, que se ve así:

Descarga la última versión y descomprime. Verás dos elementos: "Stripe.php" y una carpeta llamada "Stripe" que contiene un montón de otros archivos PHP. Coloque estos dos elementos en la carpeta de su sitio web.

Ahora, crea un nuevo archivo llamado "pay.php". Comenzaremos a codificar este archivo con algunas cosas básicas:

  1, 'errorMessage' => $ mensaje); echo json_encode ($ a);  // Facturación con tarjeta de crédito require_once ('Stripe.php'); // ¡Cambia este camino a donde pongas la biblioteca PHP de raya! $ trialAPIKey = "oRU5rYklVzp94Ab0RbBTP0soVdlaEtvm"; // ¡Estas son las claves SECRETAS! $ liveAPIKey = "4BYrmtvwLb8iiiq9KIdbnRh5KCeSfPsX"; Stripe :: setApiKey ($ trialAPIKey); // Cambiar para cambiar entre los entornos activos y de prueba // Obtener todos los valores de la forma $ token = $ _POST ['stripeToken']; $ email = $ _POST ['email']; $ firstName = $ _POST ['firstName']; $ lastName = $ _POST ['lastName']; $ precio = $ _POST ['precio']; $ priceInCents = $ price * 100; // Raya requiere que la cantidad se exprese en centavos

En la parte superior, tenemos una función simple a la que llamaremos cuando nuestra secuencia de comandos encuentre un error. Devuelve un objeto JSON con dos elementos: "resultado" y "errorMessage". Este objeto JSON se envía de vuelta a "buy-controller.js" (donde usamos la función AJAX de jQuery para llamar a este script del lado del servidor). Allí, podemos inspeccionar el valor del "resultado" para ver qué sucedió. Si es 0, el script de pago se completó correctamente. Si es 1, el script encuentra un error y podemos usar el elemento "errorMessage" para informar lo que le sucedió al usuario.

A continuación, traemos la biblioteca PHP de Stripe que descargamos anteriormente. No hay nada demasiado complicado aquí; solo asegúrese de actualizar la ruta en la declaración de requerimiento a la ubicación relativa de la biblioteca PHP de banda. Después de eso, tenemos nuestros dos SECRETO Claves API. Llamamos a la función "setApiKey" (que forma parte de la biblioteca PHP de Stripe) y le pasamos nuestra clave de prueba. Combinada con la clave "publicable" que establecimos anteriormente, Stripe ahora tiene toda la información que necesita para verificar nuestra identidad y asociar esta transacción con nuestra cuenta. Por supuesto, cuando tomamos el sitio web en vivo, cambiaríamos esta declaración para usar $ liveAPIKey!

Advertencia: ¡No olvide cambiar a las claves de LIVE API cuando publique su sitio! Debe cambiar tanto la clave "publicable" en el elemento HEAD de "buy.php" como la clave "secreta", que aparece en "pay.php", arriba.

Y, finalmente, tomamos todos los datos que pasamos de la llamada AJAX en "buy-controller.js". Tenga en cuenta que Stripe nos obliga a especificar el monto del cargo en centavos. Aquí, pasamos el valor en dólares, por lo que multiplicamos por 100 para convertirlo en centavos..

En realidad cargar la tarjeta

Aquí está el resto del código para pay.php:

 intente // Debemos tener toda esta información para continuar. Si falta, balk. if (! isset ($ token)) arroja una nueva excepción ("Error del sitio web: el token Stripe no se generó correctamente o se pasó al script del manejador de pagos. Su tarjeta de crédito NO fue cargada. Informe este problema al webmaster."); if (! isset ($ email)) arroje una nueva excepción ("Error del sitio web: La dirección de correo electrónico era NULA en la secuencia de comandos del manejador de pagos. Su tarjeta de crédito NO fue cargada. Informe este problema al administrador de web."); if (! isset ($ firstName)) lanza una nueva excepción ("Error del sitio web: El nombre fue NULO en la secuencia de comandos del manejador de pagos. Su tarjeta de crédito NO fue cargada. Informe este problema al administrador de web."); if (! isset ($ lastName)) lanza una nueva excepción ("Error del sitio web: El apellido fue NULO en la secuencia de comandos del manejador de pagos. Su tarjeta de crédito NO fue cargada. Por favor, informe este problema al administrador de web."); if (! isset ($ priceInCents)) lanza una nueva excepción ("Error del sitio web: el precio era NULL en la secuencia de comandos del manejador de pagos. Su tarjeta de crédito NO fue cargada. Informe este problema al administrador de web."); intente // crear el cargo en los servidores de Stripe. ¡ESTO CARGARÁ LA TARJETA! $ charge = Stripe_Charge :: create (array ("amount" => $ priceInCents, "currency" => "usd", "card" => $ token, "description" => $ email)); // ¡Si no se lanzó ninguna excepción, el cargo fue exitoso! // Aquí, puede registrar la información del usuario en una base de datos, enviar un recibo por correo electrónico, etc. // Devolver un código de resultado de '0' y cualquier otra información que desee. // El manejador de devolución de llamadas jQuery Ajax puede acceder a "buy-controller.js" $ array = array ('result' => 0, 'email' => $ email, 'price' => $ price, ' mensaje '=>' Gracias; su transacción fue exitosa! '); echo json_encode ($ array);  catch (Stripe_Error $ e) // El cargo falló por algún motivo. El mensaje de Stripe explicará por qué. $ mensaje = $ e-> getMessage (); returnErrorWithMessage ($ message);  catch (Exception $ e) // Una o más variables era NULL $ message = $ e-> getMessage (); returnErrorWithMessage ($ message); ?>

Sorprendentemente simple, ¿no? Primero, verificamos que ninguna de nuestras variables sea nula. Aunque no los necesitamos a todos para cargar la tarjeta, es posible que deseamos registrar esta información en una base de datos o utilizarla para enviar un recibo al cliente, por lo que no queremos continuar si no está disponible..

Entonces, usamos el "Stripe_Charge :: create ()"Método, que forma parte de la biblioteca PHP Stripe. Esta es la línea que realmente carga la tarjeta del usuario (o intenta, de todos modos). Los dos primeros elementos de la matriz se explican por sí mismos. El tercero," tarjeta ", es donde pasamos el token que solicitamos a Stripe anteriormente. El cuarto elemento, "descripción" es de vital importancia. Lo que pasemos aquí es lo que veremos cuando iniciemos sesión en Stripe y veamos nuestras transacciones. Debe elegir algo breve que identifique el cliente que realizó este pedido. Una dirección de correo electrónico es su mejor opción, ya que muchos clientes pueden tener el mismo nombre.

¿Por qué podría fallar la carga en este punto??

Si pudiéramos obtener un token de Stripe con éxito, ¿por qué fallaría la carga en este momento? La respuesta es que la banda de validación realizada anteriormente comprobó solo que los datos de la tarjeta de crédito estaban bien formados; no ejecutó una transacción a través de las redes de tarjetas de crédito. Puede darse el caso de que la tarjeta del cliente esté por encima de su límite. O, si es una tarjeta de débito, es posible que no haya suficiente dinero en la cuenta del cliente para cubrir esta compra. También podría ser que la compañía de tarjetas de crédito simplemente marque la transacción como inusual y requiera la aprobación del cliente para dejarla pasar (esto me ha sucedido con los titulares de tarjetas de American Express). En situaciones como estas, la tarjeta se validará correctamente cuando solicitemos un token, pero fallará cuando intentemos cargarlo. Afortunadamente, Stripe hace que sea realmente fácil manejar estos fallos. Simplemente usamos los bloques try / catch, como se ve arriba.

Cargar la última tarjeta!

Si ese cliente soy yo, te espera una paliza de cactus.

Si su sitio web necesita hacer cosas, como generar un número de serie para una licencia de software, debe hacerlo ANTES de cargar la tarjeta del cliente. Si carga la tarjeta primero y luego su sitio no genera una serie por algún motivo, se marcará a su cliente. (Si ese cliente soy yo, le espera una paliza de cactus). Incluso pueden llamar a la compañía de su tarjeta de crédito para cancelar el cargo, lo que resulta en una tarifa de $ 15 para usted y la pérdida de una venta. Así que juegue de forma segura: asegúrese de tener todo listo para comenzar ANTES de cargar al cliente!

¡Eso es! Ese es todo el código que necesita para cargar una tarjeta de crédito en su sitio web. El resto del artículo cubre algunos detalles adicionales sobre el uso de Stripe que le pueden resultar útiles:


Pruebas y depuración

Cuando usamos las claves API de "prueba", podemos usar números de tarjetas de crédito especiales que obligan a Stripe a devolver un cierto tipo de respuesta para que podamos probar nuestro código a fondo. Aquí están los números especiales:

  • 4242-4242-4242-4242: Simular una transacción de tarjeta exitosa
  • 4000-0000-0000-0002: Forzar una respuesta de "tarjeta rechazada"
  • 4242-4242-4242-4241: Forzar una respuesta de "número de tarjeta no válido"

En el modo de prueba, cualquier número de CVC de 3 o 4 dígitos se considera válido. Cualquier fecha de vencimiento que sea en el futuro es válida. Puede pasar un número CVC de dos dígitos para probar ese caso de error. Del mismo modo, puede pasar cualquier fecha en el pasado para probar la respuesta de fecha de caducidad no válida. Y finalmente, si desea probar la respuesta de "cantidad inválida", simplemente pase cualquier no entero (como 1.35) como la cantidad a cargar.

Para obtener información exhaustiva sobre las pruebas de Stripe, puede visitar su página de documentación.


Suscripciones, información de la tarjeta de almacenamiento y más

Stripe le permite cobrar más de una vez a la tarjeta de un cliente. Puede configurar una suscripción que cargará a la tarjeta una cantidad específica en un intervalo de su elección. Las API que necesita para hacer esto son parte de la biblioteca PHP de Stripe y el sitio web contiene una documentación excelente que lo guiará a través del proceso.

¿Qué sucede si desea almacenar la información de la tarjeta de crédito para que los clientes no tengan que ingresarla cada vez que visitan su sitio? ¡La raya te permite hacer eso también! Simplemente crea un objeto "cliente" de la misma manera que creamos un token. Este objeto contiene todos los datos confidenciales que pertenecen a un cliente en particular. Stripe almacenará esta información de forma segura en su extremo (lo que significa que no tiene que arriesgarse a una paliza de cactus) y puede facturar al usuario cuando lo desee simplemente solicitando el objeto "cliente" adecuado, tal como hicimos con el token. Una vez más, todas las API forman parte de la biblioteca PHP de Stripe y el sitio web lo guiará.


Verlo en acción

Así que eso es: raya en pocas palabras! Si desea ver un ejemplo práctico de lo que acabamos de cubrir con un poco más de complejidad y diseño, pase por esta página e inspeccione la fuente. (Sugerencia: parecerá familiar). De lo contrario, si tiene preguntas, deje un comentario a continuación, visite la página de soporte de Stripe o encuéntrame en Twitter: @bdkjones. gracias y buena suerte!