Acceptico Dokumentacija

Autentifikacija za Pozivanje Integracionih Servisa

Za potrebe autentifikacije pri korišćenju integracionih servisa koristi se JWT standard (JSON Web Token). Ovaj standard obezbeđuje siguran prenos informacija između klijenta (trgovca) i servera uz potpisivanje i verifikaciju tokena. Za dodatne informacije, primere koda i biblioteke dostupne za različite programske jezike, posetite jwt.io

Opis Mehanizma Autentifikacije

Proces autentifikacije uz upotrebu JWT tokena uključuje dve strane:

  • A - Trgovac (vaša aplikacija)
  • B - Server (Acceptico)

Između ove dve strane vrši se razmena simetricnih ključeva koje Acceptico d.o.o. dostavlja trgovcu.

Koraci za Pozivanje Servisa uz JWT Autentifikaciju

Generisanje JWT tokena:

  • Trgovac generiše JWT token potpisivanjem JSON payload-a koristeći svoj privatni ključ.
  • Minimalni zahtev za sadržaj payload-a je naziv trgovca (varijabla MerchantUsername), kao i vrednost koja određuje vreme isteka tokena (varijabla exp).
  • Algoritam potpisivanja koji se koristi je HS256.

Pozivanje servisa:

  • Trgovac (A) šalje zahtev serveru (B) JWT token. Token mora biti prosleđen metodom (GET/POST) u zavisnosti od servisa koji se poziva.

Verifikacija tokena:

  • Server (B) proverava da li je token zaista potpisao trgovac, koristeći svoju kopiju privatnog ključa.
  • Nakon uspešne verifikacije, server čita sve potrebne podatke iz tokena za dalje procesiranje.
  • Server (B) daje dogovor Trgovcu (A) sa takodje potpisanim JWT tokenom kako bi trgovac bio siguran da je dogovor dosao zaista od servera, a ne od nekog drugog.

Napomene

  • Servis koristi simetrične (tajne) ključeve za potpisivanje i verifikaciju tokena.
  • Tajni ključevi se dostavljaju trgovcu putem Viber/Signal poruka za testno i produkciono okruženje, nakon čega se poruke brišu radi sigurnosti.

Ovo uputstvo pruža osnovne informacije potrebne za uspostavljanje bezbedne JWT autentifikacije između trgovca i servera za sve pozive integracionih servisa.

Rezervisi svoj termin za besplatne konsultacije!


IPS Prodaja - Full API Integracija

Putem ovog servisa možete primati IPS, odnosno uplatu pomocu skinaranja QR koda na bilo kojem internet portalu ili prodavnici.

URL Servisa:

POST /ips-connect

x-www-form-urlencoded => token = {generated_token}

{token} - JWT token koji u sebi sadrži payload sa navedenim obaveznim/opcionim poljima.

Struktura JWT Tokena za Naplatu i Transfer

Polje Obavezno/
Opcionalno
Tip Opis
jwtUsername Required String Username koji dobijate od iPay-a za pristup i autentikaciju na API servise.
uniqueMerchantTransactionId Required String
Max 32 char.
Unikatni identifikator iz sistema trgovca.
amount Required Integer Ukupan iznos za isplatu izražen bez decimalnih mesta.
exponent Required Integer
1 digit
Ekponent parametra amount za računanje decimalnih mesta (primer: amount 1000 + exponent 2 = 10.00).
currencyCode Required Integer
3 digits
Trocifrena ISO 4217 šifra valute (primer: 941 za RSD).
ipsStoreId Required String
Max 10 char.
Identifikator prodajnog mesta.
lang Optional String
Max 2 char.
Indikator odabira jezika. Dozvoljene vrednosti: "sr", "en"
notificationUrl Required URL URL na koji se salje informacija o konacnom statusu transakcije.
paymentPurposeCode Required Integer
3 digits
Šifra svrhe plaćanja.
paymentDescription Required String Svrha plaćanja prilikom isplate sredstava na račun.
reference Required String
Max 100 char.
Meta podaci koji se upisuju i prosleđuju u transakciji.
clientIp Required String
max. 15 char.
IPv4 adresa klijenta. Primer: 111.111.111.111
exp Required Integer Vreme isteka tokena.

IPS Prodaja - Payment Page Integracija

Putem ovog servisa možete primati IPS, odnosno uplatu pomocu skinaranja QR koda na bilo kojem internet portalu ili prodavnici putem nase Payment Page stranice gde vam je pre generisan izgled stranice za IPS placanje.

IPS Prodaja - UML Dijagram:

URL Servisa:

POST /ips-sale

x-www-form-urlencoded => token = {generated_token}

{token} - JWT token koji u sebi sadrži payload sa navedenim obaveznim/opcionim poljima.

Struktura JWT Tokena za Naplatu i Transfer

Polje Obavezno/
Opcionalno
Tip Opis
jwtUsername Required String Username koji dobijate od iPay-a za pristup i autentikaciju na API servise.
uniqueMerchantTransactionId Required String
Max 32 char.
Unikatni identifikator iz sistema trgovca.
amount Required Integer Ukupan iznos za isplatu izražen bez decimalnih mesta.
exponent Required Integer
1 digit
Ekponent parametra amount za računanje decimalnih mesta (primer: amount 1000 + exponent 2 = 10.00).
currencyCode Required Integer
3 digits
Trocifrena ISO 4217 šifra valute (primer: 941 za RSD).
ipsStoreId Required String
Max 10 char.
Identifikator prodajnog mesta.
lang Optional String
Max 2 char.
Indikator odabira jezika. Dozvoljene vrednosti: "sr", "en"
cancelUrl Required URL URL na koji se redirektuje korisnik ukoliko odkaze transakciju.
successUrl Required URL URL na koji se redirektuje i saljem korisnik nakon uspesne transakcije.
failUrl Required URL URL na koji se redirektuje i saljem korisnik nakon neuspesne transakcije.
notificationUrl Required URL URL na koji se salje informacija o konacnom statusu transakcije.
notificationEmail Required Email Email na koji se salje informacija o konacnom statusu transakcije.
paymentPurposeCode Required Integer
3 digits
Šifra svrhe plaćanja.
paymentDescription Required String Svrha plaćanja prilikom isplate sredstava na račun.
reference Required String
Max 100 char.
Meta podaci koji se upisuju i prosleđuju u transakciji.
OrderId Required String
Max 100 char.
Broj porudzbine trgovca.
clientIp Required String
max. 15 char.
IPv4 adresa klijenta. Primer: 111.111.111.111
operaterId Required String
max. 10 char.
ID Operatera
uiType Required String
max. 15 char.
Tip payment page stranice. Dozvoljeni parametri: "full", "qr-only"
exp Required Integer Vreme isteka tokena.

Primer Tokena:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqd3RVc2VybmFtZSI6Iklwc19BY2NlcHRpY28iLCJpcHNTdG9yZUlkIjoiMzgxNTEyMDQyOSIsIm9wZXJhdGVySWQiOiI0NTM1MTk5MTE1IiwidW5pcXVlTWVyY2hhbnRUcmFuc2FjdGlvbklkIjoiNjcyOTM4NGI3M2NiNyIsImFtb3VudCI6MzAwMDAwLCJleHBvbmVudCI6MiwiY3VycmVuY3lDb2RlIjoiOTQxIiwicGF5bWVudENvZGUiOiIyODkiLCJwYXltZW50RGVzY3JpcHRpb24iOiJJUFMgUHJvZGFqYSAtIFRlc3QiLCJsYW5nIjoic3IiLCJ1aVR5cGUiOiJxci1vbmx5IiwicmVmZXJlbmNlIjoiUHJvaXp2b2xqbmEgcmVmZXJlbmNhIiwic3VjY2Vzc1VybCI6Imh0dHBzOi8vYXBpLmFjY2VwdGljby5jb20vYXBpL3ZvaWQiLCJmYWlsVXJsIjoiaHR0cHM6Ly9hcGkuYWNjZXB0aWNvLmNvbS9hcGkvdm9pZCIsImNhbmNlbFVybCI6Imh0dHBzOi8vYXBpLmFjY2VwdGljby5jb20vYXBpL3ZvaWQiLCJleHAiOjE3MzA3NzI2MzV9.HQi-geomIF6is58QQBj8iXaNJGEUeCRCcGm3YXQaBGc

Primer Podataka Unutar Tokena Zahteva:

{
    "jwtUsername": "Ips_Acceptico",
    "ipsStoreId": "3815120429",
    "operaterId": "4535199115",
    "uniqueMerchantTransactionId": "6729384b73cb7",
    "amount": 300000,
    "exponent": 2,
    "currencyCode": "941",
    "paymentCode": "289",
    "paymentDescription": "IPS Prodaja - Test",
    "lang": "sr",
    "uiType": "qr-only",
    "reference": "Proizvoljna referenca",
    "successUrl": "https://api.acceptico.com/api/void",
    "failUrl": "https://api.acceptico.com/api/void",
    "cancelUrl": "https://api.acceptico.com/api/void",
    "exp": 1730772635
}
                    

Primer Odgovora Servisa:

Primer Podataka Unutar Tokena Odgovora:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqd3RVc2VybmFtZSI6Iklwc19BY2NlcHRpY28iLCJvayI6eyJzdGF0dXMiOiJTIiwiaXBzQ29ubmVjdElkIjoiaXBzLnNhbGUuMjAyNDExMDQyMjEwMzUuNjcyOTM4NGJhMmRkYTMuMDI5NDM3NjEiLCJpcHNTdG9yZUlkIjoiMzgxNTEyMDQyOSIsIm9wZXJhdGVySWQiOiI0NTM1MTk5MTE1IiwidW5pcXVlTWVyY2hhbnRUcmFuc2FjdGlvbklkIjoiNjcyOTM4NGI3M2NiNyIsImFtb3VudCI6IjMwMDAwMCIsImV4cG9uZW50IjoiMiIsImFjY291bnROdW1iZXIiOiIxMTEyNzEwMzEwMDEzNzYzMTMiLCJjdXJyZW5jeUNvZGUiOiI5NDEiLCJwYXltZW50Q29kZSI6IjI4OSIsInBheW1lbnREZXNjcmlwdGlvbiI6IklQUyBQcm9kYWphIC0gVGVzdCIsInJlZmVyZW5jZSI6IlByb2l6dm9sam5hIHJlZmVyZW5jYSIsInByb2Nlc3NvcklkIjoiU1JCQVNFQVNFIiwidGVybWluYWxJZCI6IkFjY2VwdDAxIiwicHJvY2Vzc29yUmVzcG9uc2VDb2RlIjoiMDAiLCJwcm9jZXNzb3JUcmFuc2FjdGlvbklkIjoiTzU4ZjdoR2tlQ3FSenc4YUZMeU8iLCJwcm9jZXNzb3JUZXJtaW5hbElkIjoiTzU4ZjdoR2siLCJwcm9jZXNzb3JBcHByb3ZhbENvZGUiOiJhVmVMRldZWUEzIiwicHJvY2Vzc29yU3RhdHVzRGVzY3JpcHRpb24iOiIwWnJ5Zjk2SnhOeGlVZVVxQ2JpVWF2T3M1aWRpRWMiLCJpbml0aWFsaXphdGlvblRpbWVzdGFtcCI6IjIwMjQtMTEtMDQgMjE6MTA6MzUifSwiZXhwIjoxNzMwNzU2NDQyfQ.4-vTLXCyuQ_DAiCV9TuntiUDz7BVeVG_Le0l7uj5jM8

Primer Podataka Unutar Tokena Odgovora:

{
"jwtUsername": "Ips_Acceptico",
"ok": {
    "status": "S",
    "ipsConnectId": "ips.20241104221035.6729384ba2dda3.02943761",
    "ipsStoreId": "3815120429",
    "operaterId": "4535199115",
    "uniqueMerchantTransactionId": "6729384b73cb7",
    "amount": "300000",
    "exponent": "2",
    "accountNumber": "111271031001376313",
    "currencyCode": "941",
    "paymentCode": "289",
    "paymentDescription": "IPS Prodaja - Test",
    "reference": "Proizvoljna referenca",
    "processorId": "SRBASEASE",
    "terminalId": "Accept01",
    "processorResponseCode": "00",
    "processorTransactionId": "O58f7hGkeCqRzw8aFLyO",
    "processorTerminalId": "O58f7hGk",
    "processorApprovalCode": "aVeLFWYYA3",
    "processorStatusDescription": "0Zryf96JxNxiUeUqCbiUavOs5idiEc",
    "initializationTimestamp": "2024-11-04 21:10:35"
},
"exp": 1730756442
}
                    

Kod Odgovor Komentar
200
{
    "jwtUsername": "Ips_Acceptico",
    "ok": {
        "status": "S",
        .........
                        
Uspešno plaćanje
200
{
    "jwtUsername": "Ips_Acceptico",
    "ok": {
        "status": "D",
        .........
                        
Placanje odbijeno
200
{
    "jwtUsername": "Ips_Acceptico",
    "ok": {
        "status": "T",
        .........
                        
Pokusaj naplate istekao
200
{
    "jwtUsername": "Ips_Acceptico",
    "error": {
        "message": "Losa stuktura odgovora od servisa.",
        "code": "1254896325741257"
        .........
                        
Error poruka

Servis isplate na tekuci racun

Putem ovog servisa možete izvršiti isplatu ranije deponovanog ili minusom obezbeđenog novca na bilo koji tekući račun u Srbiji.

URL Servisa:

POST /payments

x-www-form-urlencoded => token = {generated_token}

{token} - JWT token koji u sebi sadrži payload sa navedenim obaveznim/opcionim poljima.

Struktura JWT Tokena za Naplatu i Transfer

Polje Obavezno/
Opcionalno
Tip Opis
merchantUsername Required String Username koji dobijate od iPay-a za pristup i autentikaciju na API servise.
uniqueMerchantTransactionId Required String
Max 32 char.
Unikatni identifikator iz sistema trgovca.
customerId Required String
Max 100 char.
Identifikator korisnika usluge.
reference Required String
Max 100 char.
Meta podaci koji se upisuju i prosleđuju u transakciji.
amount Required Integer Ukupan iznos za isplatu izražen bez decimalnih mesta.
exponent Required Integer
1 digit
Ekponent parametra amount za računanje decimalnih mesta (primer: amount 1000 + exponent 2 = 10.00).
currencyCode Required Integer
3 digits
Trocifrena ISO 4217 šifra valute (primer: 941 za RSD).
paymentPurposeCode Optional Integer
3 digits
Šifra svrhe plaćanja.
paymentType Optional String
1 char.
Tip izvora sredstava (G - Gotovina, K - Kartica).
accountNumber Optional String
Max 18 char.
Broj računa po modelu 97.
paymentDescription Required String Svrha plaćanja prilikom isplate sredstava na račun.
beneficiaryName Required String Ime (naziv) klijenta na čiji račun se vrši isplata sredstava.
beneficiaryAddress Required String Adresa klijenta na čiji račun se vrši isplata sredstava.
beneficiaryPlace Required String Mesto klijenta na čiji račun se vrši isplata sredstava.
beneficiaryRefModel Optional Integer Model poziva na broj po kojem se validira broj naloga.
beneficiaryRefNumber Optional String
Max 20 char.
Poziv na broj po kojem se izvršava isplata.
exp Required Integer Vreme isteka tokena.

Primer poziva isplate na tekuci racun

Token:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJtZXJjaGFudFVzZXJuYW1lIjoiSXBzX0FjY2VwdGljbyIsInVuaXF1ZU1lcmNoYW50VHJhbnNhY3Rpb25JZCI6IlVOSVFVRTYyOGU4MzBiMWRmMTkiLCJjdXN0b21lcklkIjoiMTI1NDk2MjQ4NSIsInJlZmVyZW5jZSI6IlByb2l6dm9sam5hIHJlZmVyZW5jYSIsInBheW1lbnRQdXJwb3NlQ29kZSI6IjI4OSIsInBheW1lbnRUeXBlIjoiSyIsInBheW1lbnREZXNjcmlwdGlvbiI6ImRlc2NyaXB0aW9uIHRlc3QiLCJiZW5lZmljaWFyeU5hbWUiOiJiZW4gbmFtZSIsImJlbmVmaWNpYXJ5QWRkcmVzcyI6ImJlbiBhZGRyZXNzIiwiYmVuZWZpY2lhcnlQbGFjZSI6ImJlbiBwbGFjZSIsImJlbmVmaWNpYXJ5UmVmTW9kZWwiOiIiLCJiZW5lZmljaWFyeVJlZk51bWJlciI6InJlZiBudW0iLCJhbW91bnQiOiIzMDAwMDAiLCJleHBvbmVudCI6IjIiLCJjdXJyZW5jeUNvZGUiOiI5NDEiLCJhY2NvdW50TnVtYmVyIjoiMTExNjAwMDAwMDgwMzY0OTM3IiwiZXhwIjoxNjUzNTA4NjI5fQ.YIhMr2NdIjpSSGOTUz9Y5eTkabN4ogWfUn_n60Xbyd4

Primer Podataka Unutar Tokena Zahteva:

{
  "merchantUsername": "Ips_Acceptico",
  "uniqueMerchantTransactionId": "UNIQUE628e830b1df19",
  "customerId": "1254962485",
  "reference": "Proizvoljna referenca",
  "paymentPurposeCode": "221",
  "paymentType": "K",
  "paymentDescription": "description test",
  "beneficiaryName": "ben name",
  "beneficiaryAddress": "ben address",
  "beneficiaryPlace": "ben place",
  "beneficiaryRefModel": "",
  "beneficiaryRefNumber": "ref num",
  "amount": "300000",
  "exponent": "2",
  "currencyCode": "941",
  "accountNumber": "111600000080364937",
  "exp": 1653508629
}
                    

Primer Odgovora Servisa:

Primer Podataka Unutar Tokena Odgovora:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqd3RVc2VybmFtZSI6Iklwc19BY2NlcHRpY28iLCJvayI6eyJzdGF0dXMiOiJTIiwicGF5b3V0SWQiOiJwYXlvdXQuMjAyNDExMDQyMjEwMzUuNjcyOTM4NGJhMmRkYTMuMDI5NDM3NjEiLCJwcm9jZXNzb3JJZCI6IjUwMTgyMjE0NTA2NTc3NzgiLCJhbW91bnRUb1BheSI6IjMwMDAwMC4wMCIsImZlZSI6MCwiZGF0ZSI6IjIwMjItMDUtMjAiLCJtZXNzYWdlIjoiUGxhY2FuamUgdXNwZXNuby4ifSwiZXhwIjoxNjUzNTA4NjMwfQ.QQImUZ-a76AyFGCE40I-SdW-uAkknzKRxj7X7lx9wI0

Primer Podataka Unutar Tokena Odgovora:

{
  "jwtUsername": "Ips_Acceptico",
  "ok": {
    "status":"S",
    "payoutId": "payout.20241104221035.6729384ba2dda3.02943761",
    "processorId": "5018221450657778",
    "amountToPay": "300000.00",
    "fee": 0,
    "date": "2022-05-20",
    "message": "Placanje uspesno."
  },
  "exp": 1653508630
}
                    

Kod Odgovor Komentar
200
{
  "jwtUsername": "Ips_Acceptico",
  "ok": {
    "status":"S",
                        
Uspešna isplata na tekuci racun
200
{
  "jwtUsername": "Ips_Acceptico",
  "ok": {
    "status":"D",
        .........
                        
Isplata odbijena
200
{
    "jwtUsername": "Ips_Acceptico",
    "error": {
        "message": "Losa stuktura odgovora od servisa.",
        "code": "1254896325741257"
        .........
                        
Error poruka

Kontaktirajte nas da saznate više o tome kako Acceptico d.o.o. može unaprediti vaše poslovanje.