1.1.3 • Published 8 months ago

react-native-nfc-payment v1.1.3

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

react-native-nfc-payment

A React Native module that allows you to receive payments with nfc.

This package will only work on Android and isn't available for iOS as of 2020 because Apple do not allow 3rd party iPhone apps to use the Core NFC framework.

Installation

npm install react-native-nfc-payment

Android

Simple add uses-permission into your AndroidManifest.xml:

<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.VIBRATE" />

Methods

MethodDescription
registerTagEventStart the nfc reading process
unregisterTagEventClose the nfc reading process

Options

MethodDescriptionDefault
contactLessEnable contact less readingtrue
readAllAidsRead all aids in cardtrue
readTransactionsRead all transactionstrue
removeDefaultParsersRemove default parsers for GeldKarte and EmvCardfalse
readAtRead and extract ATR/ATS and descriptiontrue

Usage / Example

import {
  registerTagEvent,
  unregisterTagEvent,
  type INfcModuleConfig,
  type INfcCardInfo,
} from "react-native-nfc-payment";

export default function App() {
  const [cardInfos, setCardInfos] = (useState < INfcCardInfo) | (null > null);

  useEffect(() => {
    onRegisterTagEvent();
    return () => {
      onUnregisterTagEvent();
    };
  }, []);

  const onRegisterTagEvent = async () => {
    try {
      var options: INfcModuleConfig = {
        contactLess: true,
        readAllAids: true,
        readTransactions: true,
        removeDefaultParsers: false,
        readAt: true,
      };
      const result = await registerTagEvent(options);
      console.log("unregisterTagEvent::result", JSON.parse(result));
    } catch (error) {
      console.log("error", error);
    }
  };

  const onUnregisterTagEvent = async () => {
    try {
      const result = await unregisterTagEvent();
      console.log("unregisterTagEvent::result", result);
    } catch (error) {
      console.log("error", error);
    }
  };

  return (
    <View style={styles.container}>
      <TouchableOpacity style={styles.buttonStyle} onPress={onRegisterTagEvent}>
        <Text>Register Tag Event</Text>
      </TouchableOpacity>
      <TouchableOpacity
        style={styles.buttonStyle}
        onPress={onUnregisterTagEvent}
      >
        <Text>Unregister Tag Event</Text>
      </TouchableOpacity>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    paddingHorizontal: 30,
  },
  buttonStyle: {
    padding: 10,
    backgroundColor: "#ddd",
    borderRadius: 40,
    alignItems: "center",
    marginBottom: 20,
  },
});

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

Acknowledgements

Thanks to the authors of these libraries for inspiration:

License

MIT


1.1.3

8 months ago

1.1.2

8 months ago

1.1.1

9 months ago

1.1.0

9 months ago