Resources
GitHub
The PayNow Nexus repository — source, issues, and how to contribute.
The PayNow SDK is open-source and developed in the open.
github.com/your-org/paynow-nexus — source, issues, contributions.
What's in the repo
| Path | Purpose |
|---|---|
packages/paynow_core/ |
Shared business logic — domain + data layers. |
packages/paynow_jaspr_sdk/ |
Jaspr web SDK + the gateway. |
examples/paynow_jaspr_ecommerce_demo/ |
Bella Cart merchant storefront. |
apps/paynow_docs/ |
This documentation site. |
scripts/start_local_stack.sh |
Boot gateway + merchant locally. |
scripts/build_cpanel.sh |
Static deploy artifacts for cPanel hosting. |
docs/ |
Internal architecture, design, and operations docs. |
Reporting issues
Open an issue on GitHub. Include:
- A short, specific title.
- The flow you were running (QR / OnePay account / PayNow wallet) and the OnePay endpoint involved.
- The full
PaymentApiExceptionmessage +codeif available. - Reproducer if you have one — a curl that triggers the bug, a minimal commit on a branch, or a screen recording of the gateway.
Contributing
The repo follows a few non-obvious conventions worth knowing:
- All business logic lives in
paynow_core. Host packages (paynow_jaspr_sdk) are thin renderers; never put logic there that the future Flutter SDK couldn't reuse. - Every state-changing request takes an
idempotencyKey. - Merchant credentials and HMAC secrets are read from
Platform.environmentat request time — neverString.fromEnvironment. - New
PaymentStatetransitions require a corresponding entry inPaymentStateMachine._allowedTransitions.
Before opening a PR:
dart pub get
dart analyze
dart test
All three should be clean. Tests use package:test and fake_async; UI components use package:jaspr_test.
License
See LICENSE in the repo root.