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?
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.
Ja de voorbeeldcode heb ik gedownload van het dashboard en het config bestand aangepast

config.conf


###   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
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
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
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.
''
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.
ik gebruik het volgende voor het ophalen daarvan:

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


het onderste gedeelte wordt in de voorbeeldcode weergegeven.
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.
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):


	$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.

Reageren