=== FormPays Pro === Contributors: codexdemon, versionnext Tags: payment, forms, razorpay, payu, form payment Requires at least: 5.0 Tested up to: 6.8 Requires PHP: 5.6 Requires PHP: 7.4 Stable tag: 1.1.3 Plugin URI: https://version-next.com/formpays-pro/ Author URI: https://version-next.com/ Developer URI: https://www.sanyog.in/ License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Create powerful, customizable, and secure payment forms with multiple gateways, conditional logic, and advanced analytics – all inside WordPress. == Description == FormPays Pro is a comprehensive payment form plugin designed to make online payments simple and secure. Whether you're running a small business or a large site, this plugin provides everything you need to collect payments through custom forms. From flexible payment forms to enterprise-grade security, FormPays Pro is designed to simplify online payments for businesses, nonprofits, and educators. = Core Features = * **Custom Payment Forms**: Create unlimited payment forms with custom fields * **Multiple Payment Gateways**: Support for Razorpay and PayU (more coming soon) * **Conditional Logic**: Show/hide fields based on user selections * **Shortcode Support**: Easy embedding with `[formpays_pro_payment_form id="123"]` * **Transaction Management**: Complete payment tracking and management * **Email Notifications**: Automatic notifications for payments and failures * **Email Templates**: Customize notification emails for customers and admins = Payment Gateways = * **Razorpay**: Cards, UPI, NetBanking, Wallets * **PayU**: Cards, UPI, NetBanking, Wallets * **Test Mode**: Development and testing support * **Webhook Integration**: Automatic payment status updates = Form Builder = * **Field Types**: Text, Email, Phone, Number, Select, Radio, Checkbox, Textarea * **Custom Fields**: Add unlimited custom fields * **Required Fields**: Mark fields as required * **Field Validation**: Built-in validation for all field types * **Drag & Drop**: Easy field reordering = Admin Features = * **Dashboard**: Overview of forms, transactions, and revenue * **Form Management**: Create, edit, and delete payment forms * **Transaction Tracking**: View all payments with filters and export * **Gateway Settings**: Secure configuration for payment gateways * **Email Templates**: Customize notification emails = Security Features = * **Nonce Verification**: CSRF protection for all forms * **Input Sanitization**: All user inputs are sanitized * **Encrypted Storage**: Sensitive gateway credentials are encrypted * **Webhook Verification**: Secure webhook handling with signature verification * **Permission Checks**: Admin-only access to sensitive operations == Installation == = Method 1: WordPress Admin (Recommended) = 1. Download the plugin ZIP file 2. Go to WordPress Admin → Plugins → Add New 3. Click "Upload Plugin" and select the ZIP file 4. Click "Install Now" and then "Activate Plugin" = Method 2: Manual Installation = 1. Extract the plugin files to `/wp-content/plugins/formpays-pro/` 2. Activate the plugin through the WordPress admin interface == Frequently Asked Questions == = How do I create my first payment form? = 1. Go to **FormPays Pro → Forms → Add New** 2. Fill in form details (title, description, gateway) 3. Add fields (Name, Email, Mobile, Amount, etc.) 4. Set up conditional logic if needed 5. Save the form 6. Use the generated shortcode: `[formpays_pro_payment_form id="1"]` = Which payment gateways are supported? = Currently supported: * Razorpay (Cards, UPI, NetBanking, Wallets) * PayU (Cards, UPI, NetBanking, Wallets) More gateways coming soon! = Is this plugin secure? = Yes! The plugin follows WordPress security best practices: * CSRF protection with nonce verification * Input sanitization and validation * Encrypted storage of sensitive data * Secure webhook handling * Permission-based access control = Can I customize the form appearance? = Yes! The plugin includes CSS classes for easy customization: * `.formpays-pro-form-wrapper` - Form container * `.formpays-pro-field` - Individual field * `.formpays-pro-field-label` - Field labels * `.formpays-pro-field-input` - Field inputs * `.formpays-pro-submit-btn` - Submit button = How do I test payments? = Both gateways support test mode: 1. Enable test mode in gateway settings 2. Use test credentials from your gateway dashboard 3. Test complete payment flow without real charges Test Cards: * **Razorpay Success**: 4111 1111 1111 1111 * **Razorpay Failure**: 4000 0000 0000 0002 * **PayU Success**: 4012 0000 0000 0000 * **PayU Failure**: 4000 0000 0000 0002 = What if I need help? = Check the troubleshooting section in the plugin documentation or contact support. == Screenshots == 1. Dashboard Interface 2. Payment Gateway Settings 3. Page Handling Common Settings 4. Get Started with FormPays Pro 5. Create New Payment Form 6. Edit Payment Form 7. Formpays Pro Template Form 8. Payment and Contact Form 9. Payment Transaction and Data Collection 10. Transaction Details 11. Analytics Dashboard 12. Drag and Drop Form Field 13. Notification Email Template == External Services == This plugin connects to third-party payment gateway services to process payments. Below is detailed information about each service: = Razorpay = * **What it is**: Payment gateway service for processing online payments in India * **When data is sent**: When a user submits a payment form using Razorpay gateway * **Data sent**: Customer name, email, mobile number, payment amount, currency, order details * **Purpose**: To create payment orders and process payments securely * **Service URL**: https://razorpay.com/ * **Terms of Service**: https://razorpay.com/terms/ * **Privacy Policy**: https://razorpay.com/privacy/ * **Documentation**: https://razorpay.com/docs/ = PayU = * **What it is**: Payment gateway service for processing online payments * **When data is sent**: When a user submits a payment form using PayU gateway * **Data sent**: Customer name, email, mobile number, payment amount, currency, order details * **Purpose**: To create payment orders and process payments securely * **Service URL**: https://payu.in/ * **Terms of Service**: https://payu.in/terms-of-use * **Privacy Policy**: https://payu.in/privacy-policy * **Documentation**: https://docs.payu.com/ = PayPal = * **What it is**: Global payment gateway service for processing online payments * **When data is sent**: When a user submits a payment form using PayPal gateway * **Data sent**: Customer name, email, payment amount, currency, order details * **Purpose**: To create payment orders and process payments securely * **Service URL**: https://paypal.com/ * **Terms of Service**: https://www.paypal.com/us/legalhub/useragreement-full * **Privacy Policy**: https://www.paypal.com/us/legalhub/privacy-full * **Documentation**: https://developer.paypal.com/ = PhonePe = * **What it is**: Digital payment platform for processing UPI and other payments in India * **When data is sent**: When a user submits a payment form using PhonePe gateway * **Data sent**: Customer name, email, mobile number, payment amount, currency, order details * **Purpose**: To create payment orders and process payments securely * **Service URL**: https://phonepe.com/ * **Terms of Service**: https://www.phonepe.com/terms-and-conditions/ * **Privacy Policy**: https://www.phonepe.com/privacy-policy/ * **Documentation**: https://developer.phonepe.com/ = Instamojo = * **What it is**: Payment gateway service for processing online payments in India * **When data is sent**: When a user submits a payment form using Instamojo gateway * **Data sent**: Customer name, email, mobile number, payment amount, currency, order details * **Purpose**: To create payment orders and process payments securely * **Service URL**: https://instamojo.com/ * **Terms of Service**: https://instamojo.com/terms/ * **Privacy Policy**: https://instamojo.com/privacy/ * **Documentation**: https://docs.instamojo.com/ **Data Security**: All payment data is transmitted securely using HTTPS encryption. Customer payment details (card numbers, etc.) are handled directly by the payment gateways and never stored on your WordPress site. **User Consent**: By using payment forms created with this plugin, users consent to their payment data being processed by the selected payment gateway according to that gateway's terms and privacy policy. == Requirements == * WordPress 5.0 or higher * PHP 7.4 or higher * MySQL 5.6 or higher * SSL certificate (recommended for production) == Configuration == = 1. Gateway Setup = 1. Go to **FormPays Pro → Settings** 2. Select your preferred payment gateway 3. Enter your gateway credentials: * **Razorpay**: Key ID, Key Secret, Webhook Secret * **PayU**: Merchant Key, Salt Key, Authorization Header = 2. Create Your First Form = 1. Go to **FormPays Pro → Forms → Add New** 2. Fill in form details (title, description, gateway) 3. Add fields (Name, Email, Mobile, Amount, etc.) 4. Set up conditional logic if needed 5. Save the form = 3. Embed the Form = Use the generated shortcode in any post or page: `[formpays_pro_payment_form id="1"]` == Usage == = Creating Payment Forms = Basic form structure: ```php $form_data = array( 'title' => 'Product Payment', 'description' => 'Complete your purchase', 'gateway' => 'razorpay', 'amount_type' => 'fixed', 'fixed_amount' => 999.00, 'currency' => 'INR', 'fields' => array( array( 'id' => 'name', 'label' => 'Full Name', 'type' => 'text', 'required' => true ), array( 'id' => 'email', 'label' => 'Email Address', 'type' => 'email', 'required' => true ), array( 'id' => 'mobile', 'label' => 'Mobile Number', 'type' => 'tel', 'required' => true ) ) ); ``` = Conditional Logic = ```php $conditional_logic = array( array( 'field' => 'payment_type', 'operator' => 'equals', 'value' => 'business', 'action' => 'show', 'target' => 'company_name' ) ); ``` = Payment Processing = Form submission: ```php add_action('wp_ajax_formpays_pro_submit_form', 'handle_payment'); add_action('wp_ajax_nopriv_formpays_pro_submit_form', 'handle_payment'); function handle_payment() { // Form data is automatically processed // Payment gateway is initialized // User is redirected to payment page } ``` Webhook handling: ```php // Webhook endpoints are automatically created // /wp-json/formpays-pro/v1/webhook/razorpay // /wp-json/formpays-pro/v1/webhook/payu ``` = Transaction Management = Get transaction: ```php global $formpays_pro; $transaction = $formpays_pro->transactions->get_transaction('TXN_123'); ``` Update status: ```php $result = $formpays_pro->transactions->update_transaction_status( 'TXN_123', 'success' ); ``` == Customization == = Styling = The plugin includes CSS classes for easy customization: ```css .formpays-pro-form-wrapper { /* Form container */ } .formpays-pro-field { /* Individual field */ } .formpays-pro-field-label { /* Field labels */ } .formpays-pro-field-input { /* Field inputs */ } .formpays-pro-submit-btn { /* Submit button */ } ``` = JavaScript Events = ```javascript // Form submission events jQuery(document).on('formpays_pro_form_submit', function(e, formData) { // Custom handling before submission }); // Payment success events jQuery(document).on('formpays_pro_payment_success', function(e, response) { // Custom handling after successful payment }); ``` = Hooks and Filters = ```php // Modify form data before processing add_filter('formpays_pro_form_data', 'modify_form_data', 10, 2); // Custom payment validation add_filter('formpays_pro_validate_payment', 'custom_validation', 10, 2); // Modify email content add_filter('formpays_pro_email_content', 'customize_email', 10, 3); ``` == Testing == = Test Mode = Both Razorpay and PayU support test mode: 1. Enable test mode in gateway settings 2. Use test credentials from your gateway dashboard 3. Test complete payment flow without real charges = Test Cards = **Razorpay:** * Success: 4111 1111 1111 1111 * Failure: 4000 0000 0000 0002 **PayU:** * Success: 4012 0000 0000 0000 * Failure: 4000 0000 0000 0002 == Email Notifications == = Available Notifications = * **Payment Success - Customer**: Confirmation email to customer with transaction details * **Payment Success - Admin**: Notification to admin about successful payment * **Payment Failed - Customer**: Failure notification with retry information * **Payment Failed - Admin**: Alert to admin about failed payment = Email Template Customization = 1. Go to **FormPays Pro → Email Notifications** 2. Customize email templates with dynamic placeholders: - `{transaction_id}` - Transaction ID - `{amount}` - Payment amount - `{customer_name}` - Customer name - `{customer_email}` - Customer email - `{payment_date}` - Payment date and time - `{payment_method}` - Selected payment method - `{form_title}` - Form title - `{site_name}` - Your site name 3. Enable/disable individual email notifications 4. Test email functionality to verify settings = Customization = ```php // Modify email templates add_filter('formpays_pro_email_template', 'custom_email_template', 10, 3); // Add custom notification recipients add_filter('formpays_pro_admin_emails', 'add_custom_emails'); ``` == Troubleshooting == = Common Issues = **Payment Not Processing:** 1. Check gateway credentials 2. Verify webhook URLs are set correctly 3. Check server logs for errors 4. Ensure SSL is enabled (for live mode) **Forms Not Displaying:** 1. Check if form is published 2. Verify shortcode syntax 3. Check for JavaScript conflicts 4. Review browser console for errors **Webhook Issues:** 1. Verify webhook secret is correct 2. Check webhook URL accessibility 3. Review server logs for webhook failures 4. Test webhook endpoint manually = Debug Mode = Enable WordPress debug mode for detailed error logging: ```php // wp-config.php define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); ``` == API Reference == = REST API Endpoints = ``` GET /wp-json/formpays-pro/v1/forms/{id} GET /wp-json/formpays-pro/v1/transactions/{id} POST /wp-json/formpays-pro/v1/webhook/{gateway} ``` = AJAX Actions = ```php // Form submission wp_ajax_formpays_pro_submit_form wp_ajax_nopriv_formpays_pro_submit_form // Admin actions wp_ajax_formpays_pro_save_form wp_ajax_formpays_pro_delete_form wp_ajax_formpays_pro_save_gateway_settings ``` == Changelog == = 1.1.3 = * **Features**: Added Email Notifications & Confirmations menu with customizable email templates * **Features**: Automatic email notifications for payment success and failure to customers and admins * **Features**: Test email functionality to verify email settings * **Features**: Smart phone number formatting with country code for Razorpay integration * **Bug Fix**: Fixed deprecated dynamic property warning for email_handler * **Bug Fix**: Resolved payment method selection not being passed to Razorpay gateway * **Bug Fix**: Fixed customer phone number not being prefilled in Razorpay checkout * **Bug Fix**: Corrected transaction time display on success page * **Enhancement**: Enhanced success page with more detailed transaction information * **Code Quality**: Fixed placeholder ordering in translatable strings * **Code Quality**: Added WordPress Coding Standards compliance for email notifications = 1.1.2 = * **Security**: Fixed unsafe redirects - now uses wp_safe_redirect() for all admin redirects * **Security**: Resolved WordPress global variable conflicts (page, status, per_page) * **Security**: Enhanced nonce verification across admin functions * **Compliance**: Plugin now meets WordPress.org security requirements * **Quality**: 95% WordPress Coding Standards compliance = 1.1.1 = * **Code Quality**: Applied 36,318+ WordPress Coding Standards fixes * **JavaScript**: Moved inline scripts to dedicated files for better performance * **Standards**: Enhanced code formatting and documentation * **Compliance**: Ready for WordPress Plugin Directory submission = 1.1.0 = * **Features**: Added PhonePe gateway integration with SDK v2 * **Security**: Enhanced webhook verification and nonce handling * **Performance**: Improved database queries and caching * **UI/UX**: Enhanced admin interface and form builder = 1.0.0 = * Initial release * Razorpay and PayU integration * Form builder with conditional logic * Complete transaction management * Email notification system * Admin dashboard and settings * REST API and webhook support == Contributing == We welcome contributions! Please follow these steps: 1. Fork the repository (https://github.com/sanyogs/formpays-pro) 2. Create a feature branch 3. Make your changes 4. Add tests if applicable 5. Submit a pull request == License == This plugin is licensed under the GPL v2 or later. == Acknowledgments == * WordPress community for the amazing platform * Razorpay and PayU for their excellent APIs * All contributors and beta testers --- **FormPays Pro** - Making payment forms simple and powerful!