PHP code example of quellabs / canvas-payments-rabosmartpay
1. Go to this page and download the library: Download quellabs/canvas-payments-rabosmartpay library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
quellabs / canvas-payments-rabosmartpay example snippets
use Quellabs\Payments\Contracts\PaymentInterface;
use Quellabs\Canvas\Controllers\BaseController;
use Quellabs\Payments\Contracts\PaymentRequest;
use Quellabs\Payments\Contracts\PaymentInitiationException;
class CheckoutController extends BaseController {
public function __construct(private PaymentInterface $router) {}
/**
* @Route("...")
*/
public function checkout(): Response {
$request = new PaymentRequest(
paymentModule: 'rabo_ideal',
amount: 999, // in minor units — €9.99
currency: 'EUR',
description: 'Order #12345',
);
try {
$result = $this->router->initiate($request);
// Store both identifiers against your order.
// transactionId is the omnikassaOrderId UUID — needed for refunds.
// metadata['orderReference'] is the generated merchantOrderId — needed to
// correlate the return URL callback and webhook Status Pull to your order.
$this->orderService->setTransactionId($orderId, $result->transactionId);
$this->orderService->setOrderReference($orderId, $result->metadata['orderReference']);
return $this->redirect($result->redirectUrl);
} catch (PaymentInitiationException $e) {
// handle error
}
}
}
use Quellabs\Payments\Contracts\RefundRequest;
use Quellabs\Payments\Contracts\PaymentRefundException;
// Full refund — omit amount
$request = new RefundRequest(
paymentReference: $state->transactionId, // omnikassaOrderId from payment_exchange signal
paymentModule: 'rabo_ideal',
amount: null, // null = full refund
currency: 'EUR',
description: 'Full refund for order #12345',
);
// Partial refund — provide amount in minor units (cents)
$request = new RefundRequest(
paymentReference: $state->transactionId,
paymentModule: 'rabo_ideal',
amount: 500, // €5.00
currency: 'EUR',
description: 'Partial refund for order #12345',
);
try {
$result = $this->router->refund($request);
echo $result->refundId;
} catch (PaymentRefundException $e) {
// handle error
}
use Quellabs\Canvas\Annotations\ListenTo;
use Quellabs\Payments\Contracts\PaymentState;
use Quellabs\Payments\Contracts\PaymentStatus;
class OrderService {
/**
* @ListenTo("payment_exchange")
*/
public function onPaymentExchange(PaymentState $state): void {
match ($state->state) {
PaymentStatus::Paid => $this->markPaid($state->transactionId, $state->valuePaid),
PaymentStatus::Canceled => $this->markCanceled($state->transactionId),
PaymentStatus::Failed => $this->markFailed($state->transactionId),
PaymentStatus::Pending => null, // iDEAL confirmation still in progress — wait for webhook
default => null,
};
}
}
// Reconciliation job — run periodically for orders stuck in pending state
$state = $this->router->exchange('rabo_ideal', $order->transactionId);
$this->onPaymentExchange($state);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.