Lid |
|
Hi guys,
ik volg de handleiding op https://icepay....Manual.pdf maar blijf vast lopen op de foutmelding:
Bad Request - Invalid Content Length
HTTP Error 400. There is an invalid content length or chunk length in the request.
Ik krijg het echt niet opgelost want volgens mijn heb ik alles goed gedaan (obviously not lol). Iemand die mij kan vertellen wat ik verkeerd doe?
Mijn code hier onder:
<div class="col-md-12">
<?php
$body = array("Timestamp" => date('Y-m-d h:m:s', time()),
"Amount" => '500',
"Country" =>'NL',
"Currency" =>'EUR',
"Description" => 'website',
"EndUserIP" => $_SERVER['REMOTE_ADDR'],
"PaymentMethod" => 'iDeal',
"Issuer" => "ING",
"Language" => 'NL',
"OrderID" => '1231234',
"URLCompleted" => 'http://www.website.nl/bestelling-ontvangen/',
"URLError" => 'http://www.website.nl/betaling-mislukt/');
$url = 'https://connect.icepay.com/webservice/api/v1/payment/checkout';
$checksum = hash('sha256', utf8_encode($url.'/POST30203MIJNGEHEIMECODE'.json_encode($body)));
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url );
curl_setopt($curl, CURLINFO_HEADER_OUT, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('MerchantID: 123456', 'Checksum: '.$checksum));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_POST, 1);
$response = curl_exec($curl);
curl_close($curl);
echo '<pre><code>';
print_r( json_encode($body) );
echo '</code></pre>';
echo '<pre><code>';
print_r( $checksum );
echo '</code></pre>';
echo '<pre><code>';
print_r( strlen($checksum) );
echo '</code></pre>';
echo '<pre><code>';
print_r( $response );
echo '</code></pre>';
?>
</div>
<div class="col-md-12"> <?php "Amount" => '500', "Country" =>'NL', "Currency" =>'EUR', "Description" => 'website', "EndUserIP" => $_SERVER['REMOTE_ADDR'], "PaymentMethod" => 'iDeal', "Issuer" => "ING", "Language" => 'NL', "OrderID" => '1231234', "URLCompleted" => 'http://www.website.nl/bestelling-ontvangen/', "URLError" => 'http://www.website.nl/betaling-mislukt/'); $url = 'https://connect.icepay.com/webservice/api/v1/payment/checkout'; $checksum = hash ('sha256', utf8_encode($url.'/POST30203MIJNGEHEIMECODE'.json_encode ($body))); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url ); curl_setopt($curl, CURLINFO_HEADER_OUT, 1); curl_setopt ($curl, CURLOPT_HTTPHEADER , array('MerchantID: 123456', 'Checksum: '.$checksum)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_POST, 1); $response = curl_exec($curl); curl_close($curl); ?> </div>
EDIT:
Ik ben nu een stuk verder, de timestamp is niet goed maar krijg nu wel een answer terug. Schijnbaar moet ik de body mee geven in de curl en niet alleen in de checksum, uit de documentatie begreep ik dat het alleen in de checksum hoefde...
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($body));
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($body));
Iemand enig idee hoe ik de timestamp moet maken? krijg nu de melding:
{"Message":"ERR_0003: Please provide a valid Timestamp member"}
terug terwijl in mijn code staat:
"Timestamp" => date('Y-m-d\Th:m:s\Z', time())
"Timestamp" => date('Y-m-d\Th:m:s\Z', time())
|