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

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

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

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

Вид транзакции

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

Видът транзакция трябва да се предава в параметъра 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:

    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
    {
        "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"
                }
            ]
         }
  3. Изпълнете заявка 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