Back

VibeFox DPO for PrestaShop — Help

Requirements

PrestaShop: 8.0 to 9.x.

PHP: 8.0 or later with the SimpleXML extension. The module refuses to install without them.

DPO Pay account: you need the Company Token and the Service Type ID of your DPO merchant account. DPO issues them when your account is opened; get them from your DPO account manager or from dpogroup.com. DPO can also provide a test account with its own token and service type. There is no separate test server: DPO uses the same API address for test and live accounts, and the account is chosen by the token.

Currency: the shop currency must be supported by your DPO account. DPO accepts at most 2 decimal places, so cart totals with 3 decimals (for example KWD 12.345) cannot be paid.

Server cron: a cron job that calls the re-check URL of the module every 15 minutes (see Configuration).

VibeFox license key: bought on vibefox.net. One key works on one domain.

Installation

1. In the back office go to Modules > Module Manager and click Upload a module. Choose the module ZIP file.

2. When the upload finishes, click Configure, or find VibeFox DPO Pay Gateway in the module list later and click Configure.

3. Paste your VibeFox license key into License key in the license block at the top of the Configure page and click Activate (see License key).

4. Enter the test and/or live Company Token and Service Type (see Configuration).

5. Send the push notification URL shown on the Configure page to DPO support and ask them to set it for your account. Add the cron URL to the cron jobs of your server.

6. Turn on Enable/Disable and click Save. Place a test order in test mode, then turn off Test mode to accept real payments.

On install the module creates the order status DPO payment on hold. PrestaShop offers a new payment module for all currencies, countries and customer groups. You can limit them in Payment > Preferences.

Configuration

All settings are on the module page: Modules > Module Manager > VibeFox DPO Pay Gateway > Configure. Each section has its own Save button, which saves the whole page. When the module is enabled but the Company Token or Service Type of the selected mode is empty, the page warns you that the payment method is hidden at checkout, and saving shows the same warning. While test mode is on, the page shows Test mode is on: payments are created with the test account credentials.

DPO Pay

Enable/Disable: Enable DPO Pay turns the payment method on or off. Default: off.

Title: the payment method name customers see at checkout. It is also the payment method name stored in the order. Default: DPO Pay. Required.

Description: the text shown under the payment method at checkout. Default: Pay securely by card or mobile money on the DPO Pay payment page.

API credentials

DPO issues a Company Token and a Service Type ID for your merchant account, and separate ones for a test account. Get them from your DPO account manager or dpogroup.com.

Test mode: when on, new payments are created with the test Company Token and Service Type. Default: on. Turn it off to accept real payments with the live credentials. Status checks and cancellations of existing payments always use the account the payment was created with.

Test Company Token: the Company Token of your DPO test account.

Test Service Type: the numeric Service Type ID of your DPO test account.

Live Company Token: the Company Token of your live DPO merchant account.

Live Service Type: the numeric Service Type ID of your live DPO merchant account.

Saved Company Tokens are never shown again. The field stays empty and shows Saved — leave empty to keep it. Type a new value only to change it. A Service Type must be a number. Any other value is not saved: the page shows a warning and keeps the previous value.

Clear saved Company Tokens: tick a token and click Save to remove it. An empty field keeps the saved value.

Payment notifications

Push notification URL: the push notification tells your shop at once that a payment has been made, even if the customer closes the browser after paying. The URL is not set in a dashboard: ask DPO support to set this URL for your account. With friendly URLs it looks like https://your-shop/module/wcp_dpo_pay/notify, possibly with a language code. Copy it exactly as the page shows it. It must be reachable from the internet, without maintenance mode, a firewall or basic authentication in front of it.

DPO push notifications carry no signature, so their content is never trusted. The module only uses them to find the payment by its transaction token and then checks the result with DPO itself. A token your shop did not create is rejected without any request to DPO.

Scheduled status re-check (cron): call this URL every 15 minutes from a server cron job, for example with curl. Unconfirmed payments are re-checked with DPO 15 minutes after the redirect and again after the payment time limit. The URL contains a secret token, so keep it private. Without the push URL and the cron, an order is created only when the customer returns to the shop after paying.

Orders

Successful payment status: the order status after a verified successful payment.

Payment accepted (Processing): the standard PrestaShop status for paid orders (default).
Delivered (Completed): every paid order becomes Delivered.
DPO payment on hold (manual approval): every paid order waits for your manual review. The payment is still recorded on the order.

Amount or currency mismatches, authorized-only and overpaid or underpaid transactions always go to DPO payment on hold.

Advanced

Logging: writes API calls and notifications to logs/dpo_p_debug.log.php in the module folder. The file cannot be opened from the web. Errors are always logged. Tokens are masked, no customer data is logged. Default: off.

Log: shows the size and the latest entries of the log. Click Clear log to empty it.

Delete data: when on, uninstalling the module removes the module settings and the log. The DPO data stored for orders and the order status DPO payment on hold are always kept. Uninstalling without it never deletes data. Default: off.

Checkout

At the payment step the customer chooses the payment method (by default DPO Pay) and sees the note You will be redirected to the secure DPO Pay payment page. After confirming, the module creates a DPO transaction for the cart total in the cart currency, with the cart number and your shop name as description, and sends the customer to the DPO payment page. The customer's name, e-mail, phone and invoice address are passed to pre-fill the page. There the customer pays with any method enabled on your DPO account. The payment link is valid for 5 hours. No order exists yet at this point.

After paying, the customer returns to your shop. The order is marked paid only after DPO confirms it: the module asks DPO for the result of the transaction when the customer returns, when a push notification arrives and at the scheduled re-checks. The order is then created and the customer sees the standard order confirmation page.

If the payment is not confirmed, the customer is back at checkout with one of these messages. The cart is kept.

The payment was declined or cancelled. Please try again or choose another payment method.
We have not received a payment confirmation from DPO yet. If you completed the payment, your order will be updated automatically — please do not pay again. Otherwise you can try again.
We could not confirm the payment result with DPO. If your account was charged, please contact us before paying again.

If the customer clicks the button on the DPO page to go back to the shop, the transaction is checked first. If it was paid, the order is created. Otherwise it is cancelled at DPO and the customer is back at checkout with the cart.

When the customer pays again for the same cart, the previous DPO transaction is checked first. If it was paid, the order is created without a second charge. If it is still being processed, the customer sees Your previous payment for this order is still being processed by DPO. Please wait a few minutes before trying again. Otherwise the old transaction is cancelled at DPO and a new one is created.

If DPO cannot start the payment, the customer stays at checkout with a short message chosen by the DPO error code, for example DPO Pay does not support the currency of this order. Please choose another payment method. or The amount exceeds the limit allowed by DPO Pay. Please choose another payment method or contact us. Other errors show DPO Pay is temporarily unavailable. Please try again or choose another payment method. The technical reason is written to the log.

The push notification and the cron URL work while the shop is in maintenance mode and are not blocked by the country restriction of your shop.

The module takes one-time payments on the DPO page only. It has no refunds from the shop, no saved cards, no subscriptions or recurring payments, no card fields on your site and no capture of authorized-only payments.

Orders

Order statuses

No order yet: the customer was sent to DPO and has not paid, the payment was declined or cancelled, or DPO has not confirmed the payment yet. Only the cart exists.

Payment accepted, Delivered or DPO payment on hold: the payment was verified. The status follows Successful payment status. The payment is recorded with the DPO transaction token as the transaction ID. A private note on the order page shows the amount, the currency, the approval code and the beginning of the token.

DPO payment on hold after payment: DPO confirmed a payment, but the amount or currency differs from the cart, the payment is only authorized and not captured, the transaction was overpaid or underpaid, or the customer had cancelled the payment or the order had already been cancelled. The private note explains the reason. Check the transaction in the DPO portal. Capture or void an authorized-only payment in the DPO portal, then update the order status.

Cancelled: when you cancel an unpaid order of the module (for example one on hold for an authorized-only payment), its open DPO transaction is cancelled at DPO too.

A later declined result never changes an order, and results of older transactions never fail the current attempt. If DPO confirms a second successful payment for an order that is already paid, the order is not changed and gets a note about a possible double payment, so you can refund it in the DPO portal. A paid or refunded order is never reopened.

Refunds

Refunds from the shop are not available in this version. Refund the payment in the DPO merchant portal, then change the order status in PrestaShop.

License key

The module works with a VibeFox license key from vibefox.net. The license block License — VibeFox DPO Pay Gateway is the first block on Modules > Module Manager > VibeFox DPO Pay Gateway > Configure, above the settings. Paste the key into License key and click Activate. After that the block shows the key masked, the status (for example the date the license is active until and your domain) and the buttons Check now to check the status again, Change key to enter another key and Remove key to remove the key from this shop. Below them are the line Product: presta-payment-dpo and the link Manage licenses and domains in your account, which opens your vibefox.net account. Only employees with the Configure permission for the module can change the key. The texts of the block follow the back office language (English and Russian are included).

If the key is not accepted, the block says why, for example Key not found, This key belongs to another product, Domain limit reached or License expired on a date. After the shop address changes, or after you free a domain slot in your account, click Check now. If the license server cannot be reached, the module keeps working on the last known status.

One key works on one domain: the domain of the main shop, also in a multistore setup. Removing the key from the shop does not free its domain slot. Free the slot in your vibefox.net account.

Without an active key, DPO Pay is not shown to customers at checkout. If a payment is started anyway, the customer sees This payment method is not available. Please choose another one. The PrestaShop storefront does not know that you are logged in to the back office, so the payment method is hidden for you too: you can set up the module before you buy a key, but not test it at checkout. A reminder appears in Modules > Module Manager on the Alerts tab. Existing orders are not affected: payments already started are still confirmed.

When a license expires, the module keeps working, but updates and support need a renewal. The status is checked again automatically while you work in the back office: once a day for the first 14 days after the key is entered, then once a week. No cron job is needed. Uninstalling or resetting the module always removes the license key and license status.

Troubleshooting

DPO Pay does not appear at checkout: check that the license is active, Enable/Disable is on and the Company Token and Service Type of the selected mode are set: the test fields in test mode, the live fields otherwise. The settings page shows a warning when they are missing. In Payment > Preferences check that the module is allowed for the cart currency, the customer's country and the customer's group.

The payment went through, but no order was created: the push notification URL is probably not set for your DPO account, and the customer did not return to the shop. Ask DPO support to set the URL shown in the settings, and check that the cron calls the re-check URL every 15 minutes. Turn on Logging and look at the Log field on the module page.

Push notification answers Unknown transaction: the transaction token does not belong to a DPO Pay payment of this shop, for example the push came from another shop on the same DPO account.

Push notification answers Verification failed: DPO could not be reached to check the payment, the cart was being processed by another request at the same moment, or the order could not be created (for example, the module is disabled). DPO repeats the notification, and the scheduled re-check also confirms the order. The reason is in the log.

The push URL shows Method not allowed in the browser: this is normal. The URL accepts only requests from DPO.

The cron URL answers Forbidden: the token in the URL is wrong. Copy the URL again from the Configure page. A working call answers OK checked= and the number of payments checked.

The Service Type is not saved: it must be the numeric Service Type ID from DPO.

The customer sees DPO Pay is temporarily unavailable: DPO refused to create the transaction, for example because of a wrong Company Token or Service Type, or a token of the other mode. The DPO result code is in the log.

The customer sees that DPO accepts at most 2 decimal places: the cart total has 3 decimals. DPO cannot charge such amounts.

The customer sees This order has already been paid with DPO Pay: DPO refused a second payment for the same cart. Check the payment in the DPO portal and the order in PrestaShop.

Order is DPO payment on hold after payment: read the private note on the order page (see Order statuses), then review the transaction in the DPO portal.

Developers can change the customer data sent to DPO with the hook actionWcpDpoPayCustomerData and the payment time limit with actionWcpDpoPayPaymentTimeLimit.

Uninstall

Go to Modules > Module Manager, open the menu next to VibeFox DPO Pay Gateway and choose Uninstall. The license key and license status of this module are always removed. If Delete data is on, the module settings and the log are removed. If it is off, all settings are kept for a later re-install. The DPO data stored for orders and the order status DPO payment on hold are always kept, so late notifications for old payments still work after a re-install. Existing orders keep their payment notes and transaction IDs.

DPO Pay is a trademark of its respective owner. This module is not affiliated with or endorsed by DPO Pay.