Logo
React native

Usage

Import the Module

import { N2app } from 'react-native-n2app';
import type { N2AppResponse } from 'react-native-n2app';

Check if SoftPOS is Installed

const checkSoftPos = async () => {
  try {
    const isInstalled = await N2app.isSoftPosInstalled();
    if (isInstalled) {
      console.log('SoftPOS app is installed');
    } else {
      console.log('SoftPOS app is not installed');
      // Optionally prompt user to install
    }
  } catch (error) {
    console.error('Error checking SoftPOS:', error);
  }
};

Returns:

  • Promise<boolean>

Warm Up SoftPOS

const warmUpSoftPos = async () => {
  try {
    const response: N2AppResponse = await N2app.warmUp();
    if (response.rspCode === '00') {
      console.log('SoftPOS warmed up successfully');
    } else {
      console.log('Warm up failed:', response.rspMsg);
    }
  } catch (error) {
    console.error('Error warming up SoftPOS:', error);
  }
};

Returns:

  • Promise<N2AppResponse>

Activate SoftPOS

const activateSoftPos = async (activationCode: string) => {
  try {
    const response: N2AppResponse = await N2app.activate(activationCode);
    if (response.rspCode === '00') {
      console.log('SoftPOS activated successfully');
    } else {
      console.log('Activation failed:', response.rspMsg);
    }
  } catch (error) {
    console.error('Error activating SoftPOS:', error);
  }
};

// Example: Activate with code
activateSoftPos('YOUR_ACTIVATION_CODE');

Parameters:

  • code: Activation code provided by Neurogine

Returns:

  • Promise<N2AppResponse>

Process a Sale Transaction

const processSale = async (amount: number, posMessageId: string) => {
  try {
    const response: N2AppResponse = await N2app.startSale(amount, posMessageId);

    if (response.rspCode === '00') {
      console.log('Sale successful!');
      console.log('Transaction ID:', response.tranId);
      console.log('Response Type:', response.type);

      // Access detailed transaction data
      if (response.data) {
        const txnData = response.data as TransactionResponse;
        console.log('Transaction Status:', txnData.tranStatus);
        console.log('Approval Code:', txnData.approvalCode);
        console.log('Total Amount:', txnData.totalAmount);
        console.log('Masked Account:', txnData.maskedAccount);
        console.log('Payment Method:', txnData.paymentMethod);
        console.log('Entry Mode:', txnData.entryMode);
        console.log('RRN:', txnData.rrn);
        console.log('Trace:', txnData.trace);

        // Access card data if available
        if (txnData.cardData) {
          console.log('Card AID:', txnData.cardData.aid);
          console.log('App Name:', txnData.cardData.appName);
        }
      }
    } else {
      console.log('Sale failed:', response.rspMsg);
    }
  } catch (error) {
    console.error('Sale error:', error);
  }
};

// Example: Process sale for 10.00 (amount is a number, e.g., 10.00)
const messageId = `POS-${Date.now()}`; // Generate unique message ID
processSale(10.0, messageId);

Parameters:

  • amount: Transaction amount (number)
  • posMessageId: Unique identifier for the transaction (string)

Returns:

  • Promise<N2AppResponse>

Process an Authorization Transaction

const processAuth = async (amount: number, posMessageId: string) => {
  try {
    const response: N2AppResponse = await N2app.startAuth(amount, posMessageId);

    if (response.rspCode === '00') {
      console.log('Authorization successful!');
      console.log('Transaction ID:', response.tranId);
      console.log('Transaction Status:', response.tranStatus);
      console.log('Approval Code:', response.approvalCode);
      console.log('Total Amount:', response.totalAmount);
    } else {
      console.log('Authorization failed:', response.rspMsg);
    }
  } catch (error) {
    console.error('Authorization error:', error);
  }
};

// Example: Process authorization for 50.00
const messageId = `POS-${Date.now()}`; // Generate unique message ID
processAuth(50.0, messageId);

Parameters:

  • amount: Transaction amount (number)
  • posMessageId: Unique identifier for the transaction (string)

Returns:

  • Promise<N2AppResponse>

Complete an Authorization Transaction

const completeAuth = async (
  originalTransactionId: string,
  amount: number,
  posMessageId: string
) => {
  try {
    const response: N2AppResponse = await N2app.startAuthCompletion(
      originalTransactionId,
      amount,
      posMessageId
    );

    if (response.rspCode === '00') {
      console.log('Authorization completion successful!');
      console.log('Transaction ID:', response.tranId);
      console.log('Transaction Status:', response.tranStatus);
    } else {
      console.log('Authorization completion failed:', response.rspMsg);
    }
  } catch (error) {
    console.error('Authorization completion error:', error);
  }
};

// Example: Complete an authorization
const messageId = `POS-${Date.now()}`;
completeAuth('TXN123456789', 50.0, messageId);

Parameters:

  • orgTranId: Original transaction ID (string)
  • amount: Transaction amount (number)
  • posMessageId: Unique identifier for the transaction (string)

Returns:

  • Promise<N2AppResponse>

Process a Refund Transaction

const processRefund = async (
  originalTransactionId: string,
  passcode: string,
  posMessageId: string
) => {
  try {
    const response: N2AppResponse = await N2app.startRefund(
      originalTransactionId,
      passcode,
      posMessageId
    );

    if (response.rspCode === '00') {
      console.log('Refund successful!');
      console.log('Transaction ID:', response.tranId);
      console.log('Transaction Status:', response.tranStatus);
    } else {
      console.log('Refund failed:', response.rspMsg);
    }
  } catch (error) {
    console.error('Refund error:', error);
  }
};

// Example: Process a refund
const messageId = `POS-${Date.now()}`;
processRefund('TXN123456789', 'ADMIN_PASSWORD', messageId);

Parameters:

  • orgTranId: Original transaction ID (string)
  • passcode: Merchant passcode (string)
  • posMessageId: Unique identifier for the transaction (string)

Returns:

  • Promise<N2AppResponse>

Void a Transaction

const voidTransaction = async (
  originalTransactionId: string,
  passcode: string,
  posMessageId: string
) => {
  try {
    const response: N2AppResponse = await N2app.startVoid(
      originalTransactionId,
      passcode,
      posMessageId
    );

    if (response.rspCode === '00') {
      console.log('Void successful!');
      console.log('Transaction ID:', response.tranId);
      console.log('Transaction Status:', response.tranStatus);
    } else {
      console.log('Void failed:', response.rspMsg);
    }
  } catch (error) {
    console.error('Void error:', error);
  }
};

// Example: Void a transaction
const messageId = `POS-${Date.now()}`;
voidTransaction('TXN123456789', 'ADMIN_PASSWORD', messageId);

Parameters:

  • orgTranId: Original transaction ID (string)
  • passcode: Merchant passcode (string)
  • posMessageId: Unique identifier for the transaction (string)

Returns:

  • Promise<N2AppResponse>

Query Transaction Status by Transaction ID

const queryByTransactionId = async (transactionId: string) => {
  try {
    const response: N2AppResponse =
      await N2app.enquiryTranStatus(transactionId);

    if (response.rspCode === '00') {
      console.log('Transaction found');

      // Access detailed transaction data
      if (response.data) {
        const txnData = response.data as TransactionResponse;
        console.log('Status:', txnData.tranStatus);
        console.log('Transaction Type:', txnData.tranType);
        console.log('Total Amount:', txnData.totalAmount);
        console.log('Approval Code:', txnData.approvalCode);
        console.log('Created At:', txnData.createdAt);
      }
    } else {
      console.log('Query failed:', response.rspMsg);
    }
  } catch (error) {
    console.error('Query error:', error);
  }
};

// Example: Query transaction by ID
queryByTransactionId('TXN123456789');
**Parameters:**
- orgTranId: Original transaction ID (string)

**Returns:**
- `Promise<N2AppResponse>`

Query Transaction Status by POS Message ID

const queryByMessageId = async (posMessageId: string) => {
  try {
    const response: N2AppResponse =
      await N2app.enquiryTranStatusWithMessageId(posMessageId);

    if (response.rspCode === '00') {
      console.log('Transaction found');

      // Access detailed transaction data
      if (response.data) {
        const txnData = response.data as TransactionResponse;
        console.log('Status:', txnData.tranStatus);
        console.log('Transaction ID:', txnData.tranId);
        console.log('Total Amount:', txnData.totalAmount);
      }
    } else {
      console.log('Query failed:', response.rspMsg);
    }
  } catch (error) {
    console.error('Query error:', error);
  }
};

// Example: Query transaction by POS message ID
queryByMessageId('POS-1699876543210');

Parameters:

  • posMessageId: Unique identifier for the transaction (string)

Returns:

  • Promise<N2AppResponse>

On this page