Swedbank nepieņem manus pieprasījumus, ar kļūdu "Pieslēguma kļūda! Lūdzu griezties pie pakalpojuma/produkta pārdevēja. (Paraksts ir kļūdains) Pakalpojums nav pieejams, vai iesūtītais ziņojums ir nepareizs";
Pameģināju, testēšanā, vienkārši paņemt doto piemēru un izmainīt tur tikai tirgotāja identifikātoru un privāto atslēgu, bet tik un tā pakalpojums nestrādā.
Pameģinaju verificēt savu pašu ziņojuma parakstu ar izveidoto publisko atslēgu, verifikācija strāda.
Pēc tām vispār izveidoju statiskas vērtības uz visiem parametriem:
$VK_SERVICE=1002;
$VK_VERSION='008';
$VK_SND_ID='TirgotajaID'; //reāli cits
$VK_STAMP=1;
$VK_AMOUNT=0.01;
$VK_CURR='LVL';
$VK_REF='1';
$VK_MSG='Test';
$VK_MAC='';
$VK_RETURN='http://www.lappuse.lv/confirm'; //reāli cits
$VK_LANG='LAT';
$VK_ENCODING='UTF-8';
$data='';
$data .= str_pad(mb_strlen($VK_SERVICE), 3, '0', STR_PAD_LEFT).$VK_SERVICE;
$data .= str_pad(mb_strlen($VK_VERSION), 3, '0', STR_PAD_LEFT).$VK_VERSION;
$data .= str_pad(mb_strlen($VK_SND_ID), 3, '0', STR_PAD_LEFT).$VK_SND_ID;
$data .= str_pad(mb_strlen($VK_STAMP), 3, '0', STR_PAD_LEFT).$VK_STAMP;
$data .= str_pad(mb_strlen($VK_AMOUNT), 3, '0', STR_PAD_LEFT).$VK_AMOUNT;
$data .= str_pad(mb_strlen($VK_CURR), 3, '0', STR_PAD_LEFT).$VK_CURR;
$data .= str_pad(mb_strlen($VK_REF), 3, '0', STR_PAD_LEFT).$VK_REF;
$data .= str_pad(mb_strlen($VK_MSG), 3, '0', STR_PAD_LEFT).$VK_MSG;
$fp = fopen(KEY_LOCATION."/keyfile.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
openssl_sign($data, $signature, $pkeyid,OPENSSL_ALGO_SHA1);
$VK_MAC = base64_encode($signature);
Nesaprotu, kāpēc vienmēr saņemu kļūdu, kā paraksts ir nepareizs. POST visas vērtības parodās korrekti.