Директни плащания
Обща информация
При директно плащане онлайн магазинът разполага със собствена платежна страница за събиране на данни за картата директно чрез своя уебсайт.
Използване на seToken
Ако събирате данни за карта от ваша страна и не искате те да присъстват на вашия сървър, трябва да използвате seToken (Self Encrypted Token) — самоподписан токен, използван за сигурно предаване на данни за карта. Ако използвате seToken, съответствие с PCI DSS също се изисква според нивото на вашата транзакционна активност. Като минимум е необходимо да попълните въпросник за самооценка SAQ A (прочетете повече за PCI DSS тук).
Обърнете внимание, че seToken може да бъде генериран чрез SDK.
Кликнете тук, за да получите допълнителна информация за seToken.
Схема на интеграция
- Клиентът избира продукт в онлайн магазина и натиска бутона Купи.
- Сървърът на онлайн магазина получава заявка за покупка и отваря платежна страница.
- Купувачът въвежда данните на своята карта на платежната страница на онлайн магазина.
- Сървърът на онлайн магазина събира данните за картата.
-
Сървърът на онлайн магазина заявява регистрация на поръчка, изпращайки API повикване register.do. Тази заявка трябва да съдържа параметър
amount– сума на плащането в минимални единици валута и параметърreturnUrl– адрес, към който ще бъде пренасочен клиентът след успешно плащане на Стъпка 9 (допълнителна информация за пренасочването е достъпна тук). В отговор платежният шлюз изпращаorderId- уникален номер на поръчка в системата на платежния шлюз.Пример за заявка за регистрация на поръчка:
curl --request POST \ --url https://uat.dskbank.bg/payment/rest/register.do \ --header 'content-type: application/x-www-form-urlencoded' \ --data amount=2000 \ --data currency=975 \ --data userName=test_user \ --data password=test_user_password \ --data returnUrl=finish.html \ --data description=my_first_order \ --data language=enПример за отговор на регистрация на поръчка:
{ "orderId": "0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0", "formUrl": "https://uat.dskbank.bg/payment/merchants/pay/payment_en.html?mdOrder=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0" }
Също така можете да задържите сумата по сметката до списване на средствата чрез повикване registerPreAuth.do. За да научите повече за задържането и приключването, кликнете тук.
Плащане. След това онлайн магазинът предава данните за картата за плащане на поръчката, изпращайки API повикване чрез paymentorder.do към платежния шлюз. Тази заявка съдържа параметър MDORDER — уникален номер на поръчка в системата на платежния шлюз, връщан в отговора на register.do.
Пример за заявка за плащане на поръчка:
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=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0 \
--data '$PAN=4000001111111118' \
--data '$CVC=123' \
--data YYYY=2030 \
--data MM=12 \
--data 'TEXT=TEST CARDHOLDER' \
--data 'ip=x.x.x.x' \
--data language=enПример за отговор на заявка за плащане на поръчка:
{
"info": "Your order is proceeded, redirecting...",
"errorCode": 0,
"acsUrl": "https://web.payuat.com/acs/auth/start.do",
"paReq": "eJxVUtFu4jAQ/BWU92DHcSCpFle946ryAEd7FKl9OZl4gbSNA05ypP36s0NSWsmSd8br3fGO4brJ3wb/0JRZoSdeMKTeAHVaqEzvJt7j6taPvWsBq71BnP7BtDYoYI5lKXc4yNTEG48kj5KN8jfxOPH5NqZ+kiTURxYlSEMaxtvUE7C8ecCjgK6RsH2GDEgPbUWT7qWuBMj0+GO2EJyNR5QC6SDkaGZTEfGQhRzIGYGWOYpSarUpmr95VwJIS0Na1Loy72LEQyA9gNq8iX1VHa4IqbCshmmRA3EkkIuGZe2i0hZpMiUWH/en39NZs3j5xearHZ+vnk6LD7tPnyZAXAYoWaFglAWUB8mAjq/simIgLQ8yd93tefugM4CD63Hz9eQrA3bQxvrQy+8RYHMoNLo7QD5jeHDGCNgaPNZtXgTkAgC1OmdYiZwGNLB3ewpIv19e/fPO+ZBWdsYvxamWr6rcnNaqWMuQrbF+zqLlXbQ7OHfaJKcqs9NlPDjLcgCIK0M640n3Z2z07S/9Bypv08k=",
"termUrl": "https://uat.dskbank.bg/payment/rest/finish3ds.do?lang=en"
}Освен това можете да използвате API методи за директни плащания чрез Apple Pay или Google Pay.
Научете повече за токенизирани плащания тук.
-
Ако се изисква 3-D Secure (параметър
acsUrlсе връща на Стъпка 5), платежният шлюз се свързва с Directory Server, за да получи достъп до ACS. Той връща всички данни, необходими за пренасочване от ACS към онлайн магазина.Ако 3-D Secure не се използва, Стъпки 7–9 се пропускат, а клиентът се пренасочва към страница за потвърждение на плащането (Стъпка 10). Параметър
redirectв този случай се игнорира, тъй като онлайн магазинът използва собствена страница за потвърждение на плащането.
-
Сървърът на онлайн магазина заявява опростено пренасочване на купувача към ACS, изпращайки API повикване acsRedirect.do към платежния шлюз. В заявката се използва параметър
orderId(получен на Стъпка 5).Пример за заявка:
https://uat.dskbank.bg/payment/acsRedirect.do?orderId=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0
Също така е възможно пренасочване на клиента към ACS чрез POST заявка (обикновено пренасочване). Описание на този начин е достъпно тук.
- Платежният шлюз пренасочва клиента към ACS.
- Притежателят на картата потвърждава поръчката и ACS го пренасочва към платежния шлюз.
-
Купувачът се връща на страницата на онлайн магазина (на адреса, посочен при оформяне на поръчката на Стъпка 5) или затваря страницата.
Пример за URL за пренасочване:
https://mybestmerchantreturnurl.com/?orderId=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0&lang=en
- Платежният шлюз асинхронно изпраща известие за обратно повикване към сървъра на онлайн магазина (ако тази възможност е активирана).
-
(Незадължително) Онлайн магазинът изпраща заявка getOrderStatusExtended.do към платежния шлюз, за да провери статуса на поръчката и да се увери, че поръчката действително е платена. Заявката съдържа параметър
orderId, получен на Стъпка 5. В отговор платежният шлюз връща статуса на поръчката в параметърorderStatus. Статус2означава успешно плащане, статус1означава успешна предварителна авторизация за двустъпкови плащания (в този случай се извършва задържане на средства). Допълнително се връща параметърactionCode- той съдържа код на отговор от процесинга на банката. Вижте списък с кодове на отговори тук.Допълнителна информация вижте в раздел Получаване на статус на поръчка.