Não há muitas maneiras de adicionar uma interface de pagamento a um aplicativo React Native nativamente. Como resultado, muitos desenvolvedores de celular optam por construir sua própria interface de pagamento usando o PayPal SDK .
PayPal é um dos primeiros e maiores serviços de pagamento pela Internet no mundo. Sua disponibilidade em 200 países o torna uma interface de pagamento confiável para empresas e indivíduos. PayPal tem uma enorme biblioteca para integração com várias linguagens de programação, incluindo Python, Java, JavaScript, PHP, etc.
Neste tutorial, mostraremos como construir uma interface de pagamento no React Native, interligando tecnologias nativas e da web entre si usando o SDK do PayPal para JavaScript.
Começaremos criando React Native e React aplicativos. Para acompanhar, você já deve estar familiarizado com JavaScript, ferramentas Node.js como npx e npm ou yarn , módulos e React básico componentes. Você também precisará de uma conta de desenvolvedor do PayPal para criar credenciais para a integração de pagamento.
Usaremos a API de integração do PayPal para JavaScript para web. Vamos construir a interface de pagamento no React como um aplicativo de página única e hospedá-lo no Firebase Hospedagem . Por fim, usaremos React Native WebView para criar o link entre o aplicativo React Native e o aplicativo da web React.
React integração nativa do PayPal: configuração básica
Primeiro, criaremos um aplicativo React Native básico. Para criar o aplicativo, basta inserir o seguinte comando:
$ npx init nativo reactivo myPayPalApp
Precisamos criar um aplicativo React também. Para criar o aplicativo da web, digite o seguinte comando:
npx create-react-app my-paypal-web
Enquanto esses aplicativos estão inicializando, usaremos nossa conta de desenvolvedor do PayPal para criar um novo aplicativo e as credenciais necessárias para a integração.
Vá para developer.paypal.com e faça login em sua conta de desenvolvedor. Depois de fazer login, você será redirecionado para o seu painel, que se parecerá com isto:
Você verá um aplicativo padrão listado. Para este tutorial, vamos seguir as etapas a seguir para criar um novo aplicativo.
Clique no botão Criar aplicativo . Estamos usando o sandbox do PayPal para testes, sinta-se livre para preencher conforme sua preferência. Em seguida, clique em Criar aplicativo .
Depois que o aplicativo for criado, você será redirecionado para a página de configurações e credenciais. Você pode ver o e-mail da conta do sandbox do seu aplicativo, o ID do cliente e outras configurações. O ID do cliente é o que precisamos para este tutorial.
Para o teste, também precisamos de contas de cliente sandbox. Para criar contas de clientes, clique em Contas em Sandbox no menu de navegação à esquerda.
Agora clique em Criar conta , selecione Estados Unidos e clique em Criar .
Depois que a conta for criada, para ver as credenciais da conta (ou seja, e-mail e senha) para login no gateway de pagamento de teste, passe o mouse sobre o botão de menu ao lado da conta recém-criada e clique em Ver/editar conta .
Você vai pousar em algo assim:
Você verá o ID do e-mail, bem como uma senha gerada pelo sistema. Você pode alterar a senha clicando no link Alterar senha ou pode usar a senha gerada pelo sistema para fazer login durante o pagamento.
Agora que concluímos os requisitos básicos, podemos prosseguir para a construção da interface de pagamento.
Construindo a interface de pagamento
Para a interface de pagamento, faremos alterações no projeto React que criamos acima ( my-paypal-web ). Adicionaremos botões do PayPal à nossa página da web e consideraremos o resultado como nosso retorno de chamada.
Copie o ID do cliente da nova página do aplicativo que você acabou de criar no PayPal (mostrado acima) e cole-o no public/index.html do arquivo em seu projeto.
Seu código deve ser semelhante a este:
Para callbacks, vamos criar funções e adicioná-las como adereços ao PayPalButton . Primeiro, vamos adicionar onApprove . Esta função é chamada quando um pedido é aprovado pelo PayPal.
Para criar uma função assíncrona _onApprove :
função assíncrona _onApprove (dados, ações) { deixar ordem=esperar por actions.order.capture (); console.log (pedido); ordem de devolução; }
Aqui, a palavra-chave await é usada para buscar os detalhes do pedido. Em seguida, console.log os detalhes do pedido.
Adicione também esta função aos props PayPalButton :
Além disso, adicionaremos as propriedades onCancel e onError para obter retornos de chamada se o usuário cancelar um pagamento ou se houver algum erro no final do PayPal. Vamos criar apenas uma função de chamada e usá-la em ambos os adereços:
function _onError (err) { console.log (errar);
}
Seu código de botão do PayPal deve ser semelhante a este:
Tudo o que estamos fazendo é criar uma solicitação de pagamento de $ 1,00 do usuário e registrá-la para ver o resultado.
Para testar seu gateway de pagamento, basta clicar no botão PayPal, inserir as credenciais do usuário (ou seja, o e-mail e a senha da etapa um) e efetuar o pagamento.
Depois que o pagamento for feito, você será redirecionado para a página do aplicativo. Abra o console do desenvolvedor clicando com o botão direito, inspecione o elemento e vá para a guia do console. Você verá o resultado do pagamento fictício que acabou de fazer:
Depois de criar uma conta, clique em Adicionar projeto e defina um nome de projeto:
Você pode escolher se deseja ativar ou desativar a análise:
Agora que você criou seu projeto Firebase, clique em Continuar .
Para configurar a hospedagem, vá para a guia de hospedagem na barra lateral e clique no botão Começar .
Abra uma janela de terminal e instale firebase-tools em seu sistema:
$ npm install-g firebase-tools
Faça login usando sua conta do firebase para que você possa se conectar facilmente com o projeto a partir da janela do terminal:
$ firebase login
Use sua conta para autorizar o login. Depois de fazer login, vá para o diretório do projeto my-paypal-web e digite o seguinte comando:
$ firebase init
Use as setas do teclado para navegar até Hosting . Pressione a barra de espaço para selecionar e retornar/inserir para continuar.
Como já criamos um projeto, selecionaremos Usar e projeto existente :
Next, select the project we created from the list and hit return/enter.
On the next step, enter the following configs:
===Hosting Setup Your public directory is the folder (relative to your project directory) that
will contain Hosting assets to be uploaded with firebase deploy. Se você
have a build process for your assets, use your build's output directory. ? What do you want to use as your public directory? construir
? Configure as a single-page app (rewrite all urls to/index.html)? sim
? Set up automatic builds and deploys with GitHub? Não
After you’ve done that, you’ll see a success message at the bottom:
✔ Wrote build/index.html i Writing configuration info to firebase.json...
i Writing project information to.firebaserc... ✔ Firebase initialization complete!
To push your web app live, enter following commands:
$ yarn build
After the build is complete, enter:
$ firebase deploy
You’ll see a result with the hosting URL:
===Deploying to'my-pay-web'... i deploying hosting
i hosting[my-pay-web]: beginning deploy...
i hosting[my-pay-web]: found 18 files in build
✔ hosting[my-pay-web]: file upload complete
i hosting[my-pay-web]: finalizing version...
✔ hosting[my-pay-web]: version finalized
i hosting[my-pay-web]: releasing new version...
✔ hosting[my-pay-web]: release complete ✔ Deploy complete! Project Console: https://console.firebase.google.com/project/my-pay-web/overview
Hosting URL: https://my-pay-web.web.app
You can just copy the hosting URL and paste it in your preferred browser. Here’s what mine looks like:
https://my-pay-web.web.app
Building the basic WebView in React Native
If you have prior experience working with React Native, that’s a plus. If not, the official docs offer a guide to setting up your environment and installing the app. If you haven’t done that already, just go to the project directory and use the following command to install the WebView module for React Native:
yarn add react-native-webview
Next, connect you device using USB and enter the following command:
npx react-native run-android
After you’ve successfully installed the app on your device or emulator, open up the App.js file. Delete the default extra code and import the WebView module:
import { WebView } from'react-native-webview';
To initialize the payment gateway from React Native, we’ll create a button to show the web view in a modal and get a response from WebView. We’ll also create a useState() hook to show and hide the WebView.
Now, we’ll show/hide the ActivityIndicator after the page has loaded to get a callback from WebView. If the page has loaded, we’ll add following hooks and props:
Connecting the PayPal interface to a React Native app using WebView
To receive data from the WebView page to our React Native app, we’ll use onMessage prop. We also need to add some code to our web app to send the required data. The window.ReactNativeWebView.postMessage method is used to send data from WebView to our React Native app.
After making to required change your _onApprove and _onError functions, your code should look like this:
async function _onApprove(data, actions) { let order=await actions.order.capture(); console.log(order); window.ReactNativeWebView && window.ReactNativeWebView.postMessage(JSON.stringify(order)); return order;
}
function _onError(err) { console.log(err); let errObj={ err: err, status:"FAILED", }; window.ReactNativeWebView && window.ReactNativeWebView.postMessage(JSON.stringify(errObj));
}
We’re using JSON.stringify because postMessage can only accept string arguments.
Remember to build the web app and deploy it to Firebase:
$ yarn build
$ firebase deploy
To get the data on the React Native side, we’ll use onMessage. Create the following function and add it to the onMessage prop:
function onMessage(e) { let data=e.nativeEvent.data; setShowGateway(false); console.log(data); }
Add the onMessage prop and set the source uri to the URI of you web app:
Now it’s time to test the payment gateway. At this point, we’re logging the result from postMessage in the React Native app.
Click Pay Using PayPal to reveal the payment page. Enter your credentials and make payment:
After the payment is made successfully (or unsuccessfully), you’ll see the result printed in the console:
You can alert the users about the status of the payment they just made by adding an alert in the onMessage function:
function onMessage(e) { ... let payment=JSON.parse(data); if (payment.status==='COMPLETED') { alert('PAYMENT MADE SUCCESSFULLY!'); } senão { alert('PAYMENT FAILED. PLEASE TRY AGAIN.'); }
}
If you’ve made it this far, congratulations — you’ve successfully set up your test payment gateway for React Native using PayPal. Although the code above should suffice for the basic payment system, you can change it according to your own needs. You can also refer to the official PayPal guide for further reference.
Reconhecidamente, este será um começo lento, mas o Google está lançando dois planos de fundo virtuais incrivelmente legais para o Google Meet no Android e no iOS que permitem aos usuários não apenas alterar seus Read more…
De acordo com o estudo mais recente conduzido pela Chainalysis, usuários involuntários gastaram cerca de US$ 4,6 bilhões em criptomoedas, adquirindo-as em esquemas fraudulentos no ano passado, que resultaram na criação de mais de 1,1 Read more…
O principal mercado de NFT, OpenSea, fez alguns anúncios importantes nas últimas horas. Por meio de sua conta oficial no Twitter, a OpenSea listou várias alterações em sua estrutura de taxas e royalties, que devem Read more…