Съхранени платежни данни и типове транзакции

В този раздел се описват поддържаните типове транзакции по съхранени платежни данни.

Типове съхранени платежни данни

Платежният шлюз позволява създаване и използване на следния тип съхранени платежни данни:

Тип транзакции

Транзакциите по съхранени платежни данни принадлежат към една от двете групи в зависимост от инициатора на транзакцията:

Типът транзакция трябва да се предава в параметъра tii (Transaction Intitiator Indicator, Идентификатор на инициатора на транзакцията) на платежните API-заявки. Възможните стойности на параметъра tii:

Стойност tii Описание Тип транзакция Инициатор на транзакцията Данни на картата за транзакцията Запазване на данните на картата след транзакцията Забележка
Празно Обичаен Купувач Въвежда се от купувача Не Транзакция на електронната търговия без запазване на съхранени платежни данни.
CI Иницииращ - Обичаен (CIT) Инициираща Купувач Въвежда се от купувача Да Транзакция на електронната търговия със запазване на съхранени платежни данни.
F Извънпланово плащане (CIT) Последваща Купувач Клиентът избира карта вместо ръчно въвеждане Не Транзакция на електронната търговия, използваща преди запазени обичайни съхранени платежни данни.
U Извънпланово плащане (MIT) Последваща Продавач Няма ръчно въвеждане, продавачът предава данните Не Транзакция на електронната търговия, използваща преди запазени обичайни съхранени платежни данни. Използва се само за едностъпкови плащания.
RI Иницииращ - Повтарящи се (CIT) Инициираща Купувач Въвежда се от купувача Да Транзакция на електронната търговия със запазване на съхранени платежни данни.
R Повтарящо се плащане (MIT) Последваща Продавач Няма ръчно въвеждане, продавачът предава данните Не Повтаряща се операция, използваща запазени съхранени платежни данни. Използва се само за едностъпкови плащания.

Първоначалната транзакция, която създава съхранени платежни данни, може да бъде изпълнена както в рамките на пряка интеграция, така и при интеграция чрез пренасочване. Типът интеграция влияе на това, какви изисквания ще се предявяват по отношение на съответствие с PCI DSS. За по-нататъшното плащане по съхранени платежни данни съответствие с PCI DSS вече не се изисква, тъй като данните на картата не се предават.

Управление на съхранените платежни данни чрез API

По-долу са приведени примери за създаване и използване на различни типове съхранени платежни данни чрез API с използване на собствена платежна страница на търговеца:

Обичайни съхранени платежни данни

Създаване на обичайни съхранени платежни данни

За да създадете обичайни съхранени платежни данни, изпълнете следните стъпки:

  1. Изпълнете заявка register.do с параметър clientId, получете в отговор orderId и formUrl.

    Пример за заявка register.do за създаване на обичайни съхранени платежни данни:

    curl --request POST \
      --url https://uat.dskbank.bg/payment/rest/register.do \
      --header 'content-type: application/x-www-form-urlencoded' \
      --data amount=123456 \
      --data userName=test_user \
      --data password=test_user_password \
      --data orderNumber=1234567890ABCDEF \
      --data returnUrl=https://mybestmerchantreturnurl.com \
      --data failUrl=https://mybestmerchantfailurl.com \
      --data email=test@test.com \
      --data clientId=259753456 \
      --data features=FORCE_CREATE_BINDING \
      --data language=en
    {
      "orderId": "01491d0b-c848-7dd6-a20d-e96900a7d8c0",
      "formUrl": "https://uat.dskbank.bg/payment/payment/merchants/ecom/payment_en.html?mdOrder=01491d0b-c848-7dd6-a20d-e96900a7d8c0"
    }
  2. Предайте получената стойност orderId в параметъра MDORDER на заявката paymentorder.do.

    Пример за заявка paymentorder.do:

    curl --request POST \
      --url https://uat.dskbank.bg/payment/rest/paymentorder.do \
      --header 'Content-Type: application/x-www-form-urlencoded' \
      --data '$CVC=123' \
      --data '$EXPIRY=203012' \
      --data '$PAN=4000001111111118' \
      --data 'TEXT=TEST CARDHOLDER' \
      --data MDORDER=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
      --data userName=test_user \
      --data password=test_user_password
    {
      "redirect": "https://uat.dskbank.bg/payment/merchants/pay/finish.html?orderId=59e00106-1f69-76a7-b893-b27c00b4f820&lang=en",
      "info": "Your order is proceeded, redirecting...",
      "errorCode": 0
    }

В резултат ще бъдат създадени съхранени платежни данни за клиента с първоначално указаното clientId. В резултат поръчката ще бъде платена с помощта на съхранените платежни данни с указаното bindingId.

Плащане с обичайни съхранени платежни данни

За плащане на поръчка със създадените обичайни съхранени платежни данни (вж. процеса на създаване по-горе) изпълнете следните стъпки: 1. Регистрирайте нова поръчка чрез заявка register.do със същия параметър clientId, получете в отговора orderId. 2. Получете списък със съхранени платежни данни чрез заявка getBindings.do със същата стойност clientId и с bindingType=C → получете в отговора bindingId.

Пример за заявка getBindings.do:

shell curl --request POST \ --url https://uat.dskbank.bg/payment/rest/getBindings.do \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data userName=test_user \ --data password=test_user_password \ --data clientId=259753456 \ --data bindingType=C

json { "errorCode":"0", "errorMessage":"Success", "bindings": [ { "bindingId": "b83317e0-1679-7d85-b375-a63200b4f820", "maskedPan": "411111**1111", "expiryDate": "203412", "paymentWay": "TOKEN_PAY", "paymentSystem": "CARD", "displayLabel": "XXXXXXXXXXXX1111", "bindingCategory": "COMMON" } ] }

  1. Изпълнете заявка paymentOrderBinding.do. Предайте стойността orderId (получена на Стъпка 1) в параметъра mdOrder, както и предайте получения bindingId. Достъпни стойности tii: F, U.

    Пример за заявка paymentOrderBinding.do:

    curl --request POST \
      --url https://uat.dskbank.bg/payment/rest/paymentOrderBinding.do \
      --header 'Content-Type: application/x-www-form-urlencoded' \
      --data mdOrder=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
      --data ip=127.0.0.1 \
      --data cvc=123 \
      --data bindingId=b83317e0-1679-7d85-b375-a63200b4f820 \
      --data userName=test_user \
      --data password=test_user_password \
      --data language=en \
      --data tii=F
    {
      "redirect": "https://uat.dskbank.bg/payment/merchants/pay/finish.html?orderId=24c3d392-4c60-7f0b-9ff5-b00100b4f820&lang=en",
      "info": "Your order is proceeded, redirecting...",
      "errorCode": 0
    }

В резултат поръчката ще бъде платена чрез съхранени платежни данни с посочения bindingId.

Повтарящи се съхранени платежни данни

Създаване на повтарящи се съхранени платежни данни

За да създадете повтарящи се съхранени платежни данни, изпълнете следните стъпки:

  1. Изпълнете заявка register.do с параметър clientId, получете в отговора orderId и formUrl

    Пример за заявка register.do:

    curl --request POST \
      --url https://uat.dskbank.bg/payment/rest/register.do \
      --header 'content-type: application/x-www-form-urlencoded' \
      --data amount=123456 \
      --data userName=test_user \
      --data password=test_user_password \
      --data orderNumber=1234567890ABCDEF \
      --data returnUrl=https://mybestmerchantreturnurl.com \
      --data failUrl=https://mybestmerchantfailurl.com \
      --data email=test@test.com \
      --data clientId=259753456 \
      --data features=FORCE_CREATE_BINDING \
      --data language=en \'
    {
      "orderId": "01491d0b-c848-7dd6-a20d-e96900a7d8c0",
      "formUrl": "https://uat.dskbank.bg/payment/payment/merchants/ecom/payment_en.html?mdOrder=01491d0b-c848-7dd6-a20d-e96900a7d8c0"
    }
  2. Предайте получената стойност orderId в параметъра MDORDER на заявката paymentorder.do. Необходимо е да предадете допълнителни параметри recurringFrequency и recurringExpiry (верификацията не се извършва, но тази информация се използва от банка, издал картата).

    Пример за заявка paymentorder.do:

    curl --request POST \
      --url https://uat.dskbank.bg/payment/rest/paymentorder.do \
      --header 'Content-Type: application/x-www-form-urlencoded' \
      --data '$CVC=123' \
      --data '$EXPIRY=203012' \
      --data '$PAN=4000001111111118' \
      --data 'TEXT=TEST CARDHOLDER' \
      --data MDORDER=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
      --data userName=test_user \
      --data password=test_user_password \
      --data language=en \
      --data 'jsonParams={"recurringFrequency": "1", "recurringExpiry":"20261231"}'
    {
      "errorCode": 0,
      "is3DSVer2": true,
      "threeDSServerTransId": "efa8e3ce-a4a6-49f8-b422-df781de18119",
      "threeDSMethodURLServer": "https://uat.dskbank.bg/payment/client/gather?threeDSServerTransID=efa8e3ce-a4a6-49f8-b422-df781de18119"
    }

В резултат ще бъдат създадени съхранени платежни данни за клиент с първоначално посочения clientId.

Плащане с повтарящи се съхранени платежни данни

За плащане на поръчка със създадените повтарящи се съхранени платежни данни (виж процеса на създаване по-горе) използвайте следната последователност от заявки:

  1. Получете списък със съхранени платежни данни, използвайки заявка getBindings.do със същия параметър clientId и с bindingType=R → получете в отговора bindingId.

    Пример за заявка getBindings.do:

    curl --request POST \
    --url https://uat.dskbank.bg/payment/rest/getBindings.do \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data userName=test_user \
    --data password=test_user_password \
    --data clientId=259753456 \
    --data bindingType=R
    {
    "errorCode":"0",
    "errorMessage":"Success",
    "bindings": [
        {
                "bindingId": "44779116-41a5-7798-b072-c0a30760e2b0",
                "maskedPan": "411111**1111",
                "expiryDate": "203412",
                "paymentWay": "TOKEN_PAY",
                "paymentSystem": "CARD",
                "displayLabel": "XXXXXXXXXXXX1111",
                "bindingCategory": "RECURRENT"
            }
        ]
     }
  2. Изпълнете заявка recurrentPayment.do с получения bindingId, за да регистрирате и платите поръчката.

    Пример за заявка recurrentPayment.do:

    curl --request POST \
      --url https://uat.dskbank.bg/payment/recurrentPayment.do \
      --header 'Content-Type: application/json' \
      --data '{
      "userName": "test_user",
      "password": "test_user_password",
      "orderNumber": "UAF-203974-DE-12
      "language": "EN",
      "bindingId": "44779116-41a5-7798-b072-c0a30760e2b0",
      "amount": 12300,
      "currency": "975",
      "description" : "Test description",
      "additionalParameters": {
        "firstParamName": "firstParamValue",
        "secondParamName": "secondParamValue"
      }
     }'
    {
      "success": true,
      "data": {
        "orderId": "9adaa8f0-3b5a-742f-80b4-172200b40dc0"
      },
      "orderStatus": {
        "errorCode": "0",
        "orderNumber": "9003",
        "orderStatus": 2,
        "actionCode": 0,
        "actionCodeDescription": "",
        "amount": 12300,
        "currency": "975",
        "date": 1618338779501,
        "orderDescription": "Test description",
        "merchantOrderParams": [
          {
            "name": "firstParamName",
            "value": "firstParamValue"
          },
          {
            "name": "secondParamName",
            "value": "secondParamValue"
          }
        ],
        "transactionAttributes": [],
        "attributes": [
          {
            "name": "mdOrder",
            "value": "9adaa8f0-3b5a-742f-80b4-172200b40dc0"
          }
        ],
        "cardAuthInfo": {
          "maskedPan": "400000**1118",
          "expiration": "202612",
          "cardholderName": "TEST CARDHOLDER",
          "approvalCode": "123456",
          "paymentSystem": "VISA",
          "product": "visa-product",
          "secureAuthInfo": {
            "eci": 7
          },
          "pan": "400000**1118"
        },
        "bindingInfo": {
          "clientId": "test-client",
          "bindingId": "3080a436-02a0-75c2-a2ce-41be00b40dc0"
        },
        "authDateTime": 1618338779790,
        "authRefNum": "111111111111",
        "paymentAmountInfo": {
          "paymentState": "DEPOSITED",
          "approvedAmount": 12300,
          "depositedAmount": 12300,
          "refundedAmount": 0,
          "totalAmount": 12300
        },
        "bankInfo": {
          "bankName": "ES TEST BANK",
          "bankCountryCode": "ES",
          "bankCountryName": "Spain"
        },
        "chargeback": false,
        "operations": [
          {
            "amount": 12300,
            "cardHolder": "TEST CARDHOLDER",
            "authCode": "123456"
          }
        ]
      }
    }

    В резултат поръчката ще бъде платена чрез съхранени платежни данни с посочения bindingId.

:
eCommerce API V1