VirtueMart
Official dpay.pl plugin for VirtueMart 3 (Joomla). Enables accepting online payments in your Joomla-based online store with the VirtueMart extension. Supports BLIK Level 0 (inline), credit cards, PayPal, and other payment methods.
Requirements
- Joomla 3.x or 4.x
- VirtueMart 3.x
- PHP 7.4 or newer
- Active account in the dpay.pl Dashboard with a configured Payment Point
Supported payment methods
- BLIK (including BLIK Level 0 - inline)
- Bank transfers (pay-by-link)
- Credit cards (inline)
- Google Pay and Apple Pay
- PayPal
- Paysafecard
- Installments (BLIK BNPL)
Installation
- Download the plugin package (
.zipfile) from dpay.pl or from GitHub. - Log in to the Joomla admin panel.
- Navigate to Extensions > Manage > Install.
- Select the Upload Package File tab and upload the downloaded
.zipfile. - After the installation completes, the plugin will be automatically registered as a VirtueMart payment plugin.
Configuration
Step 1 - Prepare credentials in the dpay.pl Dashboard
- Log in to the dpay.pl Dashboard.
- Go to the Payment Points section.
- Create a new Payment Point or select an existing one.
- Take note of:
- Service name (
service_name) - unique name of your Payment Point - Secret hash (
secret_hash) - key used for signing requests
- Service name (
- In the Payment Point settings, set the IPN URL to:
where
https://your-store.com/index.php?option=com_virtuemart&view=pluginresponse&task=pluginnotification&pm=IDIDis the payment method identifier in VirtueMart.
Important
The secret hash should be treated like a password. Never share it publicly or include it in frontend code.
Step 2 - Payment method configuration
- Navigate to VirtueMart > Payment Methods in the Joomla admin panel.
- Click New and create a new payment method.
- On the Payment Method Information tab, set:
- Payment Name - name visible to the customer (e.g., Online payment - dpay.pl)
- Payment Method - select VMPAYMENT_DPAY
- Go to the Configuration tab and fill in:
| Field | Description |
|---|---|
| Service Name | Service name from the dpay.pl Dashboard |
| Hash Key | Secret hash from the dpay.pl Dashboard |
| PayPal | Enable/disable PayPal payments |
| Credit Card | Enable/disable card payments |
| Paysafecard | Enable/disable Paysafecard payments |
| Installment | Enable/disable installment payments |
| No Banks | Hide the bank list |
| BLIK Zero | Enable BLIK Level 0 (inline) payments |
| Apple Pay | Enable Apple Pay payments |
| Google Pay | Enable Google Pay payments |
| Card Inline | Enable inline card form |
| Status Pending | Order status for pending payments (default: P) |
| Status Success | Order status after successful payment (default: C) |
| Status Cancel | Order status after cancellation (default: X) |
| Min Amount | Minimum order amount |
| Max Amount | Maximum order amount |
- Save the configuration.
Step 3 - Verification
- Place a test order in your store.
- Select dpay.pl as the payment method.
- Verify that you are correctly redirected to the payment page.
- After completing the payment, check whether the order status in VirtueMart has changed to Confirmed.
Refunds
The plugin does not support automatic refunds from the VirtueMart admin panel. Refunds should be processed directly from the dpay.pl Dashboard or via the dpay.pl API.
Status mapping
| dpay.pl status | VirtueMart status |
|---|---|
| New transaction | Pending (P) |
completed | Confirmed (C) |
| Cancelled | Cancelled (X) |
Troubleshooting
Orders do not change status automatically
- Verify that the IPN URL is correctly set in the dpay.pl Dashboard.
- Make sure the IPN URL is publicly accessible (not blocked by a firewall or SEF routing).
- Check VirtueMart logs in the admin panel.
Currency error
- The plugin only supports the PLN currency (VirtueMart code: 114). Make sure the store currency is set to PLN.
Plugin does not appear at checkout
- Verify that the payment method is published (Published).
- Make sure you have not set overly restrictive amount limits (Min/Max Amount).
"BAD SIGNATURE" error in the logs
- Make sure the Hash Key in the plugin configuration matches the hash in the dpay.pl Dashboard.