Problemen met het toevoegen van IDEAL 3.3.1 sepa‏

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick cos

patrick cos

18/07/2013 11:31:19
Quote Anchor link
Ik ben ondertussen al meer dan een week bezig, met het proberen te verwerken van de nieuwe IDEAL 3.3.1.
We hebben een eigen script, waardoor we niet een standaard module kunnen gebruiken (bv. van Joomla etc.).
Ter info het Ideal script wat nu nog gebruikt wordt komt nog ergens uit 2005 (safe_thinMPI weet niet of u dit wat zegt?).

Wat heb ik tot zover gedaan:
- De documentatie handleiding van Ideal advanced gelezen (ook paragraaf 4.3 geprobeerd, maar zonder dat ik dit überhaupt werkend kreeg)
- Gecontroleerd op PHP 5.3 (5.3.25)
- Ideal_v3.cer gedownload en geplaatst (voor toevoegen zie bijlage config.conf)
- ik heb een certificaat aangemaakt met openssl en 'cert.cer' geupload in het 'Ideal Dashboard' & priv.pem aangemaakt.
- config.conf goed aangepast (zie bijlage).
- zoeken op 'Exception:Failure Signing Data: - SHA256' foutmelding heeft niet geholpen


Problemen tot zover:
- Ik krijg het niet voor elkaar een bankenlijst weer te geven tijdens het betalingsproces.
- Als ik het voorbeeld gebruikt krijg ik een Exception:Failure Signing Data: - SHA256 foutmelding


Enig idee wat hier fout kan gaan?
 
PHP hulp

PHP hulp

14/11/2024 18:28:13
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/07/2013 11:41:22
Quote Anchor link
Patrick,

heb je de voorbeeldcode gedownload van het ideal dashboard?
Als je daarin de config aanpast en de certificaten op orde hebt dan moet het in de testomgeving al werken.

Als ik iets voor je doen kan, laat het me dan even weten.
 
Patrick cos

patrick cos

18/07/2013 12:26:43
Quote Anchor link
Ja de voorbeeldcode heb ik gedownload van het dashboard en het config bestand aangepast

config.conf

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
###   Initial configuration file   ###
##################################################
## merchant attributes
##################################################
#
# (required)
# Description:
#     Id van de webshop, door de acceptant te verkrijgen via het iDEAL Dashboard
MERCHANTID=(weggehaald)*
#
# (optional)
# Description:
#     Sub Id van de webshop, alleen te wijzigen na overleg met de acquirer
# Default value:
#     0 (zero)
SUBID=0
#
# (required)
# Description:
#     URL van de pagina in de webshop waarnaar de consument wordt geredirect na de iDEAL transactie
MERCHANTRETURNURL=http://www.website.nl/ideal_betaling/
#
#####
##################################################
## acquirer attributes
##################################################
#
# (required)
# Description:
#     URL van de acquirer van de acceptant; niet wijzigen
#     https://idealtest.secure-ing.com/ideal/iDEALv3 voor test
#     https://ideal.secure-ing.com/ideal/iDEALv3 voor productie
ACQUIRERURL=https://ideal.secure-ing.com/ideal/iDEALv3
#
# (optional)
# Description:
#     Connection timeout in seconds
# Default:
#     10 seconds
ACQUIRERTIMEOUT=10
#
# (optional)
# Description:
#     Vervaltijd per transactie; zie paragraaf 3.3.1 van het document
#     iDEAL_010 standaarden voor de toegestane waarden en de default
#     waarde.
# Default:
#     If not set the issuer will use the default value of PT1H (one hour)
#EXPIRATIONPERIOD=PT1H
#
EXPIRATIONPERIOD=PT600S
#####

##################################################
## crypto attributes
##################################################
#
# (required)
# Keystore File and Password of the merchant certificate
# used for signing requests. See Ideal Advanced PHP
# integration manual for details.
# Note: file must be available on the config path!
PRIVATEKEY=priv.pem
# Vul hier het wachtwoord van uw private key in
PRIVATEKEYPASS=(weggehaald)*
# The filename of the certificate created by the merchant
PRIVATECERT=cert.cer
# The filename of the certificate created by the acquirer
CERTIFICATE0=ideal_v3.cer
#
#####

##################################################
## connection attributes
##################################################
#
# (optional)
# Description:
#     Set the PROXY connection information.
#PROXY=Vul hier een proxyserver in (gebruik dit ALLEEN als de webshop achter een proxyserver zit)
#PROXYACQURL=vul hier de url van de acquirer in (gebruik dit ALLEEN als de webshop achter een proxyserver zit)
#
#####
##################################################
## logging attributes
##################################################
#
# The log filename where debugging info to be recorded (e.g. connector.log).
#
LOGFILE=thinmpi.log
#
# TRACELEVEL=DEBUG,ERROR (gebruik dit ALLEEN tijdens het testen, om misbruik te voorkomen)
#
TRACELEVEL=DEBUG
# EOF
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/07/2013 12:51:24
Quote Anchor link
ACQUIRERURL=https://ideal.secure-ing.com/ideal/iDEALv3

zou ik om te testen veranderen in

ACQUIRERURL=https://idealtest.secure-ing.com/ideal/iDEALv3

en dan de certificaten ook naar de idealtest dashboard uploaden.

Hou er rekening mee dat de hoogte van het bedrag in de testomgeving bepaalt welke status je terugkrijgt.

1.00 euro == SUCCESS uit mijn hoofd.

Aan de foutmelding te zien lijkt het ook dat er iets niet klopt aan de certificaten.
Volg eventueel stap voor stap nog eens de instructies.

Toevoeging op 18/07/2013 12:51:56:

https://idealtest.secure-ing.com/ideal/logon_ing.do
 
Patrick cos

patrick cos

18/07/2013 13:19:30
Quote Anchor link
Ik kan op eens of andere manier niet inloggen in de idealtest omgeving.
Het technisch account wachtwoord kan ik ook raar genoeg niet opnieuw aanvragen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/07/2013 13:25:37
Quote Anchor link
Dan zou ik assistentie vragen van de bank.
 
Patrick cos

patrick cos

18/07/2013 14:03:45
Quote Anchor link
Kreeg toevallig net een mail terug van de ING. had van de week al een mailtje gestuurd.
de test omgeving heb ik nu eindelijk werkend gekregen.
In moest het complete pad van de certificaten op de webserver plaatsen..

Alleen als ik vervolgens doorverwezen wordt naar de site zelf krijg ik de foutmelding:

''
Uw bestelling is helaas niet betaald, klik hier om het nogmaals te proberen

Foutmelding: EntranceCode does not match.

Foutmelding: TransactionID does not match.
''
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/07/2013 14:22:39
Quote Anchor link
De entranceCode moet je zelf opgeven bij het starten van een transactie. Bij het ophalen van de status moet deze code hetzelfde zijn. Het fungeert als een soort wachtwoord.

De TransactionID krijg je terug na het starten van een transactie. Dit ID geef je mee aan de functie getTransactionStatus() of iets dergelijks. Dit moet uiteraard wel een geldig id zijn.
 
Patrick cos

patrick cos

18/07/2013 14:46:06
Quote Anchor link
ik gebruik het volgende voor het ophalen daarvan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
    $ec = "";
    if (isset($_GET['ec']))
        $ec = $_GET['ec'];
        
    $transID = "";
    if (isset($_GET['trxid']))
        $transID = $_GET['trxid'];

het onderste gedeelte wordt in de voorbeeldcode weergegeven.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/07/2013 15:08:00
Quote Anchor link
dat klopt.
ec == EntranceCode en
trxid == TransactionId.

ik zou om te debuggen de codes eens opslaan in de database of in een logbestand. Opslaan in de database is zowiezo een goed idee omdat niet iedereen braaf terugkeert naar jouw site en je dus ook later nog beschikking moet hebben over deze codes om alsnog de status op te halen.
 
Patrick cos

patrick cos

18/07/2013 15:57:29
Quote Anchor link
ik krijg wel achter in de url te zien: ideal_betaling/?trxid=0050000075307894&ec=1234567890123456789012345678901234567890

De gegevens worden inderdaad ook in de database opgeslagen, maar omdat de transactie (foutmelding die ik net gaf) nu nog niet lukt wordt deze nog niet in database opgeslagen op één of andere manier.

Toevoeging op 18/07/2013 16:53:24:

stukje van het terugkom script (nadat mensen betaald hebben):

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
    $error = FALSE;

    $best_ideal_transactionID = "";
    $best_ideal_entrancecode = "";
    $bestelling_id = "";

    $ref = "";
    if (isset($_SERVER['HTTP_REFERER']))
        $ref = $_SERVER['HTTP_REFERER'];
        
    $ec = "";
    if (isset($_GET['ec']))
        $ec = $_GET['ec'];
        
    $transID = "";
    if (isset($_GET['trxid']))
        $transID = $_GET['trxid'];
    

    if ($userID != "1" || $userID != "2" || $userID != "16" || $userID != "18") {
        if (!$ec) {
            $error = TRUE;
            $content .= "<p>Foutmelding: <font color=\"#FF0000\">No entranceCode.</font></p>";
        }
    }
    
    if (!$transID) {
        $error = TRUE;
        $content .= "<p>Foutmelding: <font color=\"#FF0000\">No transactionID.</font></p>";
    }

    $query = "SELECT best_ideal_entrancecode, best_ideal_transactionID, best_id, best_ideal_authenticated
        FROM cs_bestellingen
        WHERE best_ideal_entrancecode = '$ec'
        LIMIT 1";
    $result = mysql_query($query)or die(mysql_error());
    
    while ($row=mysql_fetch_array($result)) {
        $bestelling_id = $row["best_id"];
        $best_ideal_entrancecode = $row["best_ideal_entrancecode"];
        $best_ideal_transactionID = $row["best_ideal_transactionID"];
        $best_ideal_authenticated = $row["best_ideal_authenticated"];
    }            

    if ($ec != $best_ideal_entrancecode) {
        $error = TRUE;
        $content .= "<p>Foutmelding: <font color=\"#FF0000\">EntranceCode does not match.</font></p>";
    }

    if ($transID != $best_ideal_transactionID) {
        $error = TRUE;
        $content .= "<p>Foutmelding: <font color=\"#FF0000\">TransactionID does not match.</font></p>";
    }
        
    if ($best_ideal_authenticated == 1) {
        $error = TRUE;
        $content .= "<p>Foutmelding: <font color=\"#FF0000\">Betaling reeds ontvangen</font></p>";
    }


Toevoeging op 18/07/2013 17:50:48:

ec & transID worden trouwens wel geprint maar als ik $best_ideal_entrancecode of $best_ideal_transactionID weergeef dan krijg ik een leeg veld.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/07/2013 19:18:43
Quote Anchor link
Dus worden de ec en trxid niet juist opgeslagen id de database?
 
Patrick cos

patrick cos

19/07/2013 09:30:42
Quote Anchor link
de ec en de trxid worden in de werkende omgeving goed opgeslagen, maar in de nieuwe omgeving van Ideal 3.3.1 loopt hij vast op regel 45 & 50 (zie bovenstaande script) hierdoor worden deze gegevens niet opgeslagen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/07/2013 10:08:10
Quote Anchor link
Patrick, het ideal proces bestaat uit de volgende stappen:

1 ophalen en weergeven van lijst van beschikbare banken
2 het aanmaken van een transactie (en wat mij betreft het opslaan van een aantal gegevens in de database)
3 het doorsturen van de klant naar zijn eigen bank om de betaling te voltooien
4 wanneer de klant terugkeert naar de site de status van de transactie opvragen bij de bank en indien success dan de bestelling verwerken en de status in de database bij werken met een UPDATE query
5 min of meer los daarvan: voor de klanten die niet terugkeren periodiek de status opvragen van de transacties die nog op 'Open' staan.

Bij jou gaat er ergens iets fout.
of je slaat de gegevens niet juist op in de database (veldlengte wel groot genoeg?) bij stap 2,
of je vraagt op foutieve wijze de gegevens weer op uit de database. (de result zou altijd één rij moeten bevatten). Overigens hoef je bij stap vier niet perse de gegevens uit de database te vergelijken met de $_GET variabelen. In principe vraag je altijd een geldig transactieId van Ideal en zo niet dan krijg je ook netjes een foutmelding.
 
Patrick cos

patrick cos

19/07/2013 11:42:08
Quote Anchor link
Ja dat klopt, stap 1 lukt bij mij ook nog steeds niet om die lijst van beschikbare banken weer te geven.

stap 2,3 zou volgens mij al moeten werken.
stap 4,5 moet ik dan nog even naar kijken.

Ik denk trouwens dat het verstandig is om nu eerst verder te gaan met die bankenlijst.
Maar dat lukt met met de code die ideal beschikbaarsteld.
 
Michel W

Michel W

24/07/2013 08:37:50
Quote Anchor link
Patrick cos op 18/07/2013 11:31:19:
Problemen tot zover:
- Ik krijg het niet voor elkaar een bankenlijst weer te geven tijdens het betalingsproces.
- Als ik het voorbeeld gebruikt krijg ik een Exception:Failure Signing Data: - SHA256 foutmelding

Enig idee wat hier fout kan gaan?


De bankenlijst heb ik nog niet voor je bekeken, echter het signing issue herken ik wel. Zoals de meeste code op internet staat geschreven werkt niet voor php 5.3, deze kan namelijk geen signing aan zoals iDEAL het wil.

Ik heb het toendertijd opgelost met xmlseclibs, tenzij dat je de mogelijkheid hebt om het te testen op php 5.4 (en daarna je workspace te updaten naar 5.4)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

24/07/2013 08:58:03
Quote Anchor link
Overigens hoeft het ophalen van de bankenlijst niet bij elke transactie, in de handleiding van iDeal wordt zelfs gevraagd dat niet te doen.
 
Michel W

Michel W

24/07/2013 09:01:32
Quote Anchor link
Niet schrikken, de bankenlijst klopt niet helemaal met wat in de documentatie staat. Er staat een soort gewicht bij (short/long) en die mist in de XML
 



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.