Download the PHP package quellabs/canvas-payments-rabosmartpay without Composer

On this page you can find all versions of the php package quellabs/canvas-payments-rabosmartpay. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package canvas-payments-rabosmartpay

Rabo Smart Pay Payment Provider

A Rabo Smart Pay (OmniKassa v2) payment provider for the Canvas framework. Part of the Canvas payments ecosystem.

Installation

Architecture

This package sits between the Rabo Smart Pay API and your application. Your application only ever touches the contracts layer — it never depends on this package directly. PaymentRouter (from quellabs/canvas-payments) discovers this package automatically via composer metadata and routes payment calls to it.

Exchange processing is decoupled from your application via signals. When Rabo Smart Pay calls the webhook URL, the package emits a payment_exchange signal carrying a PaymentState. Your application listens for that signal and handles it.

Payment flow

Configuration

Create config/rabosmartpay.php in your Canvas application:

Key Required Description
refresh_token Yes Long-lived token from the Rabo Smart Pay dashboard (webshop settings)
signing_key Yes Base64-encoded HMAC signing key from the Rabo Smart Pay dashboard
test_mode No Routes to sandbox (betalen.rabobank.nl) when true. Defaults to false
return_url Yes Shopper is redirected here after a completed or pending payment
cancel_return_url Yes Shopper is redirected here after a cancelled or failed payment
default_currency No ISO 4217 currency code. Only EUR is supported. Defaults to EUR
language No Language for the hosted checkout page. NL, EN, FR, DE. Defaults to NL
skip_result_page No Skip Rabo Smart Pay's own confirmation page, redirect directly to return_url. Default true

Important: storing transactionId and orderReference

After initiating a payment, InitiateResult::$transactionId holds Rabo Smart Pay's omnikassaOrderId UUID. Store this against your order — it is required for refund calls.

InitiateResult::$metadata['orderReference'] holds the generated merchantOrderId. Store this too — it is what Rabo Smart Pay echoes back in the return URL ?order_id= parameter and in the Status Pull response, allowing you to correlate those callbacks to your order.

Supported payment methods

Module name Brand string Method
rabo_ideal IDEAL iDEAL 2.0 (NL)
rabo_bancontact BANCONTACT Bancontact (BE)
rabo_mastercard MASTERCARD Mastercard
rabo_visa VISA Visa
rabo_maestro MAESTRO Maestro
rabo_vpay V_PAY V PAY
rabo_cards CARDS All card methods combined
rabo_applepay APPLE_PAY Apple Pay
rabo_paypal PAYPAL PayPal (contract-dependent)

Payment methods must be activated for your webshop in the Rabo Smart Pay dashboard before use.

Usage

Initiating a payment

Handling refunds

Listening for payment state changes

Webhook setup

Configure your webhook URL in the Rabo Smart Pay dashboard under your webshop settings:

The endpoint must be publicly reachable. Rabo Smart Pay does not retry failed webhook deliveries — return HTTP 200 to acknowledge receipt. Errors are logged server-side.

Webhook flow

  1. Rabo Smart Pay POSTs a notification JSON containing an authentication token.
  2. This package verifies the HMAC-SHA512 signature on the notification body.
  3. The authentication token is used to perform a Status Pull call.
  4. The Status Pull may return multiple order results and indicate moreOrderResultsAvailable.
  5. Each order result is mapped to a PaymentState and emitted via the payment_exchange signal.

Return URL parameters

Rabo Smart Pay appends the following to your return_url:

Parameter Description
order_id The generated merchantOrderId stored in InitiateResult::$metadata['orderReference']
status IN_PROGRESS, COMPLETED, CANCELLED, EXPIRED, or FAILURE
signature HMAC-SHA512 hex signature of "{order_id},{status}"

The return URL handler verifies the signature and redirects the shopper — no signal is emitted here. The authoritative payment state is delivered exclusively via the webhook. For IN_PROGRESS statuses (common with iDEAL 2.0), the shopper is redirected to the success page and the final status arrives via the webhook.

Missed webhooks and reconciliation

Rabo Smart Pay does not retry failed webhook deliveries. If your server is temporarily unreachable, or if the webhook notification is lost for any reason, your order will remain in a pending state indefinitely.

To handle this, implement a reconciliation job that periodically checks orders that have been in a pending state beyond a reasonable threshold (e.g. 15 minutes). For each such order, call exchange() directly using the stored transactionId (the omnikassaOrderId UUID from InitiateResult):

Rabo Smart Pay guarantees order status data is available for at least 24 hours after an order reaches a final state. Note that Rabo Smart Pay explicitly prohibits polling this endpoint — use it only as a fallback for orders where no webhook was received.

License

MIT


All versions of canvas-payments-rabosmartpay with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
ext-curl Version *
symfony/http-client Version ^7.0 || ^8.0
quellabs/support Version *
quellabs/contracts Version *
quellabs/canvas-payments-contracts Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package quellabs/canvas-payments-rabosmartpay contains the following files

Loading the files please wait ...