Back

VibeFox IntaSend for OpenCart — Help

Requirements

OpenCart: 3.0.x (tested on 3.0.5.0) or 4.0.2 and later (tested on 4.1.0.3).

PHP: 8.0 or later with the cURL extension.

HTTPS: IntaSend requires HTTPS for live payments and webhooks. The settings page warns you when live mode is on and the store address is not HTTPS.

IntaSend account: you need the publishable key (ISPubKey_...) and the secret key (ISSecretKey_...) of your IntaSend account, for the sandbox, for live or both, and a webhook with a challenge phrase in the IntaSend dashboard (see Configuration). The publishable key creates the checkout. The secret key is used only on your server to ask IntaSend for the payment status.

Currency: KES, USD, EUR, GBP, UGX, TZS, NGN, GHS, XAF or XOF. When the customer's checkout currency is another one, the payment method is hidden.

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

Installation

The download is one zip file with the packages for both OpenCart versions. Unpack it on your computer. It contains README.txt, the OpenCart 3 package wcp_intasend_pay-oc3-(version).ocmod.zip and the OpenCart 4 package wcp_intasend_pay.ocmod.zip. Install only the package for your OpenCart version. The license key is the same for both versions.

OpenCart 3

1. In the admin go to Extensions > Installer, click Upload and choose the file wcp_intasend_pay-oc3-(version).ocmod.zip. The extension has no OCMOD modifications, so Extensions > Modifications does not need a refresh. Instead of the installer you can copy the contents of the upload folder of this package into the root folder of your store.

2. Go to Extensions > Extensions and choose the type Payments. Find VibeFox IntaSend Pay Gateway and click Install (the green + button). Your admin user needs the right to modify the payment extensions list.

3. Click Edit (the pencil button) to open the settings page. Paste your VibeFox license key into License key in the license block at the top of the page and click Activate (see License key).

4. Paste your IntaSend sandbox and/or live keys, add the webhook in the IntaSend dashboard and enter the same challenge in the extension (see Configuration).

5. Turn on Enable/Disable and click Save. Test a payment with Test mode on, then turn Test mode off to accept real payments.

OpenCart 4

1. In the admin go to Extensions > Installer, click Upload and choose the file wcp_intasend_pay.ocmod.zip. Do not rename the file: OpenCart 4 takes the extension code from the file name, and a renamed package does not work.

2. The package appears in the list of installed extensions on the same page. Click Install (the green + button) next to it.

3. Go to Extensions > Extensions and choose the type Payments. Find VibeFox IntaSend Pay Gateway, click Install (the green + button), then Edit (the pencil button).

4. Enter the license key, the IntaSend keys and the webhook as in steps 3 to 5 for OpenCart 3. The settings page and its fields are the same in both versions. Only the webhook URL is different (see Webhook).

A new install starts with the payment method turned off and test mode on.

Configuration

All settings are on the extension page: Extensions > Extensions > Payments > VibeFox IntaSend Pay Gateway > Edit. The sections are listed on the left; the Save button under the list saves the whole page. Above the settings a status box shows Test mode: IntaSend sandbox, no real money is charged. or Live mode: real payments are accepted. It also warns you when the keys of the current mode are missing or wrong (the payment method is then hidden at checkout), when the default currency of the store is not supported, when no webhook challenge is set and when live mode is used without HTTPS. Without the right to modify the extension the page shows the settings but cannot save them.

When you save, Title must not be empty or longer than 128 characters, Sort Order must be a whole number, Total a number of 0 or more, and the selected geo zone and order statuses must exist. Otherwise nothing is saved and the error names the field. Key problems do not block saving: the status box names them. Pasted keys are trimmed.

IntaSend

Enable/Disable: Enable IntaSend 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: IntaSend (M-Pesa, card). Required, 1 to 128 characters.

Description: the text shown to the customer at the Confirm Order step, above the confirm button. Default: You will be redirected to IntaSend to pay securely with M-Pesa, card or another available method.

Sort Order: the position of IntaSend among the payment methods at checkout. Leave it empty or enter a whole number.

Geo Zone: offer IntaSend only for payment addresses in the selected geo zone. Default: All zones. Geo zones are set up in System > Localisation > Geo Zones.

Total: the checkout total, in the default currency of the store, that an order must reach before IntaSend is offered. Leave it empty to offer IntaSend for any total.

API keys

Get the keys in the IntaSend dashboard under Settings > API Keys, separately in the sandbox dashboard and in the live dashboard (the section has links to both). Test mode uses the sandbox keys and the sandbox API, live mode uses the live keys and the live API. The extension checks that the publishable key starts with ISPubKey_, the secret key with ISSecretKey_, and that the keys belong to the current mode: sandbox keys contain _test, live keys contain _live. If not, the payment method is hidden and the status box explains why.

Test mode: uses the IntaSend sandbox, no real money is charged. Default: on. Turn it off to accept real payments with the live keys. While test mode is on, customers see TEST MODE - IntaSend sandbox, no real money is charged. at the Confirm Order step.

Sandbox publishable key: starts with ISPubKey_test. It identifies your business when a checkout is created.

Sandbox secret key: starts with ISSecretKey_test. Used only on your server to confirm payments with the Payment Status API.

Live publishable key: starts with ISPubKey_live.

Live secret key: starts with ISSecretKey_live. Used only on your server to confirm payments.

Saved secret keys and the webhook challenge are never shown again. The field stays empty and shows Saved — leave empty to keep it. Type a new value only to change it. To remove a saved value, tick Clear the saved value under the field and click Save.

Webhook

The webhook tells your store that a payment has been made, even when the customer does not come back to the store (closed browser, M-Pesa confirmed later). In the IntaSend dashboard, in the sandbox and in live, open Webhooks and add the URL shown in Webhook URL in this section. On OpenCart 3 it looks like https://your-store/index.php?route=extension/payment/wcp_intasend_pay/webhook, on OpenCart 4 like https://your-store/index.php?route=extension/wcp_intasend_pay/payment/wcp_intasend_pay.webhook. It is built from the storefront address of your OpenCart installation. Copy the URL exactly as the settings show it. Enter a challenge phrase there and the same phrase in the extension. Use one challenge for the sandbox and live.

Webhook challenge: the same challenge as in the IntaSend dashboard. Webhooks with another challenge are rejected. While this field is empty, webhooks are not processed and payments are confirmed only when the customer returns to the store. Such webhooks are answered as ignored, not as an error, so IntaSend does not disable the webhook before you enter the challenge.

The extension reacts to these payment states reported by IntaSend. Each time it asks the Payment Status API for the real state before changing anything:

COMPLETE: the payment was made. The order gets its paid status after the amount and currency check.
FAILED or CANCELED: the payment failed. The latest payment attempt of the order is marked failed with the IntaSend reason. The order stays without a status and the cart is kept.
PARTIAL: the invoice was paid partially. The order gets the On Hold Status.
PENDING, PROCESSING or RETRY: the payment is still in progress. Nothing is changed until the final state arrives.

Notifications that are not checkout payments of this store, for example payment links or send-money events of the same IntaSend account, are answered with Ignored, so IntaSend does not disable the webhook.

Orders

OpenCart creates the order at the Confirm Order step without a status (a missing order). The order gets a status only after IntaSend has confirmed the payment through the Payment Status API. Each field below lists your OpenCart order statuses.

Paid Order Status: the status set after a payment confirmed by IntaSend. Default: Processing.

On Hold Status: IntaSend reported a different amount or currency, a partial payment, or a payment after the order had been cancelled. The order gets this status and a note explaining why. Default: Pending, because OpenCart has no On hold status. You can create your own status in System > Localisation > Order Statuses and select it here.

Refunded Status: a payment arriving for an order in this status only adds a note; the order is not reopened. Default: Refunded. The extension itself does not refund.

Advanced

Debug log: logs checkout, return and webhook events to intasend_p_debug.log.php in the OpenCart logs folder (storage/logs). The file cannot be opened from the web, and at 5 MB it is moved to intasend_p_debug.old.log.php. Errors and warnings are always logged. API keys, the challenge and customer data are never logged. Default: off.

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

Delete data on uninstall: when on, uninstalling the extension removes the gateway settings and the log. The IntaSend references saved for orders are payment history and are always kept. Default: off.

Import / Export

Export: Download JSON saves the settings as a JSON file. The secret keys and the webhook challenge are not exported.

Import: paste previously exported JSON and click Import to restore the settings. The saved secret keys and webhook challenge are kept.

Checkout

At the Payment Method step the customer chooses the payment method (by default IntaSend (M-Pesa, card)). At the Confirm Order step the customer sees your description. OpenCart creates the order at this step, still without a status. When the customer clicks Confirm Order, the extension creates an IntaSend checkout for the order total in the order currency and sends the customer to the IntaSend hosted checkout. There the customer pays with M-Pesa, a card or another method enabled on your IntaSend account. The customer's e-mail, phone and the name, address and country of the payment address are passed to IntaSend when they match the IntaSend field rules. Empty or unsuitable fields are left out. Each attempt gets its own IntaSend reference.

On OpenCart 4 the customer picks the payment method with the Choose button of the payment method block, in the window Payment method options, and clicks Confirm Order at the bottom of the checkout page. By default OpenCart 4 does not ask for a payment address; the extension then passes the address, city, postcode and country of the shipping address to IntaSend.

After paying, the customer comes back through the home page address of your store, because IntaSend does not accept some characters in the return address; the extension forwards the customer to its return page. The order is marked paid only after IntaSend confirms it: the extension asks the Payment Status API when the customer returns and when the webhook arrives. The order then gets its status the standard OpenCart way, with the usual order e-mails and stock update, and the customer sees the OpenCart order success page. If the order was put on hold, the page also shows Your payment was received and your order is being reviewed. We will contact you if anything is needed. If the payment is not confirmed yet, or IntaSend cannot be reached at that moment, a Payment confirmation page shows Your payment is being confirmed by IntaSend (M-Pesa confirmations can take a minute). You will receive an e-mail as soon as it is confirmed. with the buttons Check again and Back to checkout. The webhook sets the order status as soon as IntaSend confirms the payment.

If the payment failed, the customer is back at checkout with The payment was not successful. Please try again or choose another payment method. (with the IntaSend reason, if given). If the customer came back without paying, the message is The payment was not completed. Please try again or choose another payment method. The cart is kept and the customer can pay again. On OpenCart 4 these messages are shown above the checkout page. OpenCart 3 creates a new order every time the Confirm Order step is shown; OpenCart 4 updates the order of the checkout, so after a failed payment the customer pays the same order with a new attempt. One cart is paid only once: if another order of the same cart is already paid, the customer goes to the success page instead of a new payment. A change of the cart, including a new quantity, counts as a new cart that needs its own payment.

OpenCart 4 keeps the order in the checkout until the success page is shown. If that order was closed meanwhile (for example you cancelled or refunded it), the customer is sent back to the checkout with Your previous order was cancelled or refunded. Please confirm the order again. If the order is already placed and the cart now holds other products, the message is Your previous order has already been placed for other cart contents. Please confirm the order of your current cart again. In both cases the next Confirm Order pays a new order of the cart.

If IntaSend cannot start the payment, the customer stays at the Confirm Order step with a message above the button: IntaSend could not start the payment: and the reason from IntaSend, or IntaSend is temporarily unavailable. Please try again in a moment or choose another payment method. The details are written to the log. An order total of zero cannot be paid with IntaSend.

The webhook also works while the store is in maintenance mode: OpenCart 3 lets payment extension requests through, and on OpenCart 4 the extension adds a startup action that lets the webhook and the customer's return through.

The extension takes one-time payments only. Refunds are not sent to IntaSend from the store, and it has no saved cards, subscriptions or inline (popup) payment form. Older checkout links of the same order cannot be cancelled at IntaSend.

Orders

Order statuses

No status (missing order): the customer was sent to IntaSend and has not paid, the payment failed, or IntaSend has not confirmed the payment yet. In Sales > Orders such orders are shown only with the filter Order Status set to Missing Orders.

Paid Order Status (default Processing): the payment was confirmed. A note shows the IntaSend invoice, the payment method at IntaSend, the amount, the mode (sandbox or live) and how it was confirmed (webhook or customer return).

On Hold Status (default Pending): IntaSend reported a different amount or currency than the order total, a partial payment, or a payment that arrived after the order had been cancelled. The note explains it. Check the payment in the IntaSend dashboard and fulfil the order or refund the payment. If the correct payment arrives later, the order moves to Paid Order Status and the customer is notified by e-mail.

If a second payment arrives for an order that is already paid, the order is not changed. A note asks you to refund it in the IntaSend dashboard if it is a duplicate. A payment for an order in Refunded Status adds a note and does not reopen the order.

Notes are entries in the order History that the customer does not see.

VibeFox IntaSend Pay Gateway tab

In Sales > Orders open an order paid with IntaSend. At the bottom of the order page, next to History and Additional, the VibeFox IntaSend Pay Gateway tab shows the IntaSend checkout attempts of the order (date, reference, IntaSend checkout, environment, amount, invoice and payment method, result with the failure reason), the Invoices processed (invoice, IntaSend state, amount and result) and the IntaSend notes of the order. The tab is read only and is shown to users who have access to the extension.

Refunds

Refunds are not sent to IntaSend from the store. Refund the payment in the IntaSend dashboard and record the refund in OpenCart manually, for example by setting the order to Refunded Status.

License key

The extension works with a VibeFox license key from vibefox.net. The license block License — VibeFox IntaSend Pay Gateway is the first block on Extensions > Extensions > Payments > VibeFox IntaSend Pay Gateway > Edit, 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 store. Below them are the line Product: opencart-payment-intasend and the link Manage licenses and domains in your account, which opens your vibefox.net account. Only admin users with the Modify permission for the extension can change the key. The texts of the block follow the admin 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 store address changes, or after you free a domain slot in your account, click Check now. If the license server cannot be reached, the extension keeps working on the last known status.

One key works on one domain: the store address from the OpenCart configuration. Removing the key from the store does not free its domain slot. Free the slot in your vibefox.net account.

Without an active key, IntaSend 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. An admin user who is logged in to the admin in the same browser still sees the payment method in the store, marked (unlicensed — visible to admins only), so you can set up and test the extension before you buy a key. On OpenCart 4 this preview is not available: the store does not see the admin login, so without an active key the payment method is hidden for everybody. After you have opened the Edit page once, a reminder appears on the admin Dashboard. Close it with × to hide it for 7 days. Existing orders are not affected: payments already started are still confirmed.

When a license expires, the extension keeps working, but updates and support need a renewal. The status is checked again automatically when you open the admin Dashboard or the Edit page: once a day for the first 14 days after the key is entered, then once a week. No cron job is needed. Uninstalling the extension always removes the license key and license status.

Troubleshooting

IntaSend does not appear at checkout: check that the license is active, Enable/Disable is on and the keys of the current mode are filled in and belong to that mode: sandbox keys (with _test) in test mode, live keys (with _live) in live mode. The status box at the top of the settings page shows what is wrong. The customer's checkout currency must be supported. Also check that the payment address is in the selected Geo Zone and that the order reaches the Total set in the settings.

The payment went through, but the order stays without a status: M-Pesa confirmations can take a moment. The webhook sets the status when IntaSend reports the final state. Check that the webhook URL in the IntaSend dashboard (sandbox or live, the mode you use) is exactly the one shown in Webhook URL and that the challenge there is the same as Webhook challenge. The order also gets its status when the customer returns to the store or clicks Check again.

Webhook answers Ignored: webhook challenge not configured: Webhook challenge is empty. Enter the challenge from the IntaSend dashboard.

Webhook answers Invalid challenge: the challenge in IntaSend and in the extension differ, or the webhook has no challenge.

Webhook answers Verification unavailable, retry later or Busy, retry later: IntaSend could not be reached at that moment, the order (its cart) was being confirmed by another request, or the order status could not be set. IntaSend retries the webhook. The reason is in the log.

Webhook answers Invoice not verified or Invoice does not match the reference: IntaSend did not confirm that this invoice belongs to the order. Nothing is changed.

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

Order is in the On Hold Status: read the notes in the VibeFox IntaSend Pay Gateway tab. The paid amount or currency differed from the order, the payment was partial, or it came after the order was cancelled. Check the payment in the IntaSend dashboard.

The customer sees an error after Confirm Order: look at the Log field on the extension page (turn on Debug log for more detail). If the keys of the current mode are wrong, the customer sees IntaSend is not available at the moment. Please choose another payment method or contact the store. This payment method is not available. means the checkout session no longer matches the order or the payment method was turned off meanwhile: the customer reloads the checkout. If the log says that the return URL contains characters IntaSend does not accept, the store address is the cause.

The customer sees We could not match this payment to an order: the return link was changed or belongs to another order. If the customer paid, the webhook still sets the order status.

For developers: before the checkout is created, the extension triggers the OpenCart event intasend_p_checkout_payload with the request data, the order and the mode; the event intasend_p_supported_currencies can change the list of currencies.

Uninstall

Go to Extensions > Extensions, choose the type Payments and click Uninstall (the red − button) next to VibeFox IntaSend Pay Gateway. The license key and license status of this extension are always removed. OpenCart always removes its own settings of the extension: Enable/Disable, Sort Order, Geo Zone, Total and the order statuses of the Orders section, which return to their defaults on a re-install. The OpenCart events of the extension are removed too (on OpenCart 4 also its startup action, which lets the webhook and the customer's return through in maintenance mode). If Delete data on uninstall is on, the other gateway settings (title, description, test mode, keys, webhook challenge, debug log switch) and the log are removed. If it is off, they are kept for a later re-install. The IntaSend checkout attempts and invoices of orders are always kept. Existing orders keep their payment notes.

On OpenCart 4, to remove the files of the extension as well, go to Extensions > Installer after the uninstall and click Uninstall (the orange − button) next to VibeFox IntaSend Pay Gateway in the list of installed extensions, then Delete (the red bin button) to remove the uploaded package.

IntaSend is a trademark of its respective owner. This extension is not affiliated with or endorsed by IntaSend.