API інтеграція
Direct-інтеграція
Direct-інтеграція дозволить вам приймати платежі, використовуючи власну платіжну сторінку.
Формат взаємодії:
Direct-інтеграція зі збиранням карткових даних на вашій стороні потребує проходження сертифікації PCI DSS. У якості альтернативи ви можете скористатися нашим токенізаційним віджетом.
Використання direct-інтеграції з двостадійними оплатами передбачає такі особливості (додатково до описаних щодо одностадійної оплати):
- В запиті до API Tranzzo параметр methodповинен містити назву методуauth
В іншій частині запит на створення транзакції резервування повинен містити параметри аналогічні тим, що передбачені для одностадійних платежів.
В залежності від того, що використовується у запиті: повні карткові дані чи токен, вам необхідно передавати такі параметри:
- Використання повних карткових даних: cc_number,exp_month,exp_year,card_cvv
- Використання токенів cc_token
Окрім платежів з токенами, що були отримані після оплати карткою, також підтримуються платежі за допомогою токенів, що були отримані під час першої оплати через платіжні методи Apple Pay чи Google Pay™. Ці токени будуть передаватися у параметрі cc_token.
Наприклад:
"cc_token":"rcr:ODJkZjBhNmY2OTMyNDJlN2wjMjFjfTQzOXU3ZDFhYzI6cWJmWHFmMHlzM3hYaXJMWEZv" (токен після оплати Apple Pay / Google Pay™)
або
"cc_token":"ODJkZjBhNmY2OTMyND7sSjdD0S8TQzOXU3ZDFhYzI6cWJmWHFmMHlzM3hYaXJMWEZv" (токен після оплати карткою).
Приклад запиту з картковими даними:
$ curl "https://cpay.tranzzo.com/api/v1/payment" \
    -H "Content-Type: application/json" \
    -H "X-API-AUTH: CPAY ${API_KEY}:${API_SECRET}" \
    -H "X-API-KEY: ${ENDPOINTS_KEY}" \
    -X POST -d '{
      "pos_id":           "${POS_ID}",
      "mode":             "direct",
      "method":           "auth",
      "amount":           1,
      "currency":         "UAH",
      "description":      "Order description",
      "order_id":         "123",
      "order_3ds_bypass": "always",
      "cc_number":        "4242424242424242",
      "exp_month":        2,
      "exp_year":         24,
      "card_cvv":         "111",
      "server_url":       "https://callback.blackhole.com/callback",
      "result_url":       "https://example.com/result",
      "payload":          "sale=true",
      "customer_referrer": "https://example.com",
      "browser_fingerprint": {
          "browserColorDepth":       "24",
          "browserScreenHeight":     "860",
          "browserScreenWidth":      "1600",
          "browserJavaEnabled":      "false",
          "browserLanguage":         "uk-UA",
          "browserTimeZone":         "Europe/Kiev",
          "browserTimeZoneOffset":   "-120",
          "browserAcceptHeader":     "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
          "browserIpAddress":        "127.0.0.1",
          "browserUserAgent":        "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36"
      }
    }'
Приклад запиту з токеном:
$ curl "https://cpay.tranzzo.com/api/v1/payment" \
    -H "Content-Type: application/json" \
    -H "X-API-AUTH: CPAY ${API_KEY}:${API_SECRET}" \
    -H "X-API-KEY: ${ENDPOINTS_KEY}" \
    -X POST -d '{
      "pos_id":           "${POS_ID}",
      "mode":             "direct",
      "method":           "auth",
      "amount":           1,
      "currency":         "UAH",
      "description":      "Order description",
      "order_id":         "123",
      "order_3ds_bypass": "always",
      "cc_token":         "ODJkZjBhNmY2OTMyNDJlN2wjMjFjfTQzOXU3ZDFhYzI6cWJmWHFmMHlzM3hYaXJMWEZv",
      "server_url":       "https://callback.blackhole.com/callback",
      "result_url":       "https://example.com/result",
      "payload":          "sale=true",
      "customer_referrer": "https://example.com",
      "browser_fingerprint": {
          "browserColorDepth":       "24",
          "browserScreenHeight":     "860",
          "browserScreenWidth":      "1600",
          "browserJavaEnabled":      "false",
          "browserLanguage":         "uk-UA",
          "browserTimeZone":         "Europe/Kiev",
          "browserTimeZoneOffset":   "-120",
          "browserAcceptHeader":     "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
          "browserIpAddress":        "127.0.0.1",
          "browserUserAgent":        "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36"
      }
    }'
Параметри відповіді:
| Parameter | Type | Description | 
|---|---|---|
| payment_id | UUID | Unique Tranzzo payment identifier | 
| order_id | String(≤256) | Unique identifier of order | 
| gateway_order_id | GW_ID | Unique order identifier in bank acquirer system. | 
| billing_order_id | BILLING_ID | Unique Tranzzo billing identifier | 
| transaction_id | UUID | Tranzzo transaction identifier | 
| pos_id | UUID | Merchant's identifier (POS_ID`) | 
| mode | MODE | direct | 
| method | METHOD | Payment method ( auth) | 
| amount | Number | Transaction amount | 
| currency | CURRENCY | Transaction currency (ISO_4217) | 
| description | String(≤2048) | Payment description | 
| status | STATUS | Transaction status | 
| status_code | STATUS_CODE | Tranzzo payment status code | 
| status_description | STATUS_DESCRIPTION | Tranzzo payment status code description | 
| user_action_required | Boolean | Either customer action is required to proceed with payment | 
| user_action_url | URL | If user_action_requiredistruethen user should be redirected to this URL | 
| eci | ECI | Electronic Commerce Indicator - authentication result of credit card payment on 3D Secure | 
| mcc | MCC | MCC for this transaction | 
| options_3ds | String | 3-D Secure flow option | 
| cc_mask | CC_MASK | Card number mask | 
| cc_token | CC_TOKEN | Tranzzo card token generated for this card | 
| cc_token_expiration | String | Token expiration timestamp | 
| customer_id | String | Customer’s identifier in merchant's system | 
| customer_ip | String | Customer’s IP address | 
| customer_fname | String | Customer’s first name | 
| customer_lname | String | Customer’s last name | 
| customer_patronym | String | Customer’s patronym | 
| customer_email | String | Customer’s email | 
| customer_phone | String | Customer’s phone | 
| customer_country | String | Customer’s country (ISO 3166-1 (alpha-2)). For instance, UA for Ukraine | 
| customer_birthday | String | Customer’s birthday (format: yyyy-MM-dd) | 
| result_url | URL | Customer will be redirected to this URL after payment. | 
| created_at | TIMESTAMP | Timestamp when transaction was created | 
| processed_at | TIMESTAMP | Timestamp when transaction was updated last time | 
| payload | String | Field for custom data | 
| bank_short_name | String | Bank short name. | 
| receipt_url | URL | URL link to the receipt for the corresponding transaction | 
Приклад відповіді:
{
  "payment_id":           "9b1392a5-d030-4e85-b02d-9b7191ea2a5e",
  "order_id":             "123",
  "gateway_order_id":     "9B39A076243EB3EBB0925EAA981763AC:158545961",
  "billing_order_id":     "11231231231",
  "transaction_id":       "a8d80c86-0c7b-41bc-b63d-1e78f80edcd9",
  "pos_id":               "dc728de1-51ef-4ef1-80f7-3b44b07b5667",
  "mode":                 "direct",
  "method":               "auth",
  "amount":               1,
  "currency":             "UAH",
  "description":          "Order description",
  "status":               "pending",
  "status_code":          "2122",
  "status_description":   "3DS verification is required to finish the transaction.",
  "user_action_required": true,
  "user_action_url":      "http://secure.secure3d.net/s3st?a=start_3ds&tid=a8d81c860c7b41bcb65d1e78f80edcd923ac18d5dd1d4a37e6c7df7d5e4bec74ab5d790b",
  "eci":                  "7",
  "mcc":                  "4900",
  "options_3ds":          "supported",
  "cc_mask":              "424242******4242",
  "cc_token":             "ODJkZjBhNmY2OTMyNDJlN2wjMjFjfTQzOXU3ZDFhYzI6cWJmWHFmMHlzM3hYaXJMWEZv",
  "cc_token_expiration":  "2020-10-10T10:10:22",
  "customer_id":          "123",
  "customer_ip":          "194.183.171.239",
  "customer_fname":       "Tom",
  "customer_lname":       "Hanks",
  "customer_email":       "[email protected]",
  "customer_phone":       "+380999999999",
  "customer_country":     "UA",
  "result_url":           "https://example.com/result",
  "created_at":           "2018-10-10T10:10:22.100",
  "processed_at":      "2018-10-10T10:10:23.300",
  "payload":              "sale=true",
  "bank_short_name":      "Bank name",
  "receipt_url": "https://cpay.tranzzo.com/public/receipt/12491284012940129402424124124124124ffef3re3rf32f2vf"
}
Окрім того, в запиті обов’язково мають передаватися такі дані щодо фінгерпринту браузера платника:
| Parameter | Type | Description | 
|---|---|---|
| browserColorDepth | String | Browser's color depth | 
| browserScreenHeight | String | Browser's screen height | 
| browserScreenWidth | String | Browser's screen width | 
| browserJavaEnabled | String | Browser's java enabled | 
| browserLanguage | String | Browser's language | 
| browserTimeZone | String | Browser's timezone | 
| browserTimeZoneOffset | String | Browser's timezone offset | 
| browserAcceptHeader | String | Browser's accept header | 
| browserIpAddress | String | Browser's IP address | 
| browserUserAgent | String | Browser's user agent | 
Приклад фінгерпринту браузера платника:
"browser_fingerprint": {
  "browserColorDepth":       "24",
  "browserScreenHeight":     "860",
  "browserScreenWidth":      "1600",
  "browserJavaEnabled":      "false",
  "browserLanguage":         "uk-UA",
  "browserTimeZone":         "Europe/Kiev",
  "browserTimeZoneOffset":   "-120",
  "browserAcceptHeader":     "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
  "browserIpAddress":        "127.0.0.1",
  "browserUserAgent":        "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36"
}
Hosted-інтеграція
Hosted-інтеграція дозволить вам приймати спліт-платежі від клієнтів, використовуючи платіжну сторінку Tranzzo.
Формат взаємодії:
Використання hosted-інтеграції з двостадійними оплатами передбачає такі особливості (додатково до описаних щодо одностадійної оплати):
- В запиті до API Tranzzo параметр methodповинен містити назву методуauth
В іншій частині запит на створення транзакції резервування повинен містити параметри аналогічні тим, що передбачені для одностадійних платежів.
Приклад запиту:
$ curl "https://cpay.tranzzo.com/api/v1/payment" \
    -H "Content-Type: application/json" \
    -H "X-API-AUTH: CPAY ${API_KEY}:${API_SECRET}" \
    -H "X-API-KEY: ${ENDPOINTS_KEY}" \
    -X POST -d '{
      "pos_id":           "${POS_ID}",
      "mode":             "hosted",
      "method":           "auth",
      "amount":           1,
      "currency":         "UAH",
      "description":      "Order description",
      "order_id":         "123",
      "order_3ds_bypass": "always",
      "server_url":       "https://callback.blackhole.com/callback",
      "result_url":       "https://example.com/result",
      "payload":          "sale=true",
      "customer_referrer": "https://example.com",
    }'
Відповідь зі статусом 303 HTTP на успішний запит містить заголовок Location, в який клієнт повинен бути перенаправлений для продовження оплати.
Приклад відповіді:
HTTP/2 303
# .. other headers
Location: https://cpay.tranzzo.com/api/v1/checkout/1b806782-3d97-4444-abb9-6e4b45d34663/form
Наступні кроки
Процедура тестування та виходу в онлайн є аналогічною тій, що передбачена для одностадійної оплати.