RozetkaPay

Збережені картки

Робота з гаманцем та збереженими картками через RozetkaPay API

Збережені картки дозволяють платникам здійснювати швидкі оплати без повторного введення карткових даних.

Способи збереження картки

  1. На платіжній сторінці — користувач відмічає опцію “зберегти карту”
  2. Через віджет — отримання токена та збереження в гаманець

Дані зберігаються по параметру customer.external_id — унікальному ідентифікатору користувача.

Додавання картки в гаманець

curl -X POST "https://api.rozetkapay.com/api/customers/v1/wallet?external_id=user_123" \
-u "login:password" \
-H "Content-Type: application/json" \
-d '{
"mode": "hosted",
"callback_url": "https://your-site.com/callback",
"result_url": "https://your-site.com/result",
"make_default": true,
"payment_method": {
"type": "cc_token",
"cc_token": {
"token": "tok_card_token",
"mask": "424242******4242",
"expires_at": "2027-12-01T00:00:00Z",
"use_3ds_flow": true
}
}
}'

Замість external_id можна передати заголовок X-CUSTOMER-AUTH з токеном користувача — потрібне одне з двох.

Отримання карток з гаманця

curl -X GET "https://api.rozetkapay.com/api/customers/v1/wallet?external_id=user_123" \
-u "login:password"

Відповідь

{
"external_id": "user_123",
"wallet": [
{
"option_id": "opt_abc123",
"type": "card",
"name": "Моя картка",
"is_default": true,
"card": {
"mask": "424242******4242",
"payment_system": "VISA",
"bank_short_name": "ПриватБанк",
"expires_at": "2025-12-01T00:00:00Z"
}
},
{
"option_id": "opt_def456",
"type": "card",
"name": "Робоча картка",
"is_default": false,
"card": {
"mask": "545454******5454",
"payment_system": "MASTERCARD",
"bank_short_name": "Monobank",
"expires_at": "2026-06-01T00:00:00Z"
}
}
]
}

Оплата збереженою карткою

Через токен (cc_token)

curl -X POST https://api.rozetkapay.com/api/payments/v1/new \
-u "login:password" \
-H "Content-Type: application/json" \
-d '{
"external_id": "order_12345",
"mode": "direct",
"amount": 100,
"currency": "UAH",
"callback_url": "https://your-site.com/callback",
"customer": {
"external_id": "user_123",
"payment_method": {
"type": "cc_token",
"cc_token": {
"token": "tok_2df5e29f-7ace-4e1a-9153-7a95e5d6a503",
"use_3ds_flow": true,
"save_to_wallet": true
}
}
}
}'

Через гаманець (wallet)

curl -X POST https://api.rozetkapay.com/api/payments/v1/new \
-u "login:password" \
-H "Content-Type: application/json" \
-d '{
"external_id": "order_12345",
"mode": "direct",
"amount": 100,
"currency": "UAH",
"callback_url": "https://your-site.com/callback",
"customer": {
"external_id": "user_123",
"payment_method": {
"type": "wallet",
"wallet": {
"option_id": "opt_abc123",
"use_3ds_flow": true
}
}
}
}'

Параметри платіжних методів

cc_token

ПараметрОбов’язковийОпис
tokenТакТокен картки
use_3ds_flowТакВикористовувати 3DS (за замовч. true)
save_to_walletНіЗберегти в гаманець після оплати

wallet

ПараметрОбов’язковийОпис
option_idТакID платіжного інструмента в гаманці
use_3ds_flowТакВикористовувати 3DS

Видалення картки з гаманця

curl -X DELETE "https://api.rozetkapay.com/api/customers/v1/wallet?external_id=user_123" \
-u "login:password" \
-H "Content-Type: application/json" \
-d '{
"option_id": "opt_abc123",
"type": "card"
}'

Токенізація через віджет

Для отримання токена картки використовуйте віджет:

let widget = RPayCardWidget.init({
key: "your_widget_key",
mode: "inline",
selector: "widget-checkout",
onToken: function (tokenData) {
// tokenData.token — токен для збереження або оплати
// tokenData.card_mask — маска картки
// tokenData.expires_at — строк дії токена
saveCardToWallet(tokenData.token);
},
});
widget.open();

Діаграма процесу

flowchart TD
    U([Користувач])
    U --> W[Віджет<br/>токенізація]
    U --> C[Платіжна сторінка<br/>save card]
    W --> AW[Add to Wallet API]
    C --> AS[Автоматичне<br/>збереження]
    AW --> WL[(Гаманець<br/>користувача)]
    AS --> WL
    WL --> FP[Швидка оплата<br/>wallet / cc_token]