Unlock the Power of PayPal in Your React Native App

Why Choose PayPal?

With over 200 countries supported, PayPal is one of the most reliable and widely used payment services in the world. Its extensive library makes it easy to integrate with various programming languages, including JavaScript, Python, Java, and PHP.

Getting Started with PayPal Integration

To follow along, you’ll need a basic understanding of:

  • JavaScript
  • Node.js tools like npx and npm or yarn
  • Modules
  • Basic React components

You’ll also need a PayPal developer account to create credentials for the payment integration.

Basic Setup: Creating a React Native App and a React Web App

Create a basic React Native app using the command:

npx react-native init myPayPalApp

Next, create a React web app using the command:

npx create-react-app my-paypal-web

Setting Up Your PayPal Developer Account

Log in to your PayPal developer account and create a new app. You’ll need the client ID from the app settings page for this tutorial.

Building the Payment Interface

In the React web app, add the PayPal script tag to the <head> section of the public/index.html file:

<head>
  <script src="https://www.paypal.com/sdk/js?client-id=YOUR_CLIENT_ID"></script>
</head>

Then, create a PayPal button component and add it to the App.js file:

import React from 'eact';
import { PayPalScriptProvider, PayPalButtons } from '@paypal/react-paypal-js';

function App() {
  return (
    <PayPalScriptProvider client-id="YOUR_CLIENT_ID">
      <PayPalButtons
        createOrder={(data, actions) => {
          return actions.order.create({
            purchase_units: [{
              amount: {
                currency_code: 'USD',
                value: '10.00'
              }
            }]
          });
        }}
        onApprove={(data, actions) => {
          // Handle successful payment
        }}
        onError={(err) => {
          // Handle error
        }}
      />
    </PayPalScriptProvider>
  );
}

export default App;

Handling Callbacks

Create an _onApprove function to handle successful payments and an _onError function to handle errors. Add these functions as props to the PayPal button component:

function _onApprove(data, actions) {
  // Handle successful payment
  console.log('Payment successful!');
}

function _onError(err) {
  // Handle error
  console.error('Payment error:', err);
}

<PayPalButtons
  createOrder={(data, actions) => {
    //...
  }}
  onApprove={_onApprove}
  onError={_onError}
/>

Testing the Payment Gateway

Click the PayPal button, enter your sandbox customer account credentials, and make a payment. Check the console for the payment result.

Setting Up Firebase Hosting

Sign up for a Firebase account and create a new project. Set up hosting by installing firebase-tools and deploying your React web app.

Building the Basic WebView in React Native

Install the WebView module for React Native:

npx npm install react-native-webview

Create a button to show the web view in a modal:

import React, { useState } from 'eact';
import { View, Button, Modal } from 'eact-native';
import { WebView } from 'eact-native-webview';

function App() {
  const [showWebView, setShowWebView] = useState(false);

  return (
    <View>
      <Button title="Show WebView" onPress={() => setShowWebView(true)} />
      <Modal visible={showWebView}>
        <WebView source={{ uri: 'https://your-web-app.com' }} />
      </Modal>
    </View>
  );
}

export default App;

Connecting the PayPal Interface to a React Native App using WebView

Use the onMessage prop to receive data from the WebView page to your React Native app:

import { WebView } from 'eact-native-webview';

function App() {
  //...

  return (
    <View>
      <WebView
        source={{ uri: 'undefined-web-app.com' }}
        onMessage={(event) => {
          console.log('Received message:', event.nativeEvent.data);
        }}
      />
    </View>
  );
}

export default App;

Add code to your web app to send the required data using the window.ReactNativeWebView.postMessage method:

window.ReactNativeWebView.postMessage('Payment successful!');

Testing the Payment Gateway in React Native

Click the PayPal button to reveal the payment page. Enter your credentials and make a payment. Check the console for the payment result.

Congratulations! You’ve successfully set up your test payment gateway.

You can now customize the code to fit your needs and refer to the official PayPal guide for further reference.

Leave a Reply