Troubleshooting
On Phoca Cart, check two logs. Checkout start errors are always written to administrator/logs/razorpaycheckout_razorpay_phocacart.php. Phoca Cart's System Log (Components > Phoca Cart > System Log) also records them as Payment - Razorpay - ERROR, but only when Enable logging is on in Phoca Cart's Options (it is off by default). Set logging to record all entries, because the errors-only mode drops the plugin's entries. The most common Phoca-specific mistake is the webhook URL: it must end in pid= followed by the method's ID from the Payment list. A wrong pid, or the ID of a non-Razorpay method, makes the webhook answer HTTP 404 unknown method in Razorpay's webhook log. A 200 ignored reply is expected: the event belonged to another shop on the same Razorpay account.
Most checkout and webhook problems come from the mode, the keys, or the webhook URL.
- Log file:
administrator/logs/razorpaycheckout_razorpay_phocacart.php. Errors and rejected webhooks are always logged. Turn Debug on only while you are troubleshooting. Secrets are redacted. - Razorpay is missing at checkout. Publish the method, check access level and customer group, and make sure the cart currency is in Accepted currencies.
- Could not start the payment. Usually a wrong Key ID or secret, a test key used in Live mode, or the server cannot reach api.razorpay.com over HTTPS. Read the log.
- Paid, but the order is still pending. The customer closed the browser and there is no webhook. Set up the webhook. If the Razorpay Dashboard shows the payment captured, the next delivery updates the order, or you can set the status by hand.
- Webhook failures. HTTP 400 means the secret in Razorpay does not match the webhook secret for that mode. A 404 or an HTML page means the URL is wrong, the site is offline, or a firewall blocks POST requests from Razorpay. Razorpay retries for 24 hours and may then disable the webhook.
- Domain is not verified. Add and verify the business website in the Razorpay Dashboard before adding a webhook. Until then, payments confirm when the customer returns.
- Other currencies. Only after Razorpay enables International Payments. Then add the codes to Accepted currencies.
- Per-payment fee. JoomlaX does not charge a fee on each transaction. Razorpay charges its own fees, and it does not return that fee on a refund.
- Subscriptions. Recurring Razorpay subscriptions are not included. Each checkout is a one-time payment.
- Backward compatibility plugin. Not required. The code is native for the Joomla versions listed in Requirements.
- More than one shop. Install each shop product, or the All Shops Bundle. Each shop has its own webhook URL.