Skip to content

Exchange

Wouter Jonker edited this page Nov 27, 2025 · 3 revisions

The SDK includes functionality to make it very easy to setup your exchange handler, and process your orders.

<?php

# Include your autoload.php
require 'vendor/autoload.php';

use PayNL\Sdk\Util\ExchangeResponse;
use PayNL\Sdk\Util\Exchange;

# Instantiate the exchange object using the settings from config/config.global.php
$exchange = new Exchange();

try {
    # Process the exchange request. This will take care of any type of exchange: GET, POST and even requests.
    # This function will return a payOrder object or throws an exception when something went wrong.
    $payOrder = $exchange->process();

    if ($payOrder->isPending()) {
        $response = new ExchangeResponse(true, 'Ignoring pending');

    } elseif ($payOrder->isPaid()) {
        $response = yourCodeToProcessPaidOrder($payOrder->getReference());

    } else {
        $response = new ExchangeResponse(true, 'No action defined for payment state ' . $payOrder->getStateId());
    }

} catch (Throwable $exception) {
    $response = new ExchangeResponse(false, 'failed: ' . $exception->getMessage());
}

# Finally the response of your exchange handler
$exchange->setExchangeResponse($response);


/**
 * @param $reference
 * @return ExchangeResponse
 */
function yourCodeToProcessPaidOrder($reference): ExchangeResponse
{
    try {
        // try to set your order to status paid
        return new ExchangeResponse(true, 'successfully processed');

    } catch (Throwable $exception) {

        return new ExchangeResponse(false, 'could not process: ' . $exception->getMessage());
    }
}

See also the sample in the repository.

The payOrder object has multiple useful methods, such as:

Function Description
isPaid To check whether the payment was fully paid
isFastCheckout To determine whether the transaction is a fastCheckout-transaction
getReference To retrieve your payment reference

Clone this wiki locally