След плащането

След извършване на плащането можете да го управлявате в личния кабинет на портала на продавача или чрез API. Прочетете разделите по-долу, за да научите повече.

Отказ и връщане на плащане

Ако искате да отмените плащане, можете да изпълните една от двете операции, в зависимост от статуса на поръчката: отказ или връщане. Тези операции са описани по-долу.

Отказ

Отказът означава, че транзакцията се отменя и всички средства, резервирани по сметката на клиента, се отблокират. Тази операция може да се прилага към двуетапни транзакции, когато средствата са резервирани, но още не са получени (статус Потвърден). След отказа транзакцията получава статус Отменен.

Достъпни са следните начини за отказ:

Отказът може да бъде извършен само до края на текущия банков ден.

Връщане на средства

Връщането означава връщане на клиента на вече списаните средства. Тази операция може да се прилага към едностадийни и двустадийни транзакции, когато средствата вече са списани (статус Завършен). Системата позволява връщането на средства повече от един път, но общо не повече от първоначалната сума на завършването.

Възможни са следните начини за оформяне на връщане:

Както отменянето, така и възстановяването на средства могат да бъдат назначени от тригери на callback-уведомления. Повече четете тук.

Получаване на статуса на поръчката

Можете да проверите статуса на поръчката по всяко време. Например, можете да го проверите след плащането, за да се убедите, че поръчката наистина е платена. Статусът на поръчката е достъпен на портала на продавача, а също така може да бъде получен чрез API.

Изясняване на статуса на поръчката на портала на продавача

Статусът на поръчката може да се види на страницата Сведения за транзакцията на съответната транзакция.

Статус Deposited означава успешно плащане.

Изясняване на статуса на поръчката чрез API

За получаване на статуса на поръчката интернет магазинът изпраща към платежния шлюз заявка getOrderStatusExtended.do. Заявката съдържа или orderId (уникален номер на поръчката в платежния шлюз), или orderNumber (уникален номер на поръчката в системата на интернет магазина). Ако в заявката се предават и двата параметъра, приоритетът на orderId е по-висок.

Платежният шлюз връща статуса на поръчката в параметъра orderStatus. Статус 2 означава успешно плащане.

Допълнителни възможности

Двуетапни плащания

Видове плащания

В зависимост от спецификата на бизнеса компанията може да използва два вида плащания:

Сумата за завършване може да бъде по-малка от сумата за задържане. Също така има възможност да се правят завършвания на сума, надвишаваща размера на задържането (в рамките на настройваемите лимити). Ако искате да използвате тази функционалност, свържете се с нашата служба за поддръжка.

Двуетапните плащания следва да се използват, ако между приемането от купувача на решението за плащане и доставката на избраната стока или услуга минава известно време.

За да бъде плащането двуетапно, поръчката трябва да бъде регистрирана чрез заявка registerPreAuth.do, а не register.do.

Двуетапното плащане е възможно при всеки начин на интеграция:

За вариантите на пряка интеграция, интеграция чрез пренасочване, CMS, SDK е възможна регистрация и оформяне на поръчка чрез API.

Завършвания

Завършването се случва на втория етап от двуетапното плащане, когато предварително резервираните средства се списват от сметката на притежателя на картата. Веднага след като се случи списването, поръчката става завършена и преминава в статус DEPOSITED. Сумата за завършване може да бъде по-голяма или по-малка от сумата на предварителната авторизация. Също така е достъпно поетапно частично завършване. Ако не предадете сума, ще бъде списана цялата сума.

Има три начина да се направи завършване:

Също така има възможност да се направи частично завършване. В този случай поръчката ще бъде завършена на по-малка сума (от сумата на авторизацията).

Завършване и отменяне на поръчки автоматично

Ако нашата служба за поддръжка е включила тази функция за вас, можете да конфигурирате вашата интеграция така, че всички предварително упълномощени (в статус Потвърден) двустепенни поръчки да се завършват или отменят автоматично след изтичането на определен период от време. В този случай не е необходимо да обработвате всяка поръчка ръчно в личния кабинет. Също така няма необходимост от извикване на API-методите deposit.do и/или reverse.do.

За да включите автозавършването на поръчки в личния кабинет:

  1. Влезте в личния кабинет.
  2. В панела за управление отляво отидете в раздел Настройки. .
  3. Отидете в раздел Общи.
  4. В раздел Автозавършване, отбележете Автозавършване включено.
  5. В полето Срок за завършване (в часове) въведете броя часове след регистрацията, след които двустепенната поръчка трябва да бъде завършена автоматично.

Autocompletion

Можете също така да включите автоотмяна на поръчки. При това всички предупълномощени (в статус Потвърден) двустепенни поръчки ще се отменят автоматично след изтичането на зададения период от време. Отмяната означава, че транзакцията се отменя и всички средства, резервирани в сметката на клиента, се отблокират.

Можете да зададете дата и час за автозавършване и автоотмяна чрез API с помощта на параметрите autocompletionDate и autoReverseDate в API-заявките registerPreAuth.do и instantPayment.do. Използван часови пояс: UTC+0.

По-долу се предоставя описание на логиката на работа на автозавършването и автоотмяната.

Когато поръчка е регистрирана и за нея е зададено автозавършване:

Когато поръчка е регистрирана и за нея е зададена автоотмяна:

Операции по връзки

Транзакцията по връзка се използва, когато притежателят на карта разрешава на продавача да съхранява платежните данни за бъдещи плащания. Например, платецът може да избере запазване на своята карта при оформяне на поръчка. В този случай се създава връзка (CoF, credential on file), уникален защитен токен, генериран от платежния шлюз, който свързва номера на картата на платеца (PAN) с неговия идентификатор в системата на магазина (например, с логина на платеца).

Подробности за типовете връзки, поддържани от платежния шлюз, четете тук.

Създаване на връзка

Можете да създадете връзка чрез API или чрез личния кабинет (независимо от типа интеграция). Подробности вж. по-долу.

Създаване на връзка чрез API

За да запазите карта (създадете връзка) в платежния шлюз чрез API, трябва да предадете параметър clientId в заявката за регистрация на поръчка или инициация на плащане. clientId - това е идентификаторът на вашия клиент (притежател на карта), към този номер ще бъдат свързани всички карти на клиента. За целите на тестването можете да използвате всеки номер като clientId. Този параметър може да се предава в следните заявки:

Връзката ще бъде създадена само след успешно плащане. След плащането ще можете да получите идентификатора на връзката чрез заявка getOrderStatusExtended.do в параметъра bindingId.

Създаване на връзка чрез личния кабинет

За създаване на връзка при плащане чрез потребителския интерфейс отидете в личния кабинет, издайте сметка на електронна поща с указване на параметъра Идентификатор на клиента. Ако укажете този параметър, клиентът ще види отметка Запази моята карта на страницата за плащане. Ако клиентът постави тази отметка, след завършване на плащането ще бъде създадена връзка, и клиентът няма да трябва да въвежда данните на картата следващия път. Подробности четете тук.

Създаване на връзка без плащане

При наличие на съответните права на потребителя, можете да създадете връзка чрез API без провеждане на плащане. Това може да се направи по следните начини:

Принудително създаване на връзка

Ако предадете стойността FORCE_CREATE_BINDING в блока features на заявката за плащане, връзката ще бъде създадена принудително, дори ако клиентът реши да не запазва данните на картата на страницата за плащане.

Стойността FORCE_CREATE_BINDING не може да се предаде в заявка със съществуващ bindingId или при bindingNotNeeded = true (ще предизвика грешка при проверката). За предаване на тази стойност също е необходимо да се предаде параметъра clientId.

Ако в блока features са предадени и двете стойности FORCE_CREATE_BINDING и VERIFY, то поръчката ще бъде създадена САМО за създаване на връзка (без плащане).

Извършване на плащане по връзка

Работа с връзки чрез API

След създаване на връзката можете да работите с нея чрез API (при наличие на разрешение на ниво търговец). Достъпни са следните методи:

Използване на връзки в рекурентни плащания

Можете да използвате връзки за рекурентни плащания. В този случай параметърът bindingId се използва в обичайната заявка за регистрация на поръчка. Подробности четете тук.

Използване на връзки при плащане с портфейли

Можете също да създавате връзки при плащания чрез портфейлите Apple Pay и Google Pay. За това е необходимо да предадете параметъра clientId в заявката за плащане или в заявката за оформяне на поръчка (вж. описанието на API-заявките за портфейли).

В този случай връзката ще свърже номера на токенизираната карта на плащащия (DPAN) с неговия ID в системата на магазина (например с логина на плащащия). Такава връзка не може да се използва за показване на номера на картата на страницата за плащане (тъй като номерът на картата е токенизиран). Обаче тази връзка може да се използва в рекурентни плащания.

Industry Practice операции

Въведение

Към MIT (Merchant-initiated Transaction) Industry Practice транзакциите, извършвани след инициираща CIT (Cardholder-initiated Transaction) транзакция, се отнасят транзакции от следния вид:

Настоящият функционал е достъпен при наличие на съответното разрешение. За активирането му се обърнете към службата за техническа поддръжка.

Условия за възможност за извършване на Industry Practice плащания:

  1. Разрешението за провеждане на Industry Practice плащания е активирано.
  2. Първоначалното плащане е било извършено с използване на 3DS 2.0/2.1/2.2 автентикация с тип frictionless/challenge за Resubmission, Reauthorization транзакции и challenge за Incremental, Delayed charges, No show.
  3. Първоначалното плащане представлява едностадийна поръчка в грешни статуси за Resubmission, Reauthorization транзакции, както и в статус Завършен за Incremental, Delayed charges, No show операции.
  4. Първоначална поръчка с токенизирано *.Pays плащане.
  5. Първоначална CIT транзакция с tii = CI, RI, II, F (подробно за типовете CIT транзакции е описано тук).
  6. При Търговеца функционалът за връзки е деактивиран или се използват връзки V2 (използват се такива връзки, като обикновени, рекурентни и разсрочване).

Извършването на Industry Practice плащания е невъзможно за следните типове първоначални операции с:

API-заявка

За плащане на поръчка с признаци на Industry Practice транзакция се използва заявка /industryPractice/paymentOrder.do.

Особености при извършване на плащане

За всеки от видовете Industry Practice плащане са присъщи свои условия за успешно извършване.

Industry Practice Incremental

Industry Practice Resubmission

Industry Practice Delayed Charges

Industry Practice Reauthorization

Industry Practice No Show

Изпълнение на отмени и възстановявания

За Industry Practice операция с тип Incremental:

Изпълнението на отмени и връщания по Industry Practice операции с тип, различен от Incremental, не имат никакви отлики от действащата функционална реализация - изпълняват се отделно в рамките на обособените поръчки.

Верификация на притежателя на карта

Притежателят на карта може да бъде верифициран без таксуване на каквото и да е плащане. За това предайте стойността VERIFY в блока features на всяка заявка за плащане.

Когато се използва функцията VERIFY, платежната карта ще бъде проверена, за да се убедим, че се използва от нейния законен притежател. Ако за картата е достъпен 3-D Secure, то ще бъде извършена верификация 3-D Secure. При това параметърът amount на верифициращата заявка може да бъде равен само на 0. Дори ако някаква сума на плащане бъде предадена в заявката, тя няма да бъде дебитирана от сметката на клиента. След успешна регистрация поръчката веднага се прехвърля в статус REVERSED (отменена).

Ако функцията VERIFY се предава заедно с параметъра clientId, тя може да се използва за създаване на връзка без плащане. Подробно четете в раздела Връзки.

Open ID токен

Можете да генерирате Open ID токен. Този токен може да се използва вместо удостоверяващи данни за идентификация на продавача в платежния шлюз.

Open ID токен не е частен, може да се публикува или вгради в уеб страница. Например, може да се използва, когато поръчката се оформя директно от браузъра. В този случай отсъства риск от разкриване на лични данни, тъй като токенът може да се разшифрова само от платежния шлюз.

Можете да използвате Open ID токен за удостоверяване на продавача при изпращане на API заявки към платежния шлюз. За това предайте Open ID токен в параметъра token вместо предаване на userName и password. Можете да използвате параметъра token в следните заявки:

За да генерирате Open ID токен, отидете в личния кабинет, изберете Настройки в страничното меню, а след това изберете Общи настройки в блока Продавач. Натиснете Генерирай до полето Публичен ключ. Ако вече знаете вашия токен, можете да го въведете ръчно.

Подробно четете тук.

Пренасочване към ACS

Ако се изисква 3-D Secure, то след получаване на отговор на заявката за плащане, клиентът трябва да бъде пренасочен към ACS. Съществуват два начина за пренасочване: обичайно и опростено.

Обичайно пренасочване

Ако плащането се извършва с помощта на 3-D Secure, търговците трябва да пренасочват своите клиенти в ACS по адреса, посочен в параметъра acsUrl, получен в отговора на заявката за плащане. Тялото на заявката трябва да включва MD=mdorder&PaReq=paReq&TermUrl=termUrl, където:

Това трябва да бъде POST заявка (не GET).

В зависимост от конфигурацията, съгласувана с банката, купувачът след удостоверяване в ACS ще бъде пренасочен или в магазина, или към платежния шлюз.

Пример за POST-заявка за обичайно пренасочване:

<html>
<head><title>ACS Redirect</title></head>
<body onload="document.forms['acs'].submit()">
ACS Redirect
<form id="acs" method="post" action="[result.acsUrl]">
    <input type="hidden" id="MD" name="MD" value="[MD]"/>
    <input type="hidden" id="PaReq" name="PaReq" value="[result.PaReq]"/>
    <input type="hidden" id="TermUrl" name="TermUrl" value="[result.TermUrl]"/>
</form>
</body>
</html>

Опростено пренасочване

Също така Интернет-магазинът може да използва метода на шлюза acsRedirect.do, който ще изпълни същото пренасочване на притежателя на картата към ACS на емитента.

Плащане с помощта на собствен MPI/3DS Server

Merchant Plugin Interface (MPI)/3DS Server — това е компонент от технологията 3D Secure, който може да бъде реализиран в платежната шлюза или от ваша страна. Ако имате собствен MPI/3DS Server, можете да го използвате за самостоятелна авторизация на 3D Secure, а в API-заявките само да указвате факта за провеждане на такава авторизация. За да включите тази функционалност, обърнете се към службата за техническа поддръжка.

Ако използвате собствен MPI/3DS Server, то в платежните заявки (например, paymentOrder, paymentOrderBinding.do , или instantPayment.do) предавайте допълнителни параметри в блока jsonParams: eci, cavv, xid, threeDSProtocolVersion и threeDsType. Тези параметри са описани по-долу.

eci

eci — индикатор на електронната търговия (ECI), получен от вашия сървър за 3-D Secure. Показва нивото на сигурност, използвано при плащането. Задава се от DS-сървъра според получените резултати от автентификацията и в съответствие с особеностите на процеса на проверка на магазина. Параметърът се предава в блока jsonParams в двуцифрен формат, например, "eci": "02".

Кодовете ECI могат да се различават в зависимост от платежната система. По-долу се дава разшифровка на най-често използваните ECI-кодове:

Стойност VISA Mastercard CUP
01 Опит за автентификация
02 Автентификация, пълен 3DS Автентификация, пълен 3DS
05 Автентификация, пълен 3DS
06 Опит за автентификация
07 Автентификация по SSL (без 3DS) Автентификация по SSL (без 3DS)
09 Опит за автентификация
10 Автентификация по SSL (без 3DS)

cavv, xid

Ако стойността на ECI се различава от тези, които се използват за SSL-авторизация, също така е необходимо да предадете следните параметри:

threeDSProtocolVersion

Освен това, можете да предадете в платежната заявка параметъра threeDSProtocolVersion (версия на протокола 3DS). Той може да приема следните стойности:

Ако в заявката не се предава threeDSProtocolVersion, то по подразбиране неговата стойност се приема равна на 2.1.0 - за 3DS 2.

threeDsType

Параметърът threeDsType (тип автентификация на плащането) е необходим за плащане чрез вашия MPI/3DS Server с 3DS 2.

За плащания със SSL този параметър е незадължителен и се определя автоматично в зависимост от стойността на ECI.

Стойност Описание Задължително/Определя се автоматично
0 SSL-автентификация ECI = 07
3 Строга автентификация на клиентите (SCA) Изисква се за 3DS 2
4 Автентификация на базата на риск (RBA) Изисква се за 3DS 2
5 Опит за автентификация 3DS 2 Изисква се за 3DS 2
6 Разрешено е изключение 3DS 2 Изисква се за 3DS 2
7 3RI автентификация с 3DS 2 Изисква се за 3RI
8 Опит за 3RI автентификация с 3DS 2 Изисква се за 3RI

Пример заявка

curl --request POST \\
  --url https://uat.dskbank.bg/payment/rest/paymentorder.do \\
  --header 'content-type: application/x-www-form-urlencoded' \\
  --data userName=test_user \\
  --data password=test_user_password \\
  --data MDORDER=0140dda0-71ed-7706-a61f-36bd00a7d8c0 \\
  --data '$PAN=4000001111111118' \\
  --data '$CVC=123' \\
  --data YYYY=2030 \\
  --data MM=12 \\
  --data 'TEXT=TEST CARDHOLDER' \\
  --data language=en \\
  --data 'jsonParams={
  "eci": "02",
  "cavv": "AkZO5XQAA0rhBxoaufa+MAABAAA=",
  "xid": "5010857f-8d3f-74e1-9c5a-54a000cc4110",
  "threeDSProtocolVersion": "2.2.0",
  "threeDsType": "5"
}'

Ако използвате собствен MPI/3DS Server, отговорът на съответната API-заявка за плащане не съдържа параметри, свързани с 3D Secure, като redirect, termUrl, acsUrl и paReq.

Пример отговор

{
  "redirect": "https://uat.dskbank.bg/payment/merchants/temp/finish.html?orderId=01493844-d4d3-703f-9f7e-a73900a7d8c0&lang=en",
  "info": "Your order is proceeded, redirecting...",
  "errorCode": 0
}

Управление на периодични задължения

Платежният gateway позволява настройването на задачи за периодични задължения. Настроените задължения в последствие автоматично се изпълняват в съответствие с зададеното разписание.

Ако тази възможност е включена за вас от нашата група за поддръжка, можете да правите следното:

Можете да управлявате периодични задължения с помощта на API. Подробнее вж. раздел API на периодични задължения.

3-D Secure оторизация

Какво е 3-D Secure

3-D Secure (наричан също 3DS) - технически стандарт, създаден от Visa и MasterCard, който позволява извършването на допълнителна оторизация на притежателя на картата от страна на банката-емитент. За завършване на транзакцията на притежателя на картата се предлага да потвърди самоличността си чрез въвеждане на уникална парола, SMS код или временен PIN код.

Терминът 3DS означава 3 Domain Server. Това название се обяснява с факта, че във всяка 3-D Secure транзакция участват три страни:

  1. Домейн на ъкуайъра. Изпълнява ролята на 3DS requestor – инициатор на процеса на оторизация.
  2. Домейн на емитента. Включва в себе си ACS (Access Control Server), който осигурява потвърждение на самоличността на платеца от банката-емитент.
  3. Домейн на взаимодействието. Изпълнява ролята на свързващо звено между първите два домейна. Обикновено това е платежната система.

Версии на протокола

Платежният шлюз поддържа 3-D Secure оторизация, за да ви защити вас и вашите клиенти от заплахата от платежни измами.

За транзакции в браузъра ние използваме 3-D Secure v2 (наричан също 3DS2) - обновената версия на протокола 3-D Secure, която осигурява по-добро взаимодействие между трите участника в транзакцията. Протоколът за проверка на автентичността 3DSv2 в зависимост от настройките на ACS на банkata-емитент позволява извършване на проверка на автентичността без участието на клиента (схема Frictionless). В този случай от клиента няма да се изисква да извършва действия за автентикация, като въвеждане на еднократна парола или други действия.

Сценарии за интеграция

Ако платежната страница се намира от страна на платежния шлюз, търговецът не се изисква да извършва каквито и да било допълнителни действия и може да използва стандартния API на платежния шлюз.

Ако платежната страница е разположена от страна на търговеца, при използване на автентикация на клиента по протокола 3DSv2 за всяка транзакция търговецът трябва да изпрати редица допълнителни API заявки към платежния шлюз.

Схемите за интеграция са описани тук.

3RI оторизация

3RI – това е тип оторизация 3DS 2, която се инициира от продавача без заявка за потвърждение на плащането от притежателя на картата. Фактически, 3RI плащането - това е MIT плащане с tii=R или tii=I, т.е. рекурентно плащане или плащане на вноски (вж. Връзки и типове транзакции) с 3DS 2 frictionless оторизация.

3RI рекурентно плащане или плащане на вноски е възможно само в случай, когато инициращата транзакция, при която се запазва връзката, е била изпълнена с оторизация 3DS 2.

Ако се изпълнява някое от условията:

то е необходимо в блока jsonParams да се изпратят следните допълнителни параметри:

Задължителност Наименование Тип Описание
Задължително initThreeDSReqPriorAuthData String Идентификатор на инициираща транзакция в DS (dsTransId). Пример: "d5bf7963-e94e-718d-8777-2943091ceaa0".
Задължително initThreeDSReqPriorAuthMethod String Механизъм за автентификация, който е бил използван в процеса на инициираща транзакция. Пример: "01".
Задължително initThreeDSReqPriorAuthTimestamp String Дата и час на автентификация в UTC на инициираща транзакция. Пример: "22202405140811".
Задължително initThreeDSReqPriorRef String Допълнителна информация за ACS (acsTransId). Пример: "d5bf7963-e94e-718d-8777-2943091ceaa0".
Условие installments String Максимален брой разрешени оторизации за плащания на вноски. Изисква се за плащане на вноски 3RI.
Условие totalInstallmentAmount String Максимална сума на всички плащания на вноски. Изисква се за плащане на вноски 3RI.
Задължително recurringExpiry String Дата, след която оторизациите не са разрешени, във формат ГГГГММДД. Изисква се за плащане на вноски или рекурентно плащане 3RI.
Задължително recurringFrequency String Минимален брой дни между оторизациите. Изисква се за плащане на вноски или рекурентно плащане 3RI.
:
eCommerce API V1