Hallo slimmerikken,
Jullie hebben vast meer verstand van PHP-programmeren dan ik. Mijn kennis dáárvan is namelijk zeer beperkt.
Nu wil ik graag mijn ooit functioneren iDeal-betalingsmogelijkheid nieuw leven inblazen.

De PSP (Payment Service Provider) wil echter in de FORM een checksum, die ik ook na lang proberen niet goed krijg. Hij blijft 'checksum error' retourneren.
Wat ik heb gedaan in mijn cgi-bestanden en daarvan dus de ideal.php is het volgende.
Kan iemand dit corrigeren als ik stom bezig ben geweest? Alsjeblieft....

Aan het einde van de php (dus net voor ?> ) heb ik, de SHA1 zo gedeclareerd:

$controle = SHA1('EUR' + '<?php echo $tempgrandtotX100 ?>' + 'MIJN MERCHANT ID' + 'MIJN RETURNURL' + '<?php echo $invoiceNo ?>' + 'MIJN MERCHANT SECRET');
(Met hoofdletters geschreven zijn de dingen die ik heb ingevuld natuurlijk.)

Vervolgens roep ik CONTROLE aan in de FORM voor de betaling:


<form action="https://www.qantanipayments.com/frontend/" method=post>
<INPUT type="hidden" NAME="merchantid" value="MIJN MERCHANT ID " />
<INPUT type="hidden" NAME="key" value="MIJN MERCHANT KEY" />
<INPUT type="hidden" NAME="checksum" value='<?php echo $controle ?>' />
<input type='hidden' name="amount" value='<?php echo $tempgrandtotX100 ?>' />
<INPUT type="hidden" NAME="ordernumber" value='<?php echo $invoiceNo ?>' />
<INPUT type="hidden" NAME="language" VALUE="NL" />
<INPUT type="hidden" NAME="return" VALUE="MIJN RETURNURL" />
<INPUT type="hidden" NAME="currency" VALUE="EUR" />
<INPUT type="hidden" NAME="description" VALUE="Boeken" />
<INPUT type="hidden" NAME="itemNumber1" VALUE="9089730000" />
<INPUT type="hidden" NAME="itemDescription1" VALUE="Boeken" />
<INPUT type="hidden" NAME="itemQuantity1" VALUE="1" />
<INPUT type="hidden" NAME="itemPrice1" value='<?php echo $tempgrandtotX100 ?>' />
<INPUT type="hidden" NAME="validUntil" VALUE="2020-12-31T12:00:00:0000Z" />
<font size="5">
<INPUT type="submit" NAME="submit" VALUE="Verstuur" id="submit" />
</font>
</form>


Ik krijg steeds 'checksum error' als antwoord.

De $tempgrandtotX100 en $invoiceNo komen uit eerdere onderdelen (basket.php) van de bestelprocedure en dat heeft altijd gewerkt, toen ik nog een direct basix iDeal-abonnement had.

Aristos Bouius op 15/07/2014 15:07:17

Die PARSE ERROR staat niet gespecificeerd. Alleen maar 'parse error in line 205'


Dan post je de omliggende regels even.
Dus regel 203 t/m 207.
Aristos Bouius op 15/07/2014 15:07:17
- van een testomgeving voor de checksum weet is niks. Die gegenereerde checksum wordt vergeleken met de checksum die aan de serverkant wordt gemaakt en vergeleken, waarna een TRUE of FALSE wordt gegeven.

Ik weet niet welke provider je hebt, dus daar kan ik ook niet meer over zeggen. Sommige hebben een test functie in hun api ingebouwd die de checksum teruggeeft voor de waardes die je zelf naar die api call stuurt. Zo kan je controleren wat de checksum zou moeten zijn en kan je dus makkelijker testen.

Maar als die van jou dat niet biedt dan heb je verder weinig aan die kennis natuurlijk :-)
@SanThe:
Wil ik best doen, maar volgens mij, heb je daar niks aan??

$protocol = ($_SERVER['HTTPS'] == "") ? "http://" : "https://";
$theLoc = $protocol . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$thePos = strpos($theLoc, "cgi/ideal.php");
$theLoc = substr($theLoc, 0, $thePos);
$return_url = $theLoc . "transaction_success.html";
$failure_url = $theLoc . "transaction_failure.html";
$maybe_url = $theLoc . "transaction_maybe.html";
$invoice_url = $theLoc . "cgi/invoice.php";

$controle = SHA1('EUR' ................................

?>

Daarna begint het HTML deel dus.
Haal die PHP-tags weg uit het gedeelte na $controle en maak er zoiets van, geheel in PHP:


<?php
$controle = sha1(
   'EUR'
   . $tempgrandtotX100 
   . '1713' 
   . 'http://www.winkel.aristoscorpio.com' 
   . $invoiceNo
   . 'lcdChp9EGNstdDOXGBYZOUoQ0'
);
?>
Beste Ward,

Mijn dank. Dit was de oplossing.
Ik begrijp hem eerlijk gezegd nog niet zo goed, aangezien het enige verschil is dat er returns in de declaratie (&controle) staan. Verder is er niets veranderd.

Maar goed, dat maakt niks uit. Het werkt nu, daar gaat het om.
Ik kan nu verder met het werk waar ik wèl goed in ben, zal ik maar zeggen.

Vele dank, ook aan de anderen die de moeite hebben genomen zich in mijn probleem te verdiepen (@Erwin H, @ShanThe, @Frank Nietbelangrijk).

Een prettige avond,
Aristos

Reageren