Este texto é uma adaptação de vários trechos do livro de Scott Hasbrouck, “The Node.js Engineer’s Guide to Stripe” – o senhor está lendo o livro e o que ele diz. Disponível agora! com um desconto de 10% para os leitores da David Walsh com o código: WALSH10


The Node.js Engineer’s Guide to Stripe (Guia do engenheiro do Node.js para o Stripe).


O Checkout.js agrupa o mecanismo de coleta de dados do titular do cartão com um formulário pop-up modal bonito e fácil de integrar que coleta os detalhes de pagamento do usuário. Essa é uma opção fantástica para criar uma integração muito rápida com o Stripe, mas não fluirá perfeitamente com o restante da sua interface de usuário. É aqui que o Stripe.js entra em ação. A API ainda oferece métodos JavaScript para enviar os detalhes do pagamento diretamente ao Stripe e receber um token de pagamento para representar o pagamento.


A documentação do Stripe lista fornece uma tag Script que carrega o Stripe.js com a versão mais recente. Pode ser tentador instalar o Script com o Bower, executando bower install --save stripe.js=https://js.stripe.com/v2/, mas lembre-se de que fazer isso não é oficialmente endossado pelo Stripe. Não há menção sobre a frequência com que eles atualizam as bibliotecas do lado do cliente, portanto, algo pode quebrar inesperadamente. Portanto, sua primeira opção é simplesmente carregar a biblioteca colocando a tag de script fornecida pelo Stripe no arquivo HTML em que seu aplicativo React está montado:


<html>
    <head>
               <script type="text/javascript" src="https://js.stripe.com/v2/"></script>
    </head>
    <body style="margin: 0px;">
        <div id="main"></div>
        <script src="react-bundle.js"></script>
    </body>
<html>


A muito melhor opção seria carregar dinamicamente esse script com o ReactScriptLoader! Considerando que um aplicativo React é um aplicativo de página única, provavelmente há grandes partes do seu aplicativo que não têm um formulário de pagamento. Por que carregar o Stripe.js para toda a página quando podemos simplesmente carregá-lo apenas para o componente do formulário de pagamento? Vamos criar um componente React vazio para nosso formulário de pagamento e carregar dinamicamente o Stripe.js (observe que esse método também funcionaria para o Checkout.js!):


var React = require('react');
var ReactScriptLoaderMixin = require('react-script-loader').ReactScriptLoaderMixin;

var PaymentForm = React.createClass({
  mixins: [ ReactScriptLoaderMixin ],

  getInitialState: function() {
    return {
      stripeLoading: true,
      stripeLoadingError: false
    };
  },

  getScriptURL: function() {
    return 'https://js.stripe.com/v2/';
  },

  onScriptLoaded: function() {
    if (!PaymentForm.getStripeToken) {

      // Put your publishable key here
      Stripe.setPublishableKey('pk_test_xxxx');
      this.setState({ stripeLoading: false, stripeLoadingError: false });
    }
  },

  onScriptError: function() {
    this.setState({ stripeLoading: false, stripeLoadingError: true });
  },

  render: function() {
    if (this.state.stripeLoading) {
      return <div>Loading</div>;
    }
    else if (this.state.stripeLoadingError) {
      return <div>Error</div>;
    }
    else {
      return <div>Loaded!</div>;
    }
  }
});

module.exports = PaymentForm;


O ReactScriptLoaderMixin começa a carregar o script remoto e, após o carregamento bem-sucedido ou a ocorrência de um erro, invocará um dos dois ouvintes de eventos. Quando o script for carregado com êxito, poderemos definir a chave pública para o Stripe.js. Isso, por sua vez, nos dá uma condicional na função de renderização para três estados de carregamento, erro ou carregado! Observe que esse método também pode ser usado para carregar o Checkout.js.


react-credit-card seria um ótimo toque final. Esse componente detecta automaticamente o tipo de cartão de crédito e mostra o logotipo apropriado em um cartão de crédito gerado por CSS, juntamente com o próprio número do cartão de crédito.


Felizmente, a integração do Stripe em seu front-end é bastante simples – não há como ser muito mais complicado do que isso! O verdadeiro trabalho (e diversão!) começa no código do servidor, que pode se tornar complicado e cheio de bugs se o senhor estiver fazendo mais do que aceitar pagamentos únicos para usuários que não se repetem. Boa sorte em seus esforços de pagamento on-line com JavaScript e, se quiser participar de seus próprios projetos ou tiver comentários sobre como integrou o Stripe ao React, entre em contato ou comente! As cinco primeiras pessoas que deixarem um comentário sobre o que mais gostaram deste post ou da dica sobre React e tuitarem o artigo receberão uma cópia GRATUITA do meu livro: The Node.js Engineer’s Guide to Stripe! Basta me mencionar no tweet e eu lhe enviarei uma mensagem de texto com instruções sobre como solicitar sua cópia.

Scott Hasbrouck

Sobre Scott Hasbrouck

Scott é um engenheiro de software de longa data, que adora compartilhar suas habilidades com outras pessoas por meio da escrita e da orientação. Como empreendedor em série, ele fundou três empresas como fundador técnico, levando uma delas a mais de um milhão de usuários. Ele está sempre buscando a próxima aventura por meio de caminhadas em lugares remotos, pilotando pequenos aviões e viajando.