Съхранени платежни данни и видове транзакции
В този раздел се описват поддържаните видове транзакции по съхранени платежни данни.
Видове съхранени платежни данни
Платежният шлюз позволява създаване и използване на следния вид съхранени платежни данни:
Обичайни – за плащания, които не са свързани с никакъв план или график. Например, когато купувачът прави нова поръчка и я заплаща, използвайки предварително съхранени данни на карта.
Рекурентни – за плащания, които се извършват по фиксиран график. Например, месечни плащания за комунални услуги.
Вид транзакции
Транзакциите по съхранени платежни данни принадлежат към една от двете групи в зависимост от инициатора на транзакцията:
-
CIT (cardholder-initiated transactions) – транзакции на електронна търговия, в които притежателят на картата участва в плащането. Тази група включва следните видове транзакции:
- C/CI – инициираща транзакция със съхраняване на обичайни съхранени платежни данни за по-нататъшни плащания.
- RI – инициираща транзакция със съхраняване на съхранени платежни данни за рекурентни плащания.
- F – извънпланова транзакция, извършвана от притежателя на картата с използване на обичайни съхранени платежни данни.
-
MIT (Merchant-initiated Transactions) – транзакции на електронна търговия, извършвани от продавача без участието на притежателя на картата. В тази група влизат следните типове транзакции:
- U – извънпланова транзакция с използване на обичайни съхранени платежни данни. Например, начисляване на неустойки. Обърнете внимание, че за такава операция няма CVC или 3DS-верификация, тъй като собственикът на картата не участва в нея и не може да въвежда никакви данни.
- R – последваща рекурентна транзакция с използване на рекурентни съхранени платежни данни.
Видът транзакция трябва да се предава в параметъра tii (Transaction Intitiator Indicator, Идентификатор на инициатор на транзакция) на платежните API-заявки. Възможни стойности на параметъра tii:
Стойност tii
|
Описание | Вид транзакция | Инициатор на транзакция | Данни на карта за транзакция | Съхраняване на данни на карта след транзакция | Забележка |
|---|---|---|---|---|---|---|
| Празно | Обичаен | Купувач | Въвежда се от купувача | Не | Транзакция на електронна търговия без съхраняване на съхранени платежни данни. | |
| CI | Иницииращ - Обичаен (CIT) | Инициираща | Купувач | Въвежда се от купувача | Да | Транзакция на електронна търговия със съхраняване на съхранени платежни данни. |
| F | Извънреден плащане (CIT) | Последваща | Купувач | Клиентът избира карта вместо ръчно въвеждане | Не | Транзакция за електронна търговия, използваща предварително запазени обикновени запазени платежни данни. |
| U | Извънреден плащане (MIT) | Последваща | Продавач | Няма ръчно въвеждане, продавачът предава данни | Не | Транзакция за електронна търговия, използваща предварително запазени обикновени запазени платежни данни. Използва се само за едностепенни плащания. |
| RI | Инициираща - Рекурентни (CIT) | Инициираща | Купувач | Въвежда се от купувача | Да | Транзакция за електронна търговия със запазване на запазени платежни данни. |
| R | Рекурентно плащане (MIT) | Последваща | Продавач | Няма ръчно въвеждане, продавачът предава данни | Не | Рекурентна операция, използваща запазени запазени платежни данни. Използва се само за едностепенни плащания. |
Първоначалната транзакция, която създава запазени платежни данни, може да бъде изпълнена както в рамките на пряка интеграция, така и при интеграция чрез пренасочване. Типът интеграция влияе на това, какви изисквания ще бъдат предявявани в частта съответствие PCI DSS. За по-нататъшно плащане по запазени платежни данни съответствието PCI DSS вече не се изисква, тъй като данните на картата не се предават.
Управление на запазени платежни данни чрез API
По-долу са приведени примери за създаване и използване на различни типове запазени платежни данни чрез API с използване на собствена платежна страница на търговеца:
Обикновени запазени платежни данни
Създаване на обикновени запазени платежни данни
За да създадете обикновени запазени платежни данни, изпълнете следните стъпки:
-
Изпълнете заявка 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" } -
Предайте получената стойност
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.
Плащане с обикновени запазени платежни данни
За плащане на поръчка със създадени обикновени запазени платежни данни (вж. процесът създаване по-горе) изпълнете следните стъпки:
- Регистрирайте нова поръчка с помощта на заявка register.do със същия параметър
clientId, получете в отговорorderId. -
Получете списък на връзките с помощта на заявка 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" } ] } -
Изпълнете заявка 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.
Рекурентни връзки
Създаване на рекурентна връзка
За да създадете рекурентна връзка, изпълнете следните стъпки:
-
Изпълнете заявка 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" } -
Предайте получената стойност
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.
Плащане с рекурентна връзка
За плащане на поръчка със създадена рекурентна връзка (вж. процеса на създаване по-горе) използвайте следната последователност от заявки:
-
Получете списък на връзките, използвайки заявка 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" } ] } -
Изпълнете заявка 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.