Преки плащания

Общо описание

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

Използване на seToken

Ако събирате данните от картата от своя страна и не искате те да присъстват на вашия сървър, следва да използвате seToken (Self Encrypted Token) — самоподписан токен, използван за безопасно предаване на данните от картата. Ако използвате seToken, съответствие с PCI DSS също се изисква според нивото на вашата транзакционна активност. Като минимум е необходимо да попълните анкетата за самооценка SAQ A (прочетете повече за PCI DSS тук).

Обърнете внимание, че seToken може да бъде генериран с помощта на SDK.

Натиснете тук, за да получите допълнителна информация за seToken.

Ако нямате достъп до Контролния панел, създайте своя акаунт.

Схема на интеграция

Пряка интеграция

  1. Клиентът избира продукт в интернет магазина и натиска бутона Купи.

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

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

  4. Сървърът на интернет магазина събира данните от картата.

  5. Сървърът на интернет магазина заявява регистрация на поръчката, изпращайки извикване 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.

    Научете повече за токенизираните плащания тук.

  6. Ако се изисква 3-D Secure (параметърът acsUrl се връща на Стъпка 5), платежният шлюз се свързва с Directory Server, за да получи достъп до ACS. Той връща всички данни, необходими за пренасочване от ACS към интернет магазина.

    Ако 3-D Secure не се използва, Стъпки 7–9 се пропускат, а клиентът се пренасочва към страницата за потвърждение на плащането (Стъпка 10). Параметърът redirect в този случай се игнорира, тъй като интернет магазинът използва собствена страница за потвърждение на плащането.

  7. Серверът на интернет магазина заявява опростено пренасочване на купувача към ACS, изпращайки извикване на API acsRedirect.do към платежния шлюз. В заявката се използва параметърът orderId (получен на Стъпка 5).

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

    https://uat.dskbank.bg/payment/acsRedirect.do?orderId=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0

    Също така е възможно пренасочване на клиента към ACS с помощта на POST-заявка (обикновен редирект). Описанието на този начин е достъпно тук.

  8. Платежният шлюз пренасочва клиента към ACS.

  9. Притежателят на картата потвърждава поръчката и ACS го пренасочва към платежния шлюз.

  10. Купувачът се връща на страницата на интернет магазина (на адреса, посочен при оформянето на поръчката на Стъпка 5) или затваря страницата.

    Пример за URL-редирект:

    https://mybestmerchantreturnurl.com/?orderId=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0&lang=en

  11. Платежният шлюз асинхронно изпраща известие за обратно извикване към сървъра на интернет магазина (ако тази възможност е включена).

  12. (По избор) Интернет магазинът изпраща заявка getOrderStatusExtended.do към платежната шлюз, за да провери статуса на поръчката и да се увери, че поръчката действително е платена. Заявката съдържа параметър orderId, получен на Стъпка 5. В отговор платежната шлюз връща статуса на поръчката в параметър orderStatus. Статус 2 означава успешно плащане, статус 1 означава успешна предварителна оторизация за двуетапни плащания (в този случай се извършва задържане на средства). Допълнително се връща параметър actionCode - той съдържа кода на отговора на банковия процесинг. Вж. списъка с кодове на отговори тук.

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

:
eCommerce API V1