YuPay - In-Game Payment/Donation Supporting WeChat Pay and Alipay icon

YuPay - In-Game Payment/Donation Supporting WeChat Pay and Alipay -----

YuPay — A Modern In-Game Payment/Donation Plugin for 1.8.x-1.21.x, Supporting WeChat Pay and Alipay




Update to support JDK 8

YuPay Release Notes · v1.2.2.0-SNAPSHOT
Callback Server Upgrade
The built‑in HTTP callback server has been replaced from the JDK’s com.sun.net.httpserver to Undertow 2.3.18.Final.

Undertow is a production‑grade HTTP server from the JBoss/WildFly project, widely used in enterprise Java applications. For plugin users, the most noticeable changes are:

  • Callback notifications are no longer queued or blocked when the server is busy – responses to WeChat Pay / Alipay notifications become more timely.
  • A request body size limit (default 64 KB) is added; abnormal requests are rejected directly, saving server resources.
  • An optional IP whitelist is added – when configured, only requests from the official WeChat/Alipay servers can reach the callback endpoint.
  • When the plugin stops, the callback server waits for in‑flight requests to finish before shutting down, so ongoing order confirmations are not interrupted.
First Launch Instructions
Undertow and its dependencies are not bundled inside the plugin JAR. They will be automatically downloaded from Maven Central and cached in plugins/YuPay/libs/ when the server starts for the first time.

On first launch you will see log messages similar to the following – this is normal:

[LibraryLoader] Downloading: undertow-core-2.3.18.Final.jar ← https://repo1.maven.org/maven2/...
[LibraryLoader] ✓ Download completed: undertow-core-2.3.18.Final.jar (xxx KB)
[LibraryLoader] ✓ Verification passed (newly downloaded): undertow-core-2.3.18.Final.jar

After the download completes, subsequent startups use the cached files without requiring an internet connection.

Note: The server must be able to access repo1.maven.org on first launch. Please ensure network connectivity.

New Configuration Options in config.yml
The following optional fields have been added under the existing callback: node. If omitted, the default values (shown in parentheses) will be used:

callback:
port: 8080
host: "0.0.0.0"

# Threading model
io-threads: 2 # Number of IO threads – recommended not to exceed CPU cores (default 2)
worker-threads: 8 # Number of worker threads for business processing (default 8)

# Timeouts (milliseconds)
read-timeout-ms: 10000
write-timeout-ms: 10000

# Security
max-body-size: 65536 # Maximum request body size in bytes (default 64 KB)
allowed-ips: [] # IP whitelist – leave empty to disable

# Debugging
access-log: false # When enabled, logs every callback to the console

# Shutdown behavior
shutdown-grace-ms: 3000 # Grace period for graceful shutdown (milliseconds)

Old configuration files do not need to be modified manually. Any unspecified fields will fall back to the defaults, and the plugin can be updated without issues.

Other Fixes
  • Fixed an issue where cumulative sponsorship tier records were not saved when using SQLite. The original code used MySQL‑specific ON DUPLICATE KEY UPDATE syntax, which caused errors on SQLite and resulted in lost tier records. The plugin now automatically selects the correct syntax based on the database type.
  • Fixed a missing app_id consistency check for Alipay callbacks. The plugin now verifies that the app_id in the callback matches the one configured.
  • Added a timestamp replay attack prevention check for WeChat Pay callbacks. Callbacks with a timestamp older than 5 minutes are rejected.
If you encounter any issues after the upgrade, please feel free to join our QQ group 1080918424 for feedback.

fix help command
fix libraryloader
----------, Mar 22, 2026

YuPay 1.2.1 → 1.2.1.1 Changelog
Update Overview
This update focuses on comprehensive stability and maintainability improvements. We have invested significant effort in thoroughly testing all features across all major Minecraft versions from 1.8 to 1.21, ensuring consistent and reliable performance in various server environments. Additionally, the core code has been deeply refactored, and built-in dependencies have been removed, resulting in a smaller plugin size, cleaner structure, and easier future maintenance.

✅ Version Compatibility & Testing

  1. Full Version Compatibility Testing
    • Conducted complete regression testing on all major Minecraft versions from 1.8.x to 1.21.x.
    • Resolved compatibility issues that caused feature malfunctions, command errors, or UI display problems across different API versions, ensuring consistent behavior on all supported platforms.
    • Improved interaction logic with economy plugins (Vault) across different versions, eliminating potential compatibility risks.
Improvements

  1. Code Refactoring
    • Performed a comprehensive refactoring of the plugin's core logic, resulting in clearer functional module separation.
    • Optimized code structure, eliminated redundant code, and significantly improved readability and maintainability, laying a solid foundation for future feature development.
    • Standardized exception handling and logging for easier troubleshooting.
  2. Size Optimization
    • Removed all built-in dependencies (such as HikariCP). These are now dynamically loaded via the server’s lib/ directory or environment.
    • This greatly reduces the plugin JAR file size and avoids conflicts caused by dependency version mismatches.
  3. Configuration & File Structure
    • With the removal of bundled dependencies, the plugin file structure is now leaner, containing only the core functional code.
Bug Fixes

  • Fixed command tab-completion issues on certain versions caused by API changes.
  • Resolved issues where certain features failed to work correctly on 1.13+ versions due to Material name changes.
  • Fixed potential exceptions in item generation and detection across different versions.
Configuration Changes
This update does not modify the structure of config.yml or messages.yml. The configuration version remains unchanged.

  • Important Note: Because built-in dependencies have been removed, please ensure that required dependencies (such as Vault) are properly installed and configured on your server, and that their versions are compatible with your server core.
Update Guide

  1. Backup: Stop your server and back up the existing plugins/YuPay/ folder.
  2. Replace: Delete the old YuPay-1.2.1.jar file and place the new YuPay-1.2.1.1.jar into the plugins/ directory.
  3. Start: Start your server. The plugin will automatically load the new code.
  4. Verify: After startup, check the console logs to ensure the plugin loads without errors. It is recommended to test core functions (such as /pay) in-game to confirm everything works as expected.
Feedback & Support
If you encounter any issues with the new version, please feel free to join our QQ group for support: 1080918424.

Version: 1.2.1.1 Release Date: March 21, 2026
----------, Mar 21, 2026

YuPay 1.2 → 1.2.1 Changelog
Overview
This update focuses on feature enhancements and user experience improvements. It introduces a no‑reward donation mode, global blacklist, dynamic PAPI placeholders, in‑game configuration changes, and numerous hardcoded message cleanups, making the plugin more maintainable and flexible.

✨ New Features
1. No‑Reward Donation Mode (-n / --no-reward)
  • Players can donate without receiving any economy or command rewards by adding -n to the command, e.g., /pay 100 -n.
  • Order identification: No‑reward orders have a FREE_ prefix in the order ID.
  • Use case: Pure support for the server without affecting game economy.
2. Global Blacklist
  • Use the keyword all to ban or unban all players at once.
  • Commands:
    • /yupay ban all [reason] – disables donations for everyone.
    • /yupay unban all – removes the global ban.
  • Use case: Quickly stop all donations in case of emergencies.
3. Dynamic PAPI Placeholders
  • New placeholders:
    • %yupay_top_<rank>_name% and %yupay_top_<rank>_amount% – supports both new (top_1_name) and old (top1_name) formats.
    • %yupay_is_banned%
    • %yupay_total_orders%, %yupay_success_orders%
    • %yupay_orders_in_<time>%, %yupay_success_orders_in_<time>%, %yupay_amount_in_<time>%
    • Server‑wide equivalents: %yupay_server_total_orders%, %yupay_server_success_orders%, %yupay_server_orders_in_<time>%, %yupay_server_success_orders_in_<time>%, %yupay_server_amount_in_<time>%
  • All time placeholders accept milliseconds as <time>.
4. Enhanced Dynamic Configuration Editing
  • New configuration options economy.enabled and commands.enabled.
  • /yupay set now supports:
    • economy-enabled true/false – toggle economy rewards.
    • commands-enabled true/false – toggle command rewards.
    • min-amount, max-amount, max-daily-amount – adjust amount limits on the fly.
  • New /yupay config command to view current configuration (admin only).
5. Message System Cleanup
  • All hardcoded text has been moved to messages.yml.
  • New message keys added:
    • pay-success-no-reward – success message for no‑reward donations.
    • config-header, config-footer, config-line – config display interface.
    • set-invalid-boolean – error for invalid boolean input.
    • Updated ban-usage and unban-usage to include all.
    • Database‑related logs now use consistent db-* keys.
6. Database Enhancements
  • New methods in PaymentDAO:
    • getOrderCountByUUID(), getOrderCountByUUIDInTime()
    • getServerOrderCount(), getServerOrderCountInTime(), getServerAmountInTime()
Optimizations & Improvements
Code Structure
  • Unified QR code generation into QRCodeUtils.
  • Merged MessageUtils methods into MessageManager.
  • Streamlined no‑reward flag handling in PayCommand and YupayCommand.
Version Compatibility
  • Config version upgraded to 5.
  • Messages version upgraded to 5.
  • Vault is now a soft dependency (removed from depend list).
Logging
  • Database operations now use centralized message keys.
  • Blacklist actions log detailed information.
Bug Fixes
  • Fixed no‑reward mode still triggering economy and command rewards.
  • Fixed map QR code display issues on some server versions.
  • Fixed global ban not preventing players from donating.
Configuration Changes
New config.yml Options
economy:
# Whether economy rewards are enabled
enabled: true

commands:
# Whether command rewards are enabled
enabled: true

New messages.yml Keys
pay-success-no-reward: "&a&l✅ &fDonation successful! You chose no-reward mode and received no bonuses."

config-header: "&6&m⎯⎯⎯&r &e&l⚙ YuPay Configuration &6&m⎯⎯⎯&r"
config-footer: "&6&m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯&r"
config-line: "&e{key}&7: &f{value}"

set-invalid-boolean: "&cPlease enter true or false"

Upgrade Guide
Automatic Update
  1. Stop your server.
  2. Replace the JAR with YuPay-1.2.1-SNAPSHOT.jar.
  3. Start the server. The plugin will automatically update config files while preserving your custom values.
  4. Check the console log for confirmation.
Manual Update (if automatic fails)
  1. Back up your config.yml and messages.yml.
  2. Delete the old config files.
  3. Start the server to generate fresh configs.
  4. Restore your custom settings manually from the backups.
Support
For any questions or feedback, join our community:

QQ Group: 1080918424

Version: 1.2.1-SNAPSHOT
Release Date: March 20, 2026
----------, Mar 20, 2026

Dear Server Owners, thank you for using YuPay! This update brings a host of new features, optimizations, and bug fixes designed to provide you with a more powerful and flexible donation management experience. Below are the detailed changes from version 1.1.1 to 1.2.

✨ New Features
1. Donation Blacklist System
  • Administrators can now ban specific players from using the donation feature, with an optional reason.
  • Commands:
    • /yupay ban <player> [reason] – Ban a player from donating
    • /yupay unban <player> – Unban a player
  • Banned players attempting to use /pay will receive a warning message, including the reason if provided.
  • The database automatically creates the yu_banned_players table; no manual intervention required.
2. Currency Conversion Feature
  • Administrators can use the /yupay convert command to convert between Vault currency and PlayerPoints.
  • Conversion rates can be set in config.yml (under the conversion-rates section).
  • Command format: /yupay convert <player> <source_type(vault/points)> <target_type(vault/points)> <amount>
3. Donation Amount Limits
  • Configurable minimum/maximum single donation amounts (pay.min-amount / pay.max-amount, -1 for unlimited).
  • Configurable daily cumulative donation limit (pay.max-daily-amount); players exceeding this limit cannot donate further that day.
  • Clear warning messages are shown when limits are exceeded.
4. Multiple QR Code Output Modes
  • In addition to the original clickable link, now supports:
    • Text QR Code: Generates an ASCII-art QR code in chat, suitable for clients that cannot click links (e.g., Bedrock Edition). Can be used via /pay <amount> text.
    • Map QR Code: Generates a map item with the QR code placed in the player's inventory (requires ProtocolLib). Can be used via /pay <amount> map.
  • Default output mode can be set in config.yml (qrcode.default-output-mode: link / text / map).
5. Order History Query
  • Players can use /yupay history [page] to view their own donation records (order ID, amount, status, time).
  • Administrators can use /yupay history <player> [page] to view other players' history.
6. More PAPI Placeholders
  • %yupay_has_paid_in_<time_milliseconds>% – Whether the player has donated within the specified time (true/false)
  • %yupay_recent_amount_gt_<time_milliseconds>_<amount>% – Whether donations within the specified time exceed a threshold (true/false)
  • %yupay_pay_methods_count% – Number of available payment channels
  • %yupay_pay_methods_list% – List of available payment channel names (comma separated)
  • %yupay_is_limited% – Whether the player is currently restricted by the daily limit (true/false)
  • %yupay_daily_remaining% – Remaining donation amount for today
7. Customizable Order Subject
  • The product name for payment orders can now be customized in config.yml under pay.order-subject, supporting {player} and {amount} variables.
8. Fully Customizable Command Aliases
  • All command aliases can now be fully customized in the commands section of config.yml, no longer restricted by plugin.yml. For example, you can change /pay to /donate.
⚙️ Configuration Changes
  • New Configuration Options:
    • pay.min-amount – Minimum single donation amount (default: 0.01)
    • pay.max-amount – Maximum single donation amount (default: -1)
    • pay.max-daily-amount – Maximum cumulative daily donation amount (default: -1)
    • pay.order-subject – Order subject template
    • conversion-rates.vault-to-points / points-to-vault – Currency conversion rates
    • qrcode.default-output-mode – Default QR code output mode
    • qrcode.text-qr-size / text-black-char – Text QR code parameters
    • database.mysql.jdbc-params – Customizable MySQL JDBC parameters
    • database.table-names.banned-players – Blacklist table name (default: yu_banned_players)
  • Automatic Database Updates: On first startup of version 1.2, the plugin will automatically create the blacklist table and update indexes. It is recommended to back up your database beforehand, but the plugin includes a safe update mechanism.
Command Changes
  • New Subcommands for /yupay:
    • set <option> <value> – Dynamically modify configuration (e.g., default payment method, economy type, conversion rates)
    • ban / unban – Manage the blacklist
    • convert – Currency conversion
    • history – Order history query
  • The /pay command now supports a third parameter to specify output mode:
    • /pay 10 – Uses the default mode
    • /pay 10 wechat text – Specifies WeChat as the payment method and outputs a text QR code
  • All command aliases can be fully customized via the commands section in config.yml.
Permission Changes
The following permission nodes have been added, allowing fine-grained control using plugins like LuckPerms:

Permission Node Description Default
yupay.command.pay Allows use of the pay command All players
yupay.command.top Allows viewing the leaderboard All players
yupay.command.total Allows viewing total donation amounts All players
yupay.command.history Allows viewing one's own donation history All players
yupay.reload Allows reloading the configuration OP
yupay.ban Allows managing the blacklist OP
yupay.convert Allows performing currency conversion OP
yupay.admin Includes all OP permissions above OP
yupay.user Includes all basic player permissions All players
Dependency Changes
  • New Optional Dependency:
    • ProtocolLib – Required for the map QR code feature (can be ignored if not using map mode)
Bug Fixes
  • Leaderboard Display Error: After players change their names, the leaderboard no longer shows duplicate entries; it now groups by UUID and uses the latest player name.
  • Database Connection Optimization: The connection pool now supports SQLite and allows custom JDBC parameters, improving MySQL stability.
  • Message Text Supports More Placeholders: For example, {command} is now available to dynamically display the actual command name, ensuring help messages are correct even after aliases are customized.
⚠️ Important Notes
  1. Before updating, please back up your configuration files (config.yml and messages.yml). The plugin will automatically preserve your modified settings, but it's better to be safe.
  2. If using MySQL, it is recommended to set jdbc-params in the configuration for optimal performance (example parameters are provided).
  3. To use the map QR code mode, you must install ProtocolLib; otherwise, this mode will not work.
  4. The text QR code mode requires no additional dependencies, but the ASCII art may not display perfectly in all chat fonts. You can adjust text-qr-size and text-black-char for better results.
Thank you again for your support! If you have any questions or suggestions, feel free to join our QQ discussion group: 1080918424.

Wishing your server great success!

—— YuPay Development Team
----------, Mar 19, 2026

YuPay Changelog - Version 1.1.1
Dear server owners and players, thank you for using YuPay! This update (1.1.1) focuses on optimizing and enhancing configuration management, the logging system, sound compatibility, and PlaceholderAPI integration, making the plugin even smoother to use. Here are the detailed changes:

✨ New Features & Enhancements
1. Smart Configuration Update Mechanism (No more manual tweaking!)
  • When an outdated configuration file is detected, the plugin automatically backs up the old file (e.g., config.yml.backup_1) and generates a brand new default configuration.

  • Automatically preserves your custom settings: The plugin intelligently identifies keys present in both the old and new configurations and migrates only those values from the old config to the new one. This ensures that your crucial settings—such as payment keys, database passwords, exchange rates—are never lost, while you still get the latest default options.

  • The configuration update process is fully transparent, with detailed logs printed to the console.
2. Enhanced Messaging System (Goodbye to startup error logs)
  • The message manager (MessageManager) now has a built-in fallback mechanism. Even before updating configuration files, it can load default messages from the plugin's JAR, ensuring all logs and prompts display correctly.

  • No more repetitive "message missing" warnings at startup; console output is much cleaner.
3. Improved Sound Utilities (More stable cross-version compatibility)
  • SoundUtils now uses lazy initialization, performing version detection only after the plugin has fully loaded, avoiding issues with accessing plugin instances during class loading.

  • All log output now uses the plugin's own Logger and supports customization via the message file, making it easier to unify log formatting.

  • Friendlier error messages when sound playback fails, with fallback sounds ensuring functionality remains unaffected.
4. PlaceholderAPI Expansion Upgrade (More useful placeholders)
  • Version synchronization: The placeholder expansion version now matches the plugin's main version (changed from 1.0 to 1.1.1), no longer hardcoded.

  • New placeholders:
    • %yupay_total_all% – Total server-wide donations (CNY)

    • %yupay_recent_day% – Player's donations in the last 24 hours

    • %yupay_recent_week% – Player's donations in the last 7 days

    • %yupay_recent_month% – Player's donations in the last 30 days
  • Existing placeholders (%yupay_total%, %yupay_rank%, %yupay_top{n}_name%, %yupay_top{n}_amount%) remain stable and fully functional.
5. Internal Code Optimizations
  • Removed all hardcoded log texts; now unified through the message manager for better multi-language support.

  • Improved command registration logic to ensure custom primary names and aliases work correctly.

  • Enhanced exception handling in database queries to prevent a single failure from affecting the entire plugin.
Bug Fixes
  • Fixed the issue where "message missing" warnings repeatedly appeared at startup due to outdated message files.

  • Fixed the bug where the PlaceholderAPI expansion version always showed as 1.0.

  • Fixed compatibility issues in SoundUtils that could cause sound constants not to be found on older server versions.

  • Fixed the problem where user customizations could be accidentally overwritten during configuration updates (now smart retention is implemented).
How to Update
  1. Replace the old YuPay.jar in your server's plugins folder with the new version.

  2. Highly recommended: On the first startup with the new version, the plugin will automatically back up and update your configuration files. If you've made custom changes before, please check config.yml and messages.yml to ensure your custom values are retained, and verify that the new version numbers (config-version and messages-version) have been updated to 1.

  3. If you use PlaceholderAPI, the new placeholders will take effect immediately without any extra steps.
Feedback & Support
If you encounter any issues or have suggestions, feel free to join our community group: 1080918424 (QQ)
----------, Feb 27, 2026

✨ New Feature: Dynamic Command Registration
You can now customize the main names and aliases of all commands through commands.names and commands.aliases in config.yml, without modifying plugin.yml.

  • Main Name Customization: For example, change /pay to /donate by simply setting pay: "donate" in the configuration.

  • Alias Extension: Add multiple additional aliases for each command, making it easier for players to remember and use.

  • Hot Reload Support: After executing /yupay reload, new command names and aliases take effect immediately without restarting the server.
✨ New Feature: Automatic Configuration File Update (Multi-language Support)
The plugin now automatically detects the versions of config.yml and messages.yml on startup and intelligently merges newly added configuration items while preserving all your custom settings.

  • Version Control: New config-version / messages-version fields have been added at the top of configuration files. The plugin determines whether an update is needed based on these version numbers.

  • Dynamic Messages: Log prompts during the update process have been changed from hardcoded text to being read from messages.yml. You can now freely modify these prompt texts to achieve multi-language adaptation.
Bug Fixes
  • Fixed an issue where some aliases were not properly refreshed after reloading commands, ensuring the reliability of dynamic command registration.
⚠️ Upgrade Notice
This update involves changes to configuration file versions. The plugin will automatically merge newly added items and update version numbers on first startup. We recommend backing up your original configuration files before upgrading, just in case.

Thank you for using YuPay! If you have any questions or suggestions, please join our QQ group: 1080918424.
----------, Feb 27, 2026

We've completely overhauled the core code to achieve a massive backward compatibility leap. One download now works seamlessly across Minecraft 1.8, 1.9, 1.10... all the way to the latest 1.21.
----------, Feb 8, 2026

Resource Information
Author:
----------
Total Downloads: 28
First Release: Feb 7, 2026
Last Update: Yesterday at 7:21 AM
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings