Troubleshooting
"The provided interactions endpoint URL could not be verified"
→ Make sure you have saved the extension settings with the correct Public Key in Paymenter before entering the URL in the Developer Portal.
"Bot didn't respond in time"
→ Your Paymenter instance must be reachable over HTTPS from the internet. Check that port 443 is open and your SSL certificate is valid.
Slash commands don't appear in Discord
→ If you set a Guild ID, commands appear instantly. Without a Guild ID, global commands can take up to 1 hour to propagate.
→ Make sure the bot has been invited with the applications.commands scope (see Step 7).
→ You can manually re-register all commands via SSH from your Paymenter directory:
php artisan tinker --execute="
\$settings = \App\Models\Extension::where('extension', 'Discord')->where('type', 'other')->first()->settings->pluck('value', 'key')->toArray();
\$discord = new \Paymenter\Extensions\Others\Discord\Discord(\$settings);
\$discord->registerDiscordCommands();
echo 'Done';
"
/link gives an error or the OAuth flow doesn't work
→ Double-check that the redirect URL in OAuth2 → Redirects matches exactly:
https://YOUR_DOMAIN/discord/oauth/callback
"Permission denied" error on storage/logs when installing/updating
→ Run this in your Paymenter directory via SSH to fix the file ownership:
chown -R www-data:www-data storage/
Then try installing/updating the extension again.
This happens when Artisan commands were previously run as
root. To avoid it in the future, prefix artisan commands withsudo -u www-data.
"Permission denied" when uploading the extension (rename ... Permission denied)
→ The web server has no write access to the extensions/ folder. Fix it with:
chown -R www-data:www-data extensions/
Then upload the extension again.