iDEAL Advanced (ING) implementeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

C# .NET Developer

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf. Lees dan snel verder! Voor deze functie zoeken wij een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Daarnaast begeleid je complexe projecten, wij zoeken iemand die altijd kansen ziet en waarbij het glas altijd half vol is. Voor deze functie zoeken wij een Developer met ervaring op het gebied van .NET die deze organisatie gaat versterken. Binnen de organisatie ga jij je vooral bezighouden met het verbeteren van

Bekijk vacature »

Front-end Developer

Dit ga je doen Je komt in een DevOps-cultuur te werken waarbij je met je team werkt aan de front-end van diverse brand websites; Het ontwerpen van functionele en grafische ontwerpen die worden geïmplementeerd; Draagt zorg voor het maken van analyses; Je werkt nauw met je collega’s samen en geeft elkaar feedback en suggesties waar nodig; Het uitwerken van vraagstukken die afkomstig zijn van verschillende klanten; Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt

Bekijk vacature »

Web Developer

Bedrijfsomschrijving ENGIE Nederland is onderdeel van de beursgenoteerde ENGIE Groep. ENGIE is actief in 70 landen, met wereldwijd 150.000 medewerkers. Als groep is het de missie om bij te dragen aan de verduurzaming van de wereld. ENGIE Energie biedt energiediensten aan particulieren en grootzakelijk en gaat de uitdagingen van de energietransitie aan door het beschikbaar maken van duurzame energie, het streven de klimaatverandering tot een minimum te beperken, leveringszekerheid te bieden en zorg te dragen voor een verantwoord gebruik van de beschikbare resources. ENGIE Energie investeert daarom in hernieuwbare energiebronnen zoals zon, wind en bio-gas. Functieomschrijving Heb jij veel ervaring

Bekijk vacature »

Front-end developer (medior/senior)

Functie Het team bestaat uit een architect, fullstack developers, app developers, de product owner en projectmanager. Eenieder draagt vanuit zijn discipline bij aan een complete oplossing voor de klant. Uiteraard zul je hierin nauw samenwerken met je collega’s. Jij wordt verantwoordelijk voor de front-end implementatie en fungeert als lead op dit gebied binnen het team. Je kunt helder formuleren, ideeën uitdragen en overbrengen aan je collega’s. Qua technische stack is het vooral van belang dat je ervaren bent met Angular, HTML5, CSS en TypeScript. Verder is ervaring in NgRx, Bootstrap, BEM en Cypress een pré, evenals affiniteit met UX/UI Design!

Bekijk vacature »

.NET developer

Functie Heb jij veel kennis van ASP.NET Webforms en wil jij juist de overstap maken naar ASP.NET Core? Wij zijn per direct op zoek naar een ervaren .NET Webdeveloper die met ons samen ons platform wilt herschrijven van ASP.NET Webforms naar ASP.NET Core. Voor jou de unieke kans om met ons samen te innoveren en kennis op te doen van de nieuwste technieken binnen de Microsoft Stack. Wij hebben een development team met 10 IT specialisten bestaande uit onder andere 4 backend .NET developers en twee front-end developers. Wij zijn continu bezig om ons als team en bedrijf te blijven

Bekijk vacature »

C# .NET Developer IoT SQL Server

Samengevat: Wij ontwikkelen innovatieve oplossingen om apparaten en bezittingen op een eenvoudige en flexibele manier te beveiligen. Ben jij een C# .NET developer? Heb jij ervaring met C# en SQL server? Vaste baan: C# .NET Developer IoT HBO €3.200 - €4.500 Deze werkgever is gespecialiseerd in hoogwaardige GSM/GPRS alarm- en telemetrietechnologie. Met een eigen productlijn en klantspecifieke ontwikkelingen biedt deze werkgever oplossingen om op afstand te meten, melden, loggen en aansturen, ook op plaatsen zonder stroomvoorziening. Onze producten worden gekarakteriseerd door flexibiliteit in de configuratie, betrouwbaarheid en een extreem laag stroomverbruik. Zij werken voor MKB klanten. Deze werkgever heeft veel

Bekijk vacature »

Cloud Developer

Cloud Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

Bekijk vacature »

PHP Developer

Dit ga je doen Je werkt nauw samen met het websitebureau aan de ontwikkeling en optimalisering van het internationale platform; Je ziet nieuwe webshops op en voert optimalisaties door; Je bouwt aan technische, functioneel en commercial resultaat; Je vindt het leuk om zelfstandig binnen een internationale organisatie te werken, maar krijgt ook energie om samen met collega's te werken. Hier ga je werken Voor een bedrijf in de regio Rotterdam zijn wij opzoek naar een PHP Developer. Je wordt onderdeel van het communicatieteam en gaat je bezighouden met het optimaliseren van de website van dit internationale bedrijf. Je schakelt veel

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Junior Fullstack Developer

Functie omschrijving Heb jij je universitair diploma Informatica afgerond en ben jij op zoek naar een startersfunctie waar jouw ontwikkeling in een hoog vaandel staat? Voor een softwarebedrijf in Amsterdam zijn wij op zoek naar een Junior Fullstack Developer. Je begint met een op maat gemaakte training om de kennis bij te spijkeren die jij nog mist. Uiteraard leer je het meeste tijdens je werk, maar de training geeft je hiervoor alvast de juiste handvatten. Je kunt het volgende verwachten! Jij ontwikkelt in technieken als Java, Javascript en SQL. Je werkt hierbij volgens de Agile/Scrum methode; Na het afronden van

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »
Claudia Jes

Claudia Jes

07/12/2016 14:58:45
Quote Anchor link
Hoi allemaal,

Op mijn website wil ik graag iDEAL Advanced van ING implementeren. Ik heb daarvoor de beschikbare PHP bestanden gedownload die ik via iDEAL ING overzicht kan downloaden, netjes een certificaat en key aangemaakt, etc. Wanneer ik echter binnen de 'voorbeeld-code' de getIssuers probeer, krijg ik bovenaan de pagina een Response empty melding. Alle gegevens heb ik netjes binnen de config-file ingevuld.

Doe ik iets fout?

Bvd.
 
PHP hulp

PHP hulp

27/11/2024 05:35:38
 
- Ariën  -
Beheerder

- Ariën -

07/12/2016 18:59:42
Quote Anchor link
Dit topic heb je ook elders gestart. Wel zo fijn om dit wederzijds even aan te geven:
http://www.helpmij.nl/forum/showthread.php/906475-iDEAL-Advanced-(ING)-implementeren

Zo voorkomen we dat iemand de moeite neemt voor een antwoord terwijl het op de andere site al gegeven is.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/12/2016 22:25:50
Quote Anchor link
Ik citeer uit de handleiding:

4.4 Foutafhandeling
Indien een fout optreedt in het berichtenverkeer tussen acceptant, acquirer en/of issuer wordt door
de iDEAL Advanced Connector een ander bericht teruggegeven. Om te kijken of er een fout is
opgetreden dient u na het ophalen van een response te controleren of er een fout is opgetreden
door het aanroepen van de volgende functie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if (response->IsErrorMessage())
{
 ...
}

?>

Als er een fout is opgetreden zal ‘true’ teruggegeven worden door de functie IsErrorMessage() en
in het navolgende codeblok kan de fout afgehandeld worden met de volgende constructie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if ($response->IsErrorMessage())
{

 $errorCode = $response->getErrorCode();
 $errorMsg = $response->getErrorMessage();
 $consumerMessage = $response->getConsumerMessage();
}

?>


Heb je dit al geprobeerd?

Je moet dan natuurlijk wel even deze variabelen echo'en om ze te kunnen lezen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if ($response->IsErrorMessage())
{

 $errorCode = $response->getErrorCode();
 $errorMsg = $response->getErrorMessage();
 $consumerMessage = $response->getConsumerMessage();

 echo $errorMsg . '<br>' . $consumerMessage;
 exit;
}

?>
Gewijzigd op 07/12/2016 22:28:39 door Frank Nietbelangrijk
 
Claudia Jes

Claudia Jes

08/12/2016 08:22:00
Quote Anchor link
Wanneer ik dat stukje code plak in het getIssuerlist.php bestand (uit de illustratiecode van ING), krijg ik het volgende resultaat:
Serialization:Response was empty
Notice: Undefined variable: response in /var/www/vhosts/domein.nl/httpdocs/www/ideal/getIssuerList.php on line 81

Fatal error: Call to a member function IsErrorMessage() on null in /var/www/vhosts/domein.nl/httpdocs/www/ideal/getIssuerList.php on line 81



Hieronder de volledige code van dit bestand:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
<?php
    
error_reporting(E_ALL);
ini_set('display_errors', 'On');

use iDEALConnector\iDEALConnector;
use iDEALConnector\Exceptions\ValidationException;
use iDEALConnector\Exceptions\SecurityException;
use iDEALConnector\Exceptions\SerializationException;
use iDEALConnector\Configuration\DefaultConfiguration;

use iDEALConnector\Exceptions\iDEALException;

use iDEALConnector\Entities\DirectoryResponse;

date_default_timezone_set('UTC');

require_once("Connector/iDEALConnector.php");

$config = new DefaultConfiguration("Connector/config.conf");
$errorCode = 0;
$errorMsg = "";
$consumerMessage = "";

$issuerList = "";
$acquirerID = "";
$responseDatetime = null;

$actionType = "";

if (isset($_POST["submitted"]))
    $actionType = $_POST["submitted"];

if ($actionType == "Get Issuers"){

    try
    {
        $iDEALConnector = iDEALConnector::getDefaultInstance("Connector/config.conf");
        $response = $iDEALConnector->getIssuers();

        /* @var $response DirectoryResponse*/
        foreach ($response->getCountries() as $country)
        {

            $issuerList .= "<optgroup label=\"" . $country->getCountryNames() . "\">";

            foreach ($country->getIssuers() as $issuer) {
                $issuerList .= "<option value=\"" . $issuer->getId() . "\">"
                    . $issuer->getName() . "</option>";
            }

            $issuerList .= "</optgroup>";

            $acquirerID = $response->getAcquirerID();
            $responseDatetime = $response->getDirectoryDate();
        }
    }

    catch (SerializationException $ex)
    {

        echo '<b style="color:red">Serialization:'.$ex->getMessage().'</b>';
    }

    catch (SecurityException $ex)
    {

        echo '<b style="color:red">Security:'.$ex->getMessage().'</b>';
    }

    catch(ValidationException $ex)
    {

        echo '<b style="color:red">Validation:'.$ex->getMessage().'</b>';
    }

    catch (iDEALException $ex)
    {

        $errorCode = $ex->getErrorCode();
        $consumerMessage = $ex->getConsumerMessage();
        $errorMsg = $ex->getMessage();

        echo $ex->getErrorCode()." - ".$ex->getMessage();
    }

    catch (Exception $ex)
    {

        echo '<b style="color:red">Exception:'.$ex->getMessage().'</b>';
    }

    
    if ($response->IsErrorMessage())
{

 $errorCode = $response->getErrorCode();
 $errorMsg = $response->getErrorMessage();
 $consumerMessage = $response->getConsumerMessage();

 echo $errorMsg . '<br>' . $consumerMessage;
 exit;
}
}

?>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <style>
        .center {
            text-align: center;
        }
    </style>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>IAC-PHP - Function: Get Issuers</title>
    <script type="text/javascript">
        var BodyOnLoad = function(){
            var select = document.getElementById("IssuerIDs");
            select.onchange = function () {
                document.getElementById("issuerId").value = select.value;
            };
            document.getElementById("issuerId").value = select.value;
        }
    </script>
</head>
<body onload="BodyOnLoad()">
    <table border="0" width="100%">
        <tbody>
        <tr>
            <td width="120"><a href="index.php"><img src="./icons/ideal_logo.gif" alt=""></a></td>
            <td><span style="font: bold 24pt arial">Advanced Connector - PHP</span><br>
                <span style="font: 18pt arial">**Test Page**</span></td>
        </tr>
        </tbody>
    </table>
    <table class="box" width="100%">
        <tbody>
        <tr>
            <td width="200"><i style="text-decoration: underline;">Function:</i></td>
            <td>getIssuers</td>
        </tr>
        </tbody>
    </table>
    <br>
    <table class="box" width="100%">
        <tbody>
        <tr>
            <td colspan="2"><i style="text-decoration: underline;">Function parameters:</i></td>
        </tr>
        <tr>
            <td colspan="2">(none)</td>
        </tr>
        </tbody>
    </table>
    <br>
    <table class="box" width="100%">
        <tbody>
        <tr>
            <td colspan="2"><i style="text-decoration: underline;">Configuration parameters:</i></td>
        </tr>
        <tr>
            <td width="200">Merchant ID:</td>
            <td><?php echo $config->getMerchantID() ?>
            </td>
        </tr>
        <tr>
            <td width="200">Sub ID:</td>
            <td><?php echo $config->getSubID() ?>
            </td>
        </tr>
        <tr>
            <td width="200">Acquirer URL:</td>
            <td><?php echo $config->getAcquirerDirectoryURL(); ?>
            </td>
        </tr>
        </tbody>
    </table>
    <br>
    <table class="box" width="100%">
        <tbody>
        <tr>
            <td style="margin:0;padding:0">
                <form class="center" method="post">
                    <input type="submit" name="submitted" value="Get Issuers">
                </form>
            </td>
        </tr>
        </tbody>
    </table>
    <br>
    <table class="box" width="100%">
        <tbody>
        <tr>
            <td colspan="2"><i style="text-decoration: underline;">Result:</i></td>
        </tr>
        <?php  if($errorCode != "") { ?>
        <tr>
            <td width="200">Error Code</td><td><?php echo $errorCode; ?></td>
        </tr>
        <tr>
            <td>Error Message</td><td><?php echo $errorMsg; ?></td>
        </tr>
        <tr>
            <td>Consumer Message</td><td><?php echo $consumerMessage; ?></td>
        </tr>
            <?php } else { ?>
        <tr>
            <td width="200">DateTimeStamp:</td>
            <td><?php if (!is_null($responseDatetime)) echo $responseDatetime->format('Y-m-d H:i:s'); ?></td>
        </tr>
        <tr>
            <td width="200">Issuer List:</td>
            <td><label><select id="IssuerIDs"><?php echo $issuerList; ?></select></label></td>
        </tr>
            <?php } ?>
        </tbody>
    </table>
    <br>
    <table class="box" width="100%">
        <tbody>
        <tr>
            <td style="margin:0;padding:0">
                <form class="center" method="post" action="./requestTransaction.php">
                    <input type="hidden" value="RANDOM28976" id="issuerId" name="issuerId" />
                    <input id="transactionRequest" type="submit" name="submitted"
                                           value="Transaction Request" <?php if ($issuerList == "") { ?>
                                           disabled="disabled" <?php } ?>>
                </form>
            </td>
        </tr>
        </tbody>
    </table>
    <br>
</body>
</html>


Ward:
[code][/code]-tags toegevoegd.
Gewijzigd op 08/12/2016 10:25:05 door Ward van der Put
 
Ward van der Put
Moderator

Ward van der Put

08/12/2016 10:44:20
Quote Anchor link
Als de response empty of null is, wordt er waarschijnlijk geen verbinding geopend.

>> netjes een certificaat en key aangemaakt

Vermoedelijk wringt hem daar de schoen: draait je site op SSL of heb je zelf een self-signed certificaat aangemaakt met OpenSSL?
 
Claudia Jes

Claudia Jes

08/12/2016 11:01:48
Quote Anchor link
Ward van der Put op 08/12/2016 10:44:20:
Als de response empty of null is, wordt er waarschijnlijk geen verbinding geopend.

>> netjes een certificaat en key aangemaakt

Vermoedelijk wringt hem daar de schoen: draait je site op SSL of heb je zelf een self-signed certificaat aangemaakt met OpenSSL?


Dat zou een goede zijn, zeg! Ik heb een SSL certificaat inderdaad.
Moet ik die gebruiken? ;p
 
- Ariën  -
Beheerder

- Ariën -

08/12/2016 11:40:16
Quote Anchor link
Voor iDeal is SSL gewoon verplicht.
 
Ward van der Put
Moderator

Ward van der Put

08/12/2016 12:24:57
Quote Anchor link
Ja, eigenlijk moet je je officiële SSL-certificaat gebruiken, want daarmee bevestigt een trusted third party, de Certificate Authority (CA): dit is de server van Claudia. Met een self-signed certificaat kan iedere onbevoegde derde beweren wat hij wil.

Daarop valt voor eenvoudige iDEAL-toepassingen wel wat af te dingen. Het ophalen van de lijst met issuers is bijvoorbeeld geen functionaliteit waarvoor een verificatie van jouw identiteit iets toevoegt. Kijk maar:

https://www.targetpay.com/ideal/getissuers.php?format=xml

Ik weet niet welke functionaliteit iDEAL Advanced van ING biedt (daar moet ik dus een slag om de arm houden), maar je zou de peer/host-controle kunnen halveren: jij wilt wel zeker weten dat je verbinding hebt met de server van de bank, maar je hoeft omgekeerd niet voor alles met je eigen certificaat te wapperen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.