Директни плащания

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

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

Използване на 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 към платежния шлюз, за да провери статуса на поръчката и да се увери, che поръчката наистина е платена. Заявката съдържа параметър orderId, получен на Стъпка 5. В отговор платежният шлюз връща статуса на поръчката в параметър orderStatus. Статус 2 означава успешен платеж, статус 1 означава успешна предварителна авторизация за двуетапни плащания (в този случай се извършва задържане на средства). Допълнително се връща параметър actionCode - той съдържа код на отговор от процесинга на банката. Вж. списък на кодовете за отговор тук.

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

:
eCommerce API V1