Back to top

Сбербанк PAY

Сервис для приема платежей в интернет-магазинах через Национальную Платежную Систему. Реализация оплаты заключается в создании формы на странице продавца, в которой будут собираться данные о карте — номер, дата истечения, CVV. При этом важно упомнянуть тот факт, что эти персональные данные не должны никак сохранятся на вашем сервере. Идеальный вариант: чтобы они слались напрямую с клиента к нам на сервер, а уже полученный с нашего сервера токен и сопуствующие данные можно уже сохранять для дальнейшей работы.

Процесс оплаты

Первый этап заключается в сохранении на сервере Банка персональной информации. Для этого делается запрос на токен — просто ключ к сохраненной информации о карте. При этом сам сервер Банка не сохраняет персональные данные в открытом виде, данные лежат зашифрованными. Для доступа к ним нужен полный токен, который возвращается клиенту при запросе. Токен при этом находится в состоянии pending — в ожидании подтверждения.

Второй этап — подтверждение токена. Это дополнительный уровень безопасности для онлайн операций. Для этого клиента просто надо перенаправить на страницу 3d-secure (3ds) и ожидать прохождения этой процедуры с возвратом на указанную вами страницу. После подтверждения токен переходит в статус chargeable — в таком состоянии позволяется с помощью токена списывать деньги с карты клиента.

Третий этап — оплата. Она не проходит автоматически после подтверждения токена. Это имеет смысл, так как токены могут являться многоразовыми (но для разовых операций старайтесь избегать такого поведения, клиенту в случае многоразового токена будет показано предупреждение о неограниченном доступе к карте при подтверждении токена). Если токен одноразовый (с заявленной суммой при создании), то токен переходит после оплаты в состояние charged, если многоразовый, то так и остается в состоянии chargeable. Оплату по многоразовому токену можно вызывать неограниченно (но в пределах лимитов карты, которые указываются клиентом в банке самостоятельно).

В случае каких-либо проблем, можно однократно выполнить отмену платежа, в таком случае токен перейдет в статус refunded (если он одноразовый).

В любой момент вы можете набюдать за статусом созданного вами токена.

Ключи

После регистрации в системе вам выдается 2 ключа: публикуемый (pk) и секретный (sk).

  • pk - это ключ, который можно размещать в открытых источниках и он используется только для создания токена

  • sk - ключ, которым проивзодятся остальные операции - оплата, возврат, а также получается информация о существующих объектах текущего клиента.

Resource Group

Токены

Для платежа в интернет-магазине в начале создается токен - код, который характеризует платежные данные клиента, но при этом не хранит его персональные данные.

Это обязательный первый этап для платежа.

Создание нового токена
POST/v1/token?token={token}

Для создания токена вы должны создать форму у себя в интернет-магазине.

  • Аттрибуты запроса
    • key (string) - публикуемый ключ клиента
    • card_number (string) - комер карты НПС
    • exp_month (number) - номер месяца даты истечения карты
    • exp_year (number) - последние две цифры года даты истечения карты
    • cvc (number) - CVC/CVV код, указанный на обороте карты
    • amount (number) - сумма операции в копейках. К примеру, 3 рубля = 300. В будущем возможно опциональное использование для переиспользуемых токенов.
    • currency (string, optional) - код валюты. Код приднестровских рублей - “000”
    • check_card (boolean, optional) - проверять ли данные карты. Необязательный параметр. Проводит операцию на 1 копейку и делает сразу же возврат. Использовать рекомендуется только в случае особой необходимости, так как клиенту может дойти оповещение о списании и отмене снятия. В случае если параметр не был передан, или не был равен true - проверка будет проведена только на этапе оплаты. Данный параметр не влияет на проверку данных карты (номера, даты истечения), которая возможна без процессинга.

Example URI

POST https://pay.prisbank.com/v1/token?token=token
URI Parameters
HideShow
token
string (required) 

токен (передается при запросе информации о токене)

Request
HideShow
Headers
Content-Type: application/x-www-form-urlencoded
Response  200
HideShow

В ответе возвращается вся необходимая информация для отображения.

token - токен, который можно сохранить на сервере и необходимо передавать в дальнейших шагах.

last4numbers - последние 4 цифры номера карты, которые можно отображать клиенту для идентификации карты, с которой будет происходить оплата.

created - дата создания токена в формате ISO 8601:2004.

Возможные значения аттрибута status:

  • pending - в ожидании подтверждения клиентом через 3ds

  • chargeable - готово для оплаты

  • charged - оплачено (вместе со статусом refunded попадает в этот статус только при создании токена как не переиспользуемый)

  • refunded - платеж возвращен

Параметр three_ds_required говорит о том, что токен требует подтвержения клиентом через банк-эмитент карты.

Параметр bank возвращает КУБ (код учерждения банка) головного отделения банка, выданный ПРБ.

Параметр type возвращает название типа карты. На данный момент принимаются только карты НПС, значение аттрибута NPS.

Параметр subscription возвращает boolean результат можно ли этот токен переиспользовать.

Headers
Content-Type: application/json
Body
{
  "token": "tok_33a58e48-5ac6-4806-aecd-392637e95da3$$n1SGqf6-Xe0e9v7TCTc9AQ",
  "last4numbers": "8709",
  "created": "2018-01-23T11:13:25.910+02",
  "status": "pending",
  "three_ds_required": true,
  "exp_month": 6,
  "exp_year": 18,
  "bank": "21",
  "type": "NPS",
  "subscription": false
}
Response  401
HideShow

Не передан публикуемый ключ, или такой ключ не найден.

Response  403
HideShow

Карта данного банка на данный момент не поддерживается.

Response  406
HideShow

Не переданы все обязательные параметры, переданная карта не НПС, или не правильно набран номер, или валюта не в списке поддерживаемых (рубль ПМР (000) и рубль РФ (643)).

Response  432
HideShow

Ошибка при проверке карты (см. параметр check_card).

Response  433
HideShow

Слишком много ошибочных попыток проверить карту (см. параметр check_card).

Получить информацию о токене
GET/v1/token?token={token}

Example URI

GET https://pay.prisbank.com/v1/token?token=token
URI Parameters
HideShow
token
string (required) 

токен (передается при запросе информации о токене)

Request
HideShow

В запросе на получение информации о токене необходимо указать секретный ключ в header-е.

Headers
X-Secret: sk_ABC123
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "created": "2018-01-23T11:13:25.000+02",
  "status": "charged",
  "three_ds_required": true,
  "amount": 75,
  "currency": "000"
}
Response  401
HideShow

Не передан секретный ключ, или такой ключ не найден.

Response  404
HideShow

Токен не найден.

Удалить токен
DELETE/v1/token?token={token}

Example URI

DELETE https://pay.prisbank.com/v1/token?token=token
URI Parameters
HideShow
token
string (required) 

токен (передается при запросе информации о токене)

Request
HideShow

В запросе на получение информации о токене необходимо указать секретный ключ в header-е.

Headers
X-Secret: sk_ABC123
Response  200
HideShow

Токен удален.

Response  401
HideShow

Не передан секретный ключ, или такой ключ не найден.

Response  404
HideShow

Токен не найден.

Подтверждение клиентом токена 3ds

Для подтверждения оплаты необходимо перенаправить клиента на страницу банка, где произойдет проверка клиента. В результате проверки клиент будет перенаправлен на страницу return_url, а к GET запросу будет добавлен параметр success со значением 1, или 0 в зависимости от того будет ли подтверждение успешным, или нет.

Перенаправить на страницу банка для подтверждения
GET/v1/3ds?token={token}&return_url={return_url}

Example URI

GET https://pay.prisbank.com/v1/3ds?token=token&return_url=return_url
URI Parameters
HideShow
token
string (required) 

полученный токен

return_url
string (required) 

URL магазина, на который надо вернуться после получения результата проверки

Response  307
HideShow

Успешное перенаправление на страницу банка.

Headers
Location: https://3ds.bank-name.test/some_code
Response  403
HideShow

Токен находится не в состоянии pending и подтверждать его уже не требуется.

Response  404
HideShow

Токен не найден.

Оплата

Создание оплаты
POST/v1/charge?token={token}&charge={charge}&amount={amount}

Example URI

POST https://pay.prisbank.com/v1/charge?token=token&charge=charge&amount=amount
URI Parameters
HideShow
token
string (required) 

полученный токен (используется при оплате)

charge
string (optional) 

id платежа (используется при получении информации о оплате)

amount
number (optional) 

сумма платежа в копейках (для оплаты многоразовых токенов)

Request
HideShow
Headers
Content-Type: application/x-www-form-urlencoded
X-Secret: sk_ABC123
Response  200
HideShow

Возвращается результат оплаты.

id - id платежа в системе “Сбербанк PAY”.

Если параметр paid - true - оплата успешно произошла и возвращается параметр reference - id платежа в системе НПС.

Если paid - false, тогда reference не возвращается, а возвращаются failure_code и failure_name - код и текст ошибки.

Headers
Content-Type: application/json
Body
{
  "id": "ch_9cb0a8db-6378-41f4-86f6-bfb8ac55febe",
  "created": "2018-01-23T11:15:30.000+02",
  "paid": true,
  "reference": "000002812310"
}
Response  400
HideShow

Не передан токен.

Response  401
HideShow

Не передан секретный ключ, или такой ключ не найден.

Response  403
HideShow

Токен находится не в состоянии chargeable.

Response  404
HideShow

Токен не найден.

Информация об оплате
GET/v1/charge?token={token}&charge={charge}&amount={amount}

Example URI

GET https://pay.prisbank.com/v1/charge?token=token&charge=charge&amount=amount
URI Parameters
HideShow
token
string (required) 

полученный токен (используется при оплате)

charge
string (optional) 

id платежа (используется при получении информации о оплате)

amount
number (optional) 

сумма платежа в копейках (для оплаты многоразовых токенов)

Request
HideShow
Headers
X-Secret: sk_ABC123
Response  200
HideShow

Получение информации об оплате.

Дополнительно возвращается amount - сумма платежа (в копейках), currency - валюта платежа, а также refunds - попытки отмены данного платежа. Во внутренней структуре отмены платежа параметр refunded указывает на результат отмены.

Headers
Content-Type: application/json
Body
{
  "id": "ch_9cb0a8db-6378-41f4-86f6-bfb8ac55febe",
  "created": "2018-01-23T11:15:30.000+02",
  "currency": "000",
  "amount": 75,
  "paid": true,
  "reference": "000002812310",
  "refunds": [
    {
      "id": "re_ad26b88c-61ca-4755-90f4-b72ab015328c",
      "date": "2018-01-23T11:17:49.000+02",
      "refunded": true
    },
    {
      "id": "re_e52cd23b-d422-4128-abc9-893046503270",
      "date": "2018-01-23T11:17:52.000+02",
      "refunded": false
    },
    {
      "id": "re_080dbd3b-a777-440a-9d5c-810d8e4c9b6b",
      "date": "2018-01-23T11:17:54.000+02",
      "refunded": false
    }
  ]
}
Response  401
HideShow

Не передан секретный ключ, или такой ключ не найден.

Response  404
HideShow

Токен не найден.

Возврат платежа

В различных случаях требуется отменить уже проведенный платеж. Для этого есть метод refund.

Обратите внимание на то, что возврат осуществляется на полную сумму транзакции.

Созданные возвраты, успешные и ошибочные отображаются при запросе информации о оплате.

Запрос возврата
POST/v1/refund?token={token}&charge={charge}

Example URI

POST https://pay.prisbank.com/v1/refund?token=token&charge=charge
URI Parameters
HideShow
token
string (required) 

полученный токен

charge
string (required) 

id платежа

Request
HideShow
Headers
X-Secret: sk_ABC123
Response  200
HideShow

В данном случае кроме уникального идентификатора возврата id, переданного токена token, даты возврата date, возвращается refunded, показывающий успешно, или нет прошла операция возврата.

Headers
Content-Type: application/json
Body
{
  "id": "re_080dbd3b-a777-440a-9d5c-810d8e4c9b6b",
  "token": "tok_33a58e48-5ac6-4806-aecd-392637e95da3$$n1SGqf6-Xe0e9v7TCTc9AQ",
  "date": "2018-01-23T11:17:54.283+02",
  "refunded": true
}
Response  401
HideShow

Не передан секретный ключ, или такой ключ не найден.

Response  403
HideShow

В случае не проведенного возврата возвращается refunded: false

Body
{
  "id": "re_080dbd3b-a777-440a-9d5c-810d8e4c9b6b",
  "token": "tok_33a58e48-5ac6-4806-aecd-392637e95da3$$n1SGqf6-Xe0e9v7TCTc9AQ",
  "date": "2018-01-23T11:17:54.283+02",
  "refunded": false
}
Response  404
HideShow

Токен не найден.