WooNotify is a modern, offline-first Android application developed in Kotlin and Jetpack Compose designed specifically for e-commerce merchants. It provides a real-time bridge between incoming payment transaction SMS notifications and pending WooCommerce store orders, allowing seamless payment verification and automatic order status fulfillment.
- WooCommerce Live Order Tracker: Real-time integration to poll, list, and search for pending or unpaid orders from your WooCommerce store.
- On-Device QR Setup Scanner: Instantly set up connection parameters by pointing your live camera at a WooCommerce connection QR code (powered on-device by Google ML Kit), or copy the payload directly to the clipboard for automated autofill.
- Intelligent Order Matching Engine: Compare raw SMS payment notifications (such as bKash, SSLCommerz, Nagad, Stripe alerts, or bank transaction SMS) against pending order totals, customer names, or emails to quickly identify the matching order.
- Automatic Status Updates: Auto-transition WooCommerce orders to a "Processing" status and record a secure system transaction audit log right when the payment is confirmed.
- Secure Local Storage: Uses a local Room SQLite database to keep credentials safe and locally back up confirmation audits.
- Remote Admin Verification Logs: Synchronize verified order logs seamlessly with your private external audit server via a custom Synchronization URL API.
WooNotify is built with modern Android development standards:
- Jetpack Compose: 100% declarative UI leveraging Material Design 3 (M3) with a dark aesthetic, edge-to-edge layout, and adaptive density.
- CameraX & Google ML Kit Barcode Scanning: Full integrated live-viewfinder camera scanner to detect and parse connection QR codes with modern permissions checking (
Accompanist Permissions). - Kotlin Coroutines & Flow: Reactive data processing with clean, lightweight concurrency.
- Room Database: Structured persistence layer for application configurations, received transaction logs, and local synchronization states.
- Retrofit & OkHttp: Fully functional WooCommerce REST API clients supporting basic authentication hashes.
/app/src/main/java/com/example/
├── data/
│ ├── database/ # AppDatabase, ConfigDao, LogDao definitions
│ ├── model/ # Order Entities, ApiConfigEntity, LogEntity
│ └── network/ # Retrofit api clients for WooCommerce API Integration
├── service/ # OrderPollingService running in-app background routines
├── ui/
│ ├── theme/ # Central Color scheme, Shape definitions, Typography
│ └── screens/ # Jetpack Compose visual interfaces:
│ ├── DashboardScreen.kt # Order stats, polling state, connection health
│ ├── SmsScreen.kt # SMS transaction histories and received notifications
│ ├── MatchEngineScreen.kt # Payment ID matcher and success animations
│ ├── LogsScreen.kt # Local verification audit log synchronization
│ └── SettingsScreen.kt # Manual settings, QR camera viewfinder, demo loader
└── MainActivity.kt # Edge-to-edge composition entrypoint & scaffold tabs
Setting up connection parameters is incredibly versatile! Merchant configurations can be set up using any of these three methods under Settings:
Point the live camera scanner at a QR code containing your WooCommerce endpoint, keys, and sync server data. The QR code must use one of the two formats below:
{
"url": "https://yourstore.com",
"consumer_key": "ck_f4c398e09f5bc3a218d6e9871ab112f4...",
"consumer_secret": "cs_78c2e1047fa918b320d7d96a12b43ef8...",
"sync_server_url": "https://yourserver.com/api/audit"
}woonotify://connect?url=https://yourstore.com&key=ck_...&secret=cs_...&sync_url=https://yourserver.com/api/audit
If you have copied either the JSON configuration or the deep-link connection pattern above, WooNotify will showcase an automated autofill banner in the connection dialog. Simply tap "Auto-Connect from Clipboard" to automatically populate your parameters.
Want to test-drive features immediately? Tap "Populate Demo Credentials" in the Settings menu to load sample data and interface instantly with simulated WooCommerce orders.
- Android Studio Ladybug (or newer)
- Java SDK 17
- Gradle 8+
To compile and assemble the installer package (.apk):
# Compile and build Kotlin sources
gradle :app:compileDebugKotlin
# Build debug APK installer
gradle :app:assembleDebugAfter building is complete, your generated debug APK will be situated inside the output folder:
/app/build/outputs/apk/debug/app-debug.apk
- Camera Access (
android.permission.CAMERA): Only requested when configuring settings using the live QR Code Reader. Camera handles all frame analysis fully on-device. - SMS Listeners (
android.permission.RECEIVE_SMS/android.permission.READ_SMS): Utilized strictly to detect inbound gateway confirmation codes for auto-resolving invoices inside the core billing matching engine. No visual contact messages are shared or uploaded to the cloud without permission.
This project is licensed under the MIT License - see the LICENSE file for additional details.