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>