Specifikacijos
Pranešimo struktūra
POST užklausa yra atliekama kiekvienam įvykiui į jūsų nurodytus adresą/us. Perduodami 2 parametrai:
- data - užkoduoti duomenys apie įvykį.
- sign - užkoduotas data parametro parašas.
Tam, kad apdoroti gautą pranešimą jums reikia patikrinti ar sign parametras yra validus ir atkoduoti data parametrą.
Abu parametrai yra užkoduoti naudojantis base64 kodavimo schema.
Užkodavus, simboliai +
yra pakeičiami į -
, /
pakeičiami į
_
. Koduota eilutė dekoduojama taikant atvirkštinį algoritmą:
-
Simbolis
-
keičiamas į+
, simblois_
keičiamas į/
; - Dekoduojama naudojantis base64 kodavimo schema.
Parametro data parašas yra pasirašomas naudojantis RSA raktu, naudojant SHA1 maišos funkciją. Sertifikatą, atitinkantį parašui naudojamą raktą, galima atsisiųsti šiuo adresu:
https://www.paysera.com/download/public.key
Duomenys apie įvykį yra užkoduojami "application/x-www-form-urlencoded" formatu prieš kodavimą base64 formatu ir spec. simbolių pakeitimu. Tam, kad gauti duomenų masyvą naudokite "application/x-www-form-urlencoded" formato dekodavimą.
Pavyzdys PHP kalba, kaip apdoroti informacinį pranešimą:
<?php $publicKey = loadFromWeb(); $sign = $_POST['sign']; $data = $_POST['data']; $signReplaced = strtr($sign, array('-' => '+', '_' => '/')); $signDecoded = base64_decode($signReplaced); if (openssl_verify($data, $signDecoded, $publicKey, OPENSSL_ALGO_SHA1) === 1) { $dataReplaced = strtr($data, array('-' => '+', '_' => '/')); $dataDecoded = base64_decode($dataReplaced); parse_str($dataDecoded, $params); // use $params echo 'OK'; }
Reikšmės, panaudotos pavyzdyje
QRRnBKqW5agE8_xYxG-E-72lDj0q8M16Tcof-1LvzXCl_vY_rkCBkevy5y4V4UlwyC3vYwuPAVqZDzQtxvl6svlLpG7Lhl55MzOPNajOokzNza5LTiMLX77XuRyVd1JWxqIoWi9NmXrvJizoQwFJXSqDai7cULX0LSEHL5dSQIsZST27jBFVrRUbuGQO1d67eRuSh_s6ybqnbGH--Ti_xdhkhZNOVn2pHFvhNtSNp0iFdcHMEELIMpkCe-07ouO9cvGGmXUXSiMlLyrfJZ-kpaAvTC_GDzq5crE0hXFp-OkkAinAWun0-LmZOEZsYFUbBv8xQ8YuNI5-11wwS2W33g==
QRRnBKqW5agE8/xYxG+E+72lDj0q8M16Tcof+1LvzXCl/vY/rkCBkevy5y4V4UlwyC3vYwuPAVqZDzQtxvl6svlLpG7Lhl55MzOPNajOokzNza5LTiMLX77XuRyVd1JWxqIoWi9NmXrvJizoQwFJXSqDai7cULX0LSEHL5dSQIsZST27jBFVrRUbuGQO1d67eRuSh/s6ybqnbGH++Ti/xdhkhZNOVn2pHFvhNtSNp0iFdcHMEELIMpkCe+07ouO9cvGGmXUXSiMlLyrfJZ+kpaAvTC/GDzq5crE0hXFp+OkkAinAWun0+LmZOEZsYFUbBv8xQ8YuNI5+11wwS2W33g==
Agªâ€“å¨óüXÄo„û½¥=*ðÍzMÊûRïÍp¥þö?®@‘ëòç.áIpÈ-ïcÂZâ„¢4-Æùz²ùK¤nˆ^y33Â5¨Î¢LÍÍ®KN#_¾×¹â€¢wRVÆ¢(Z/Mâ„¢zï&,èCI]*Æ’j.ÜPµô-!/—R@‹I=»Å’U¸dÕÞ»y’‡û:ɺ§laþù8¿ÅØd…“NV}©[á6Ô§H…uÁÌBÈ2â„¢{í;¢ã½rñ†™uJ#%/*ß%Ÿ¤¥ /L/Æ:¹r±4…qiøé$)ÀZéôø¹â„¢8Fl`Uÿ1CÆ.4Ž~× Ke·Þ
dHlwZT1NSyZjcmVkaXQ9MSZhY2NvdW50PUVWUDAwMDAwMDAwMDAwMDEmYW1vdW50PTIzLjA5JmN1cnJlbmN5PUVVUiZwYXllcl9hY2NvdW50PUVWUDAwMDAwMDAwMDAwMDImZGV0YWlscz1EZXRhaWxzJnRyYW5zZmVyX2lkPTk5OTk5OTk5JnN0YXRlbWVudF9pZD0xMjM0NTY3ODk=
dHlwZT1NSyZjcmVkaXQ9MSZhY2NvdW50PUVWUDAwMDAwMDAwMDAwMDEmYW1vdW50PTIzLjA5JmN1cnJlbmN5PUVVUiZwYXllcl9hY2NvdW50PUVWUDAwMDAwMDAwMDAwMDImZGV0YWlscz1EZXRhaWxzJnRyYW5zZmVyX2lkPTk5OTk5OTk5JnN0YXRlbWVudF9pZD0xMjM0NTY3ODk=
type=MK&credit=1&account=EVP0000000000001&amount=23.09¤cy=EUR&payer_account=EVP0000000000002&details=Details&transfer_id=99999999&statement_id=123456789
array(8) { ["type"]=> string(2) "MK" ["credit"]=> string(1) "1" ["account"]=> string(16) "EVP0000000000001" ["amount"]=> string(5) "23.09" ["currency"]=> string(3) "EUR" ["payer_account"]=> string(16) "EVP0000000000002" ["details"]=> string(7) "Details" ["transfer_id"]=> string(8) "99999999" ["statement_id"]=> string(9) "123456789" }
Įvykių parametrai
Patikrinus parašą ir atkodavus data parametrą, gaunate įvykio informaciją. Jeigu bent vienas iš parametrų yra tuščias, jis nebus pridėtas prie "application/x-www-form-urlencoded" formatu koduotos simbolių eilutės.
MK - Mokėjimas
HO - Sąskaitos papildymas
FX - Valiutos konvertavimas
MM - Kita transakcija
1
jei tai yra įeinančios lėšos, 0
jei tai yra išeinančios lėšos.
Nesuteikiamas, jei tai yra valiutos konvertavimo operacija
Svarbu. Patikrinkite ar pranešimas tokiu numeriu nebuvo gautas anksčiau, išsaugokite šį numerį