Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/snwful/wc-promptpay/archive/refs/heads/main.zipWooCommerce payment gateway that integrates with n8n for inline PromptPay slip verification on the checkout page.
Description
Scan & Pay (n8n) is a WooCommerce payment gateway plugin that enables customers to pay using PromptPay QR codes and verify their payment inline during checkout without leaving the page.
Key Features
- Inline Payment Verification - Customers can verify payment without leaving checkout
- Two Checkout Modes - Support for both Classic and Blocks checkout
- Auto-submit Option - Automatically submit orders after payment approval
- Express Payment Button - Quick payment option in Blocks mode
- Secure Integration - HMAC-signed communication with n8n webhook
- Admin Management - Complete order management with slip preview and actions
- File Security - EXIF data stripping and randomized filenames
- Rate Limiting - Built-in protection against abuse
- Accessibility - Full a11y support with ARIA labels
- Internationalization - Translation-ready with RTL support
Requirements
- WordPress 6.0 or higher
- WooCommerce 7.0 or higher
- PHP 8.0 or higher
- n8n webhook endpoint configured
- GD or Imagick PHP extension for image processing
Installation
- Upload the
scanandpay-n8nfolder to/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu in WordPress
- Go to WooCommerce > Settings > Payments
- Enable "Scan & Pay (n8n)" payment method
- Configure your settings:
- Enter your PromptPay ID/Phone number
- Set your n8n webhook URL and secret
- Configure file upload limits and retention
- Enable desired checkout modes
Configuration
Basic Settings
- Title - Payment method title shown to customers
- Description - Payment method description
- PromptPay ID - Your PromptPay identifier (phone/ID/tax number)
n8n Integration
- Webhook URL - Your n8n webhook endpoint URL
- Webhook Secret - Shared secret for HMAC signing
- Amount Tolerance - Acceptable payment difference (THB)
- Time Window - Payment verification time limit (minutes)
Checkout Modes
- Classic Mode - Auto-submit after approval option
- Blocks Mode - Express button or experimental auto-submit
- Debounce Time - Prevent double-submit delay (ms)
File Upload
- Max File Size - Maximum slip image size (MB)
- Allowed Formats - JPG, PNG
- Retention Days - Auto-cleanup old files
- EXIF Stripping - Automatic privacy protection
Admin Features
Order Management
- View payment slip thumbnail
- Check verification status
- See approved amount and reference ID
- Access rejection reasons
- View timestamps and audit log
Admin Actions
- Re-verify - Retry payment verification
- Approve - Manually approve payment
- Reject - Manually reject with reason
- All actions logged with user and timestamp
Capabilities
- Custom capability:
manage_san8n_payments - Administrators have this by default
- Can be assigned to other roles as needed
Security Features
- HMAC signature verification on all API calls
- Rate limiting (5 requests per minute per IP)
- File type and size validation
- EXIF data stripping for privacy
- Randomized file names
- Nonce verification on all AJAX calls
- Capability checks for admin actions
- PII masking in logs
Developer Information
Hooks and Filters
san8n_before_verify_payment- Before payment verificationsan8n_after_verify_payment- After payment verificationsan8n_payment_approved- When payment is approvedsan8n_payment_rejected- When payment is rejectedsan8n_file_upload_args- Modify file upload parameterssan8n_webhook_timeout- Adjust webhook timeout
REST API Endpoints
POST /wp-json/san8n/v1/verify-slip- Verify payment slipGET /wp-json/san8n/v1/status- Check verification status
Constants
SAN8N_VERSION- Plugin versionSAN8N_GATEWAY_ID- Payment gateway IDSAN8N_OPTIONS_KEY- Settings option keySAN8N_SESSION_FLAG- Session approval flagSAN8N_LOGGER_SOURCE- Logger source identifier
Troubleshooting
Common Issues
Payment not verifying:
- Check n8n webhook URL is correct
- Verify webhook secret matches
- Ensure n8n service is running
- Check server time synchronization
File upload errors:
- Verify GD/Imagick is installed
- Check upload directory permissions
- Ensure file size limits are appropriate
- Confirm PHP memory limit is sufficient
Auto-submit not working:
- Enable Classic auto-submit in settings
- Check JavaScript console for errors
- Verify no checkout validation errors
- Ensure cart hasn't changed after approval
Frequently Asked Questions
Does this plugin support WooCommerce Blocks?
Yes, full support for both Classic and Blocks checkout with dedicated UI for each.
Can I use this without n8n?
No, this plugin requires n8n webhook integration for payment verification.
Is the QR code generated dynamically?
Version 1.0 uses a placeholder QR. Dynamic EMVCo QR generation is planned for v2.
Can customers pay multiple times?
No, once a payment is approved, the session is locked to prevent duplicate payments.
How long are payment slips stored?
Configurable retention period (default 30 days) with automatic cleanup.
Can I manually approve payments?
Yes, administrators can manually approve or reject payments from the order edit page.
Changelog
1.0.0
- Initial release
- Classic checkout support with auto-submit
- Blocks checkout with Express button
- n8n webhook integration
- Admin order management
- File upload with EXIF stripping
- Rate limiting and security features
- Full i18n and RTL support
Upgrade Notice
1.0.0
Initial release of Scan & Pay (n8n) payment gateway for WooCommerce.