{"id":1629,"date":"2024-08-02T10:47:31","date_gmt":"2024-08-02T08:47:31","guid":{"rendered":"https:\/\/blog.sutilweb.eu\/?page_id=1629"},"modified":"2024-08-02T10:47:32","modified_gmt":"2024-08-02T08:47:32","slug":"006-pagos-online-con-fetch-y-stripe","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/javascript\/javascript-practico\/17-ejercicios-con-ajax\/006-pagos-online-con-fetch-y-stripe\/","title":{"rendered":"006. Pagos Online con Fetch y Stripe"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Stripe<\/strong> tiene su propia <strong>API<\/strong> que en la mayor parte del mundo, este servicio de cobro est\u00e1 habilitado. Es una excelente opci\u00f3n si disponemos de un sitio de correo electr\u00f3nico. Desde el <strong>Dashboard<\/strong> puedes hacer diferentes cosas y para los desarrolladores tiene una gran variedad de diferentes lenguajes de programaci\u00f3n.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Lo m\u00e1s interesante es que el <strong>checkout<\/strong> para hacer una compra en linea a trav\u00e9s de una tarjeta de cr\u00e9dito, <strong>Stripe<\/strong> tiene una soluci\u00f3n que podemos implementar completamente con c\u00f3digo <strong>frontend<\/strong>, es decir, con <strong>Javascript<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo vamos a crear los productos en nuestro <strong>Dashboard<\/strong> de <a href=\"https:\/\/stripe.com\/es\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Stripe<\/strong><\/a>, en el siguiente cap\u00edtulo accederemos a los productos din\u00e1micamente con <strong>Ajax<\/strong>, generando una p\u00e1gina donde est\u00e9n nuestros productos, y en un tercer cap\u00edtulo veremos la soluci\u00f3n del lado del cliente que ofrece <strong>Stripe<\/strong> con pura programaci\u00f3n <strong>Javascript<\/strong> para poder hacer las transacciones correspondientemente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En <strong>Stripe<\/strong> tenemos una secci\u00f3n completa para desarrolladores, como se est\u00e1 tratando con datos sensibles, los <strong>endpoints<\/strong> piden una autenticaci\u00f3n, para lo que tenemos que ir a las claves <strong>API<\/strong>, y nos van a proporcionar dos claves, la <strong>clave p\u00fablica<\/strong> y la <strong>clave secreta<\/strong>, ambas las necesitamos, ya que en diferentes momentos las va a solicitar el <strong>API<\/strong> de <strong>Stripe<\/strong>. La llave secreta comienza por <em>sk<\/em> (<strong>secret key<\/strong>) y <em>pk<\/em> (<strong>public key<\/strong>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este cap\u00edtulo crearemos productos desde la plataforma de <strong>Stripe<\/strong>, para lo que hay que hacerse una cuenta de <strong>Stripe<\/strong>, y para hacer pruebas, existe la opci\u00f3n de ponerla en modo de prueba.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez creados los productos a trav\u00e9s del <strong>dashboard<\/strong> de <strong>Stripe<\/strong>, vamos a crear un archivo llamado <em>stripe-checkout.html<\/em>, donde vamos a comenzar a escribir nuestro c\u00f3digo. En el mismo crearemos un espacio donde se ir\u00e1n cargando los diferentes productos que hemos creado en nuestra cuenta de <strong>Stripe<\/strong>. Vamos a trabajar con la t\u00e9cnica de los <strong>templates<\/strong>, que vimos en cap\u00edtulos pasados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para guardar las llaves secretas vamos a trabajar con <strong>m\u00f3dulos<\/strong>, para que \u00fanicamente nosotros veamos nuestras <strong>llaves secretas<\/strong>. Tambi\u00e9n hay que mandar a llamar al <strong>script<\/strong> de <strong>Stripe<\/strong>, en este caso trabajaremos con uno que habla de la librer\u00eda <strong><em>stripe.js<\/em><\/strong>, que la podemos encontrar desde <a href=\"https:\/\/stripe.com\/docs\/js\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/stripe.com\/docs\/js<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a crear tambi\u00e9n un archivo denominado <em>checkout-stripe.js<\/em>, que va a ser el archivo que programaremos, y lo programaremos por m\u00f3dulos. Adicionalmente crearemos un archivo denominado <em>stripe-keys.js<\/em>, que traer\u00e1 las llaves p\u00fablicas, para que no est\u00e9n a la vista.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Nota<\/strong>: adem\u00e1s de acceder al <strong>endpoint<\/strong> de los productos, tenemos que acceder tambi\u00e9n al <strong>endpoint<\/strong> de los precios de los productos.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Para preparar el <strong>checkout<\/strong>, tenemos que ir a la documentaci\u00f3n de <strong>Checkout Sessions<\/strong> de <strong>Stripe<\/strong>. Es un m\u00e9todo que nos permitir\u00e1 interactuar con el formulario de pago que ya est\u00e1 en la infraestructura de <strong>Stripe<\/strong>, lo \u00fanico que tenemos que hacer es programar al evento <strong><em>click<\/em> <\/strong>de cada uno de los productos que tenemos en nuestro <strong>front<\/strong>, mandar llamar este servicio, nos pedir\u00e1 la llave p\u00fablica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Archivos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En el siguiente ZIP est\u00e1n todos los archivos de este ejercicio.<\/p>\n\n\n\n<div class=\"wp-block-file alignleft\"><a id=\"wp-block-file--media-332b2545-651d-4357-86fd-8b2174bbd643\" href=\"https:\/\/blog.sutilweb.eu\/wp-content\/uploads\/2024\/08\/Stripe.zip\">Stripe<\/a><a href=\"https:\/\/blog.sutilweb.eu\/wp-content\/uploads\/2024\/08\/Stripe.zip\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-332b2545-651d-4357-86fd-8b2174bbd643\">Descarga<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Stripe tiene su propia API que en la mayor parte del mundo, este servicio de cobro est\u00e1 habilitado. Es una excelente opci\u00f3n si disponemos de un sitio de correo electr\u00f3nico. Desde el Dashboard puedes hacer diferentes cosas y para los desarrolladores tiene una gran variedad de diferentes lenguajes de programaci\u00f3n.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1609,"menu_order":5,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1629","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"Stripe tiene su propia API que en la mayor parte del mundo, este servicio de cobro est\u00e1 habilitado. Es una excelente opci\u00f3n si disponemos de un sitio de correo electr\u00f3nico. Desde el Dashboard puedes hacer diferentes cosas y para los desarrolladores tiene una gran variedad de diferentes lenguajes de programaci\u00f3n.","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1629","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=1629"}],"version-history":[{"count":2,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1629\/revisions"}],"predecessor-version":[{"id":1632,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1629\/revisions\/1632"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/1609"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=1629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}