Implementatie

Gebruik een bestaande plugin of module, of implementeer de iDEAL standaard.

Gratis plugins

Voor diverse populaire webshop pakketten is een gratis plugin beschikbaar voor een snelle en betrouwbare implementatie.

Open-source modules

Ga direct aan de slag met de onderstaande open-source modules voor onder andere PHP, .NET en Python.

Zelf een module geschreven? Deze kan opgenomen worden in het overzicht hieronder. Neem hiervoor contact op.

iDEAL API

Postcode iDEAL implementeert de standaarden zoals voorgeschreven door Currence. Voor een volledig eigen integratie is uitgebreide documentatie beschikbaar als PDF.

iDEAL Checkout plugins

Plugin ontwikkeling en technische ondersteuning door iDEAL Checkout.

Kies voor gemak en laat de iDEAL plugin installeren door iDEAL Checkout:

Normale installatie
€ 50,-
5 werkdagen
Spoed installatie
€ 100,-
Binnen 24 uur op werkdagen.
Zit uw plugin er niet bij of heeft u speciale wensen?
Maatwerk installatie
€ 300,-

Gratis plugins

Premium plugins

Overige plugins

Modules

  Ontwikkeld door Details Download
PHP Bravesheep PHP 5.4+ Broncode beschikbaar Download
Drupal Bart Feenstra (Xano) PHP 5.3+ Broncode beschikbaar Download
Microsoft .NET/C# YITE C# / .NET Broncode beschikbaar Download
Python The Great New Python 2.5.2+ Broncode beschikbaar Download
Ruby Intenvid Ruby 2.1+ Broncode beschikbaar Download
Symfony 2 Mathijs Kadijk PHP + Symfony 2 Broncode beschikbaar Download

iDEAL API

Wij raden aan om één van bovenstaande plugins of modules te gebruiken indien mogelijk.

Onze diensten volgen exact het iDEAL protocol. Dit betekent dat u geen nieuwe implementatie nodig heeft als u nu iDEAL Zelfbouw (ABN Amro), iDEAL Advanced (ING Bank), iDEAL Professional (Rabobank) of iDEAL Zakelijk Plus (Frieslandbank) gebruikt.
Overstappen kan met enkele configuratiewijzigingen.

Indien u zelf een iDEAL client gaat implementeren, download u hier de benodigde documentatie:

Voorbeeld implementatie met Bravesheep iDEAL in PHP

iDEAL configureren

Zorg ervoor dat de benodigde klassen automatisch geladen kunnen worden.

// Production: https://ideal.postcode.nl/ideal
// Development: https://ideal-test.postcode.nl/ideal
$ideal = new Bs\IDeal\IDeal('https://ideal-test.postcode.nl/ideal');

// The full path to the acquirer certificate. This certificate is provided by Postcode iDeal and
// must be downloaded from the merchant environment. Testing and production have different certificates.
$ideal->setAcquirerCertificate('/path/to/acquirer/certificate/ideal-testing.cer', true);

// Your merchant ID as specified in the merchant environment.
// Testing and production each have a different merchant ID.
$ideal->setMerchant(1234567890);

// The full path to your merchant certificate.
$ideal->setMerchantCertificate('/path/to/your/merchant/certificate.cer', true);

// The full path to your private key.
$ideal->setMerchantPrivateKey('/path/to/your/merchant/private.key', 'your-merchant-private-key-password', true);

Transactie starten

// Get a list of issuers for bank selection on your checkout page.
$request = $ideal->createDirectoryRequest();
$response = $request->send();
$issuers = $response->getAllIssuers();

// Start a transaction request, amount in cents.
$transactionRequest = $ideal->createTransactionRequest('INGBNL2A', 'http://yourReturnUrl.nl', 'purchaseId', 1234, 'Description');

try
{
	$transactionResponse = $transactionRequest->send();
}
catch (Bs\IDeal\Exception\ResponseException $e)
{
	// Error handling.
	var_dump($e->getErrorMessage(), $e->getSingle('//i:suggestedAction'));
	exit();
}

// Store these values in your local database:
$transactionRequest->getEntranceCode();
$transactionResponse->getTransactionId();

// Redirect to bank environment.
header('Location: ' . $transactionResponse->getAuthenticationUrl());

Resultaat verwerken

function validateEntranceCode($entranceCode, $transactionId)
{
	// Validate entranceCode and transactionId here.
	return $transactionId;
}

// $_GET['ec'] and $_GET['trxid'] contain entranceCode and transactionId.
// Validate against values stored in local database before performing a statusRequest.
$transactionId = validateEntranceCode($_GET['ec'], $_GET['trxid']);

// Request the transaction status.
$statusRequest = $ideal->createStatusRequest($transactionId);
$statusResponse = $statusRequest->send();

// Get the transaction status.
if ($statusResponse->getStatus() == 'Success')
{
	// consumerIBAN and consumerName are available on 'Success'.
	$statusResponse->getConsumerIBAN();
	$statusResponse->getConsumerName();
}
else if ($statusResponse->getStatus() == 'Open')
{
	// On 'Open' status, try another StatusRequest later. Wait at least 5 minutes before performing
	// another StatusRequest. Use a cronjob to perform the checking in a background process.
}
else
{
	// Failure, Cancelled, Expired are final.
	// The transaction has failed; explain to the user what has happened and give the option to try again.
}

Technische ondersteuning

De technische afdeling staat voor u klaar om vragen te beantwoorden en hulp te bieden bij implementatie. Heeft u vragen over overstappen van een andere aanbieder? Neem ook dan contact op!