Przejdźmy do konkretów.
Skrypt PHP generujący tablicę z danymi wygląda tak:
$posID = "145227"; $dane['CustomerIp']='127.0.0.1'; $dane['MerchantPosId']='145227'; $dane['Description']='Order description'; $dane['CurrencyCode']='PLN'; $dane['TotalAmount']='1000'; $dane['Products.Product[0].Name']='Product 1'; $dane['Products.Product[0].UnitPrice']='1000'; $dane['Products.Product[0].Quantity']='1'; $dane['ContinueUrl']='http://localhost/continue'; $zlacz = ""; foreach($dane as $d) { $zlacz = $zlacz.$d; } $zlacz = $zlacz."13a980d4f851f3d9a1cfc792fb1f5e50"; //drugi klucz $podpis = hash("md5", $zlacz); $dane["OpenPayU-Signature"] = "sender=".$posID.";algorithm=MD5;signature=".$podpis; wypiszPotwierdzenie($dane);
Funkcja wypiszPotwierdzenie() wygląda tak:
function wypiszPotwierdzenie($dane) { ?> <div class="formularz"> <form method="post" action="https://secure.payu.com/api/v2/orders"> <?php foreach($dane as $k => $d) { } ?> <input type="submit" value="" style="border: 0; width:160px; height:35px; background: url('http://static.payu.com/pl/standard/partners/buttons/payu_account_button_01.png');" /> </form> </div> <?php }
I teraz najlepsze. Jeżeli w funkcji wypiszFormularz() wkleję przykłądowy formularz tak:
<div class="formularz">tutaj przykladowy formularz</div>
To wszystko działa. Jeżeli formularz jest wygenerowany to już jest błąd. Hash MD5 jest generowany prawidłowo (jest identyczny z tym z przykładu). Co robię nie tak?
Dla jasności wklejam również kod przykładowego formularza:
<html> <body> <form method="post" action="https://secure.payu.com/api/v2/orders"> <input type="hidden" name="CustomerIp" value="127.0.0.1" /> <input type="hidden" name="MerchantPosId" value="145227" /> <input type="hidden" name="Description" value="Order description" /> <input type="hidden" name="CurrencyCode" value="PLN" /> <input type="hidden" name="TotalAmount" value="1000" /> <input type="hidden" name="Products.Product[0].Name" value="Product 1" /> <input type="hidden" name="Products.Product[0].UnitPrice" value="1000" /> <input type="hidden" name="Products.Product[0].Quantity" value="1" /> <input type="hidden" name="ContinueUrl" value="http://localhost/continue" /> <input type="hidden" name="OpenPayu-Signature" value="sender=145227;algorithm=MD5;signature=34267d8d3844d90af7a4aac24f8ee5e4" /> <button type="submit" formtarget="_blank" /> </form> </body> </html>