Troubleshooting
HikaShop problems can leave traces in two logs. The plugin always writes errors to administrator/logs/razorpaycheckout_razorpay_hikashop.php; its Debug setting only adds extra detail. When a checkout can't start (We could not start the Razorpay payment…) or a refund fails, the plugin also writes the reason to HikaShop's own payment log: the file set in HikaShop's Configuration under Payment log file (by default media/com_hikashop/upload/safe/logs/report_<random>.log). If that setting is empty, nothing is written there. Missing keys cause the same start error, and so does a Key ID that doesn't match the Mode: in Test mode it must start with rzp_test_, and in Live mode it must not. Opening the HikaShop notify URL in a browser returns 400 Invalid webhook signature, which is normal.
Most checkout and webhook problems come from the mode, the keys, or the webhook URL.
- Log file:
administrator/logs/razorpaycheckout_razorpay_hikashop.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.