DEV Community

Cover image for Integrating AeroPay SDK in React Native: A Step-by-Step Guide
Amit Kumar
Amit Kumar

Posted on

Integrating AeroPay SDK in React Native: A Step-by-Step Guide

In the world of digital payments, AeroPay offers a robust solution for smart bank transfers and direct bank connections. With its easy-to-implement SDKs and APIs, AeroPay simplifies the payment experience for businesses and consumers alike. This blog will guide you through integrating the AeroPay SDK into a React Native application.


Why Choose AeroPay?

AeroPay provides:

  • Smart Bank Transfers: Seamless payment processing.
  • Direct Bank Connections: Secure and fast connections to banks.
  • Customizable Widgets: Tailored experiences for payment flows.

Step 1: Install the Required Dependencies

To start, install the AeroPay SDK and any additional libraries required for the project:

npm install aerosync-react-native-sdk react-native-dropdown-picker

Enter fullscreen mode Exit fullscreen mode

Step 2: Implement the React Native Code

import React, { useState } from 'react';
import BankLink from 'aerosync-react-native-sdk';
import DropDownPicker from 'react-native-dropdown-picker';
import {
  StyleSheet,
  SafeAreaView,
  Text,
  View,
  TextInput,
  TouchableOpacity,
} from 'react-native';

const App = () => {
  const [token, setToken] = useState('');
  const [isSubmitted, setIsSubmitted] = useState(false);
  const [consumerId, setConsumerId] = useState('');
  const [open, setOpen] = useState(false);
  const [value, setValue] = useState('staging');
  const [items, setItems] = useState([
    { label: 'STAGING', value: 'staging' },
    { label: 'SANDBOX', value: 'sandbox' },
    { label: 'PRODUCTION', value: 'production' },
  ]);

  const onLoad = () => console.log('Widget Loaded');
  const onClose = () => {
    console.log('Widget Closed');
    setIsSubmitted(false);
  };
  const onSuccess = (event) => {
    console.log('Success:', event);
    setIsSubmitted(false);
  };
  const onError = (event) => console.log('Error:', event);
  const onEvent = (event) => console.log('Event:', event);

  if (isSubmitted) {
    return (
      <SafeAreaView>
        <BankLink
          token={token}
          environment={value}
          onError={onError}
          onClose={onClose}
          onEvent={onEvent}
          onSuccess={onSuccess}
          onLoad={onLoad}
          deeplink="https://staging.aerosync.com/"
          consumerId={consumerId}
          style={{ width: '100%', height: '100%' }}
        />
      </SafeAreaView>
    );
  }

  return (
    <SafeAreaView style={styles.container}>
      <Text style={styles.title}>AeroPay React Native Integration</Text>
      <View style={styles.dropdown}>
        <DropDownPicker
          open={open}
          value={value}
          items={items}
          setOpen={setOpen}
          setValue={setValue}
          setItems={setItems}
          placeholder="Select Environment"
        />
      </View>
      <TextInput
        style={styles.input}
        placeholder="Enter Token"
        onChangeText={setToken}
        placeholderTextColor="#555"
      />
      <TextInput
        style={styles.input}
        placeholder="Enter Consumer ID (optional)"
        onChangeText={setConsumerId}
        placeholderTextColor="#555"
      />
      <TouchableOpacity
        style={styles.button}
        onPress={() => setIsSubmitted(true)}
      >
        <Text style={styles.buttonText}>Launch AeroPay Widget</Text>
      </TouchableOpacity>
    </SafeAreaView>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#fff',
  },
  title: {
    fontSize: 22,
    fontWeight: 'bold',
    marginBottom: 20,
  },
  dropdown: {
    width: '80%',
    marginBottom: 20,
  },
  input: {
    width: '80%',
    borderColor: '#ccc',
    borderWidth: 1,
    borderRadius: 5,
    padding: 10,
    marginBottom: 20,
  },
  button: {
    backgroundColor: '#24c3d2',
    padding: 15,
    borderRadius: 5,
  },
  buttonText: {
    color: '#fff',
    fontWeight: 'bold',
    fontSize: 16,
  },
});

export default App;

Enter fullscreen mode Exit fullscreen mode

Top comments (0)