Payment sans contact par qrcode burkina faso
# NFC Contactless Payment App
A React Native mobile application that enables contactless mobile money transfers between smartphones using NFC technology. Optimized for OrangeMoney, MoveMoney, and TélésaleMoney with extensible USSD plan architecture.
## Features
- **NFC Peer-to-Peer**: Transfer payment requests between devices via NFC
- **Multi-Operator Support**: Pre-configured for OrangeMoney, MoveMoney, TélésaleMoney
- **USSD Plan Composer**: Extensible framework for adding new operators
- **Secure Authentication**: PIN and biometric authentication with device-backed keys
- **Encrypted Storage**: Local transaction history with AES-256-GCM encryption
- **Cross-Platform**: Android (full NFC support) and iOS (limited NFC, QR fallback)
## Architecture
### Core Services
- **NFCService**: Handles NFC peer-to-peer communication and NDEF payload creation/verification
- **USSDService**: Executes operator-specific USSD sequences for payment completion
- **CryptoService**: Manages device-backed keypairs, payload signing, and PIN hashing
- **StorageService**: Encrypted local database for transactions, settings, and USSD plans
### Security Model
- Device-backed asymmetric keypairs for transaction signing
- PIN hashing with Argon2 (production) or PBKDF2 fallback
- NDEF payload signature verification to prevent tampering
- Anti-replay protection with timestamp + UUID + nonce
- AES-256-GCM encryption for data at rest
## Getting Started
### Prerequisites
- Node.js 18+
- React Native development environment
- Android Studio (for Android)
- Xcode (for iOS)
### Installation
1. Install dependencies:
```bash
npm install
```
2. Install iOS dependencies:
```bash
cd ios && pod install && cd ..
```
3. Start the development server:
```bash
npm run dev
```
### Platform Setup
#### Android
- Ensure NFC permissions are granted
- USSD execution requires CALL_PHONE permission
- Uses TelephonyManager.sendUssdRequest() on API 26+
#### iOS
- Limited NFC support (tag reading/writing …