Преки плащания
Общо описание
При плащане направо интернет магазинът има собствена платежна страница за събиране на данните от картата директно чрез своя уебсайт.
Използване на 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- той съдържа кода на отговора на банковия процесинг. Вж. списъка с кодове на отговори тук.Допълнителни сведения вж. в раздела Получаване на статуса на поръчката.