Page tree
Skip to end of metadata
Go to start of metadata

header => {"alg":"RS256"}

Дані для формування payload, беруться з оригінальною трансакції

payload => {"merchantId":"1752739","terminalId":"E7880539","totalAmount":50000,"currency":"980","orderId":"poip1","purchaseTime":"20151123153333"}

Переводимо в Base64URL Encode і робимо сигнатуру на підставі отриманих даних.


Переводимо в Base64URL header


eyJhbGciOiJSUzI1NiJ9


Переводимо в Base64URL payload

eyJtZXJjaGFudElkIjoiMTc1MjczOSIsInRlcm1pbmFsSWQiOiJFNzg4MDUzOSIsInRvdGFsQW1vdW50Ijo1MDAwMCwiY3VycmVuY3kiOiI5ODAiLCJvcmRlcklkIjoicG9pcDEiLCJwdXJjaGFzZVRpbWUiOiIyMDE1MTEyMzE1MzMzMyJ9

підготовка signature=”header”.”payload”

eyJhbGciOiJSUzI1NiJ9.eyJtZXJjaGFudElkIjoiMTc1MjczOSIsInRlcm1pbmFsSWQiOiJFNzg4MDUzOSIsInRvdGFsQW1vdW50Ijo1MDAwMCwiY3VycmVuY3kiOiI5ODAiLCJvcmRlcklkIjoicG9pcDEiLCJwdXJjaGFzZVRpbWUiOiIyMDE1MTEyMzE1MzMzMyJ9


На прикладі openssl

openssl dgst -sha256 -sign %1 datafile1 > signature.bin


і переводим у

openssl base64 -e -in signature. -out signature
signature= HFGe2v7Zv+RJF+Vv2rPV5A3PAVRQkjI8HUxWdIRX4aKLH0y67sITqMFPFfEBaotF
DVWTYsHQywrHLygiiBZ48K7cQJ9NbNrkzV6QnB5Q7tWna/tQTK2kpSmPQDrlKg+H
6vysPTeOsTFbvMR779nDQ/R7o1GLcNn+LieRaK0qIf9MQKO747r5xLck6pIAF4mS
edyakI92fgFuBL/DIyq2ATMogCFijLIWwIEmf11D+UblDpfgTKgH4sCYYLwUKMCl
uJhQt06qL5QhyiZpVdLMK+z42SOHWKq5zEz50I1ABuaULiY+KOPJIhaRVuiNWbYB
daJf9LXP3Uj3DDHg5+gXIA==


Формируємо json request на https://ecg.test.upc.ua/go/service/01

{“header”:” eyJhbGciOiJSUzI1NiJ9”,
“payload”:”eyJtZXJjaGFudElkIjoiMTc1MjczOSIsInRlcm1pbmFsSWQiOiJFNzg4MDUzOSIsInRvdGFsQW1vdW50Ijo1MDAwMCwiY3VycmVuY3kiOiI5ODAiLCJvcmRlcklkIjoicG9pcDEiLCJwdXJjaGFzZVRpbWUiOiIyMDE1MTEyMzE1MzMzMyJ9”,
Signature:”HFGe2v7Zv+RJF+Vv2rPV5A3PAVRQkjI8HUxWdIRX4aKLH0y67sITqMFPFfEBaotF
DVWTYsHQywrHLygiiBZ48K7cQJ9NbNrkzV6QnB5Q7tWna/tQTK2kpSmPQDrlKg+H
6vysPTeOsTFbvMR779nDQ/R7o1GLcNn+LieRaK0qIf9MQKO747r5xLck6pIAF4mS
edyakI92fgFuBL/DIyq2ATMogCFijLIWwIEmf11D+UblDpfgTKgH4sCYYLwUKMCl
uJhQt06qL5QhyiZpVdLMK+z42SOHWKq5zEz50I1ABuaULiY+KOPJIhaRVuiNWbYB
daJf9LXP3Uj3DDHg5+gXIA==”}


Отримуємо json response яким декодируємо


eyJyZXN1bHRzIjpbeyJ0cmFuQ29kZSI6IjYwMiIsImFwcHJvdmFsQ29kZSI6Ijc5ODU0NCIsInJybiI6ODI1NzA5MzUxOTE3LCJjb21tZW50IjoiV2FpdGluZyBjb25maXJtYXRpb24gb2YgaW5zdGFsbWVudCIsImNhcmROdW1NYXNrZWQiOiI1NDA5NTMqKioqKiowMDAyIiwidHJhblRpbWUiOiIyMDE4LTA5LTE0IDA5OjIwOjE0LjQxOCIsImFtb3VudCI6MTUwMDAwMCwiY3VycmVuY3kiOjk4MCwib3BlclR5cGUiOiJQVVJDSEFTRSIsImFjdGlvbkNvZGUiOiIwMDAiLCJpbnN0YWxsbWVudERhdGEiOnsidHlwZSI6MjAsInBheW1lbnRPcHRpb24iOiJCIiwib3B0aW9uIjp7Im1pbk51bWJlciI6NSwibWF4TnVtYmVyIjoxMCwiaW50ZXJlc3RSYXRlIjoxNTIsImZlZSI6MzQ2LCJhbm51YWxQZXJjZW50YWdlUmF0ZSI6MTgyNCwidG90YWxBbW91bnREdWUiOjIyMzkyfSwicmVjZWlwdCI6IlNvbWUgdGV4dCJ9fSx7InRyYW5Db2RlIjoiMDAwIiwiYXBwcm92YWxDb2RlIjoiNTM1NzYwIiwicnJuIjo4MjU3MDkzNTE5MTcsImNvbW1lbnQiOiJBcHByb3ZlZCIsImNhcmROdW1NYXNrZWQiOiI1NDA5NTMqKioqKiowMDAyIiwidHJhblRpbWUiOiIyMDE4LTA5LTE0IDA5OjI3OjQwLjE5MSIsImFtb3VudCI6MTUwMDAwMCwiY3VycmVuY3kiOjk4MCwib3BlclR5cGUiOiJSRVZFUlNBTCIsImFjdGlvbkNvZGUiOiIwMDAiLCJpbnN0YWxsbWVudERhdGEiOnsidHlwZSI6MjAsInBheW1lbnRPcHRpb24iOiJCIiwib3B0aW9uIjp7Im1pbk51bWJlciI6NSwibWF4TnVtYmVyIjoxMCwiaW50ZXJlc3RSYXRlIjoxNTIsImZlZSI6MzQ2LCJhbm51YWxQZXJjZW50YWdlUmF0ZSI6MTgyNCwidG90YWxBbW91bnREdWUiOjIyMzkyfSwicmVjZWlwdCI6IlNvbWUgdGV4dCJ9fV19


  • No labels