Документация (1.8.9)

Download OpenAPI specification:Download

1. Hosted Payment Page (HPP)

Hosted Payment Page - это програмный интерфейс, который позволяет мерчантам принимать электронные платежи на веб-сайте или веб-приложении, без необходимости внедрения сложных технических решений.

Процесс взаимодействия с HPP (flow)

HPP flow

1.1 Настройка учетной записи мерчанта

Для начала работы необходимо заполнить настройкив личном кабинете на странице настройки

Название Описание
Callback URL под PayOut Ссылка на которую будут отправлены данные с информацией о PayOut платеже
Callback URL под PayIn Ссылка на которую будут отправлены данные с информацией о PayIn платеже
Callback URL под Арбитражи Ссылка на которую будут отправлены данные с информацией о Арбитраже
URL неудачного ввода На эту страницу будет перенаправлен покупатель по-умолчанию в случае неуспешной оплаты
URL успешного ввода На эту страницу будет перенаправлен покупатель по-умолчанию в случае успешной оплаты

1.2 Создание ссылки на оплату

Для перехода к оплате, Вы должны отправить клиента по форме с параметрами. Для инициализации оплаты, магазин должен отправить покупателя по адресу https://safepays.io/pay предварительно заполнив параметры

Параметры:

Название параметра Тип данных Описание Обязательно Входит в подпись
m Int ID магазина в нашей системе Да Да
oa String Сумма платежа в наименьшем номинале валюты.

Например:
500 rub = 50000
1000 rub = 100000
500.12 rub = 50012
1000 KZT = 100000
1000 UZS = 100000
Да Да
o String ID платежа в вашей системе Да Да
s String Подпись сгенерированная с помощью “first_secret” см. генерация подписей Да Да
cr String Валюта платежа

Доступные валюты: RUB, KZT, UZS, UAH
Да Да
success_url String URL куда переадресовать пользователя, после успешной оплаты. (Если не заполнено, значение берется из настроек магазина. Данный параметр в приоритете для редиректа) Нет Да, если указано значение
fail_url String URL куда переадресовать пользователя, после неуспешной оплаты. (Если не заполнено, значение берется из настроек магазина. Данный параметр в приоритете для редиректа) Нет Да, если указано значение
method_id String Предвыбранный идентификатор метода, без возможности его изменения на форме оплаты. Этот параметр может быть опционально включен в подпись Нет Опционально
fp String Отпечаток пользователя Зависит от метода (уточняйте у менеджера) Да, если указано значение

2. Payment Request API Integration (PRA)

Payment Request API Integration (интеграция с API запросов на оплату) - это способ интеграции электронных платежей в веб-приложения и интернет-магазины, который позволяет пользователям легко и удобно производить платежи через веб-приложения, не покидая их. Этот метод позволяет мерчантам предоставить своим клиентам быстрый и удобный способ оплаты без необходимости перенаправления на сторонние страницы или использования сторонних платежных форм. Используя данный подход, мерчанту необходимо реализовать на своей стороне интерфейс который будет связыватся с нашим API.

Процесс взаимодействия с PRA (flow)

  1. Инициализация платежа
    Является не обязательным шагом, используется для получения первичных данных о платеже (сумма пополнения, базовые данные о мерчанте, список доступных методов)
  2. Создание платежа
    Обязательный шаг, в который подается выбранный метод оплаты, и заполненные динамические поля
    a. Переадресация клиента на форму оплаты
    Вместе с данными о платеже, в ответе возвращается поле form_url, куда можно переадресовать пользователя для завершения платежа
    b. Собственная форма оплаты с внедрением всех дополнительных шагов
    Если вы хотите реализовать собственную форму оплаты, то вы можете использовать все доступные API методы и самостоятельно реализовать весь необходимый функционал (вывод данных о платежных реквизитах, обновление статуса заявки, отмена заявки, обработка статуса заявки, и добавление функционала прикрепления чека)
  3. Переадресация пользователя обратно к мерчанту
    После того как пользователь отменит заявку, либо заявке присвоится финальный статус, то пользователя нужно обратно вернуть на страницу мерчанта, для дальнейших действий. (Если используется встроенная форма оплаты, то этот шаг будет выполняться автоматически)

Реализация

Для реализации данного метода интеграции, интегрируйте в свое приложение API методы описанные в секции PRA Интеграция

Генерация подписей

Ключи для генерации подписей можно посмотреть в личном кабинете на странице настройки

Название Описание
First secret Используется для генерации подписи на создание PayIn заявки
Second secret Используется для генерации подписи в момент получения callback запроса от нас.

Подпись формируется посредством конкатенации всех параметров в виде "key:value;" (отсортированные по ключам в алфавитном порядке) и преобразования к sha1 hmac подписанной с помощью Secret Key. Массивы и объекты пропускаем.

Пример генерации подписи на javascript/typescript:

import * as crypto from "crypto";
const buildSignatureFromParams = (params, secret_key) => {
  let paramsString = "";
  Object.keys(params)
    .sort()
    .forEach((key) => {
      if (key === "s") return;
      if (key === "signature") return;
      if (typeof params[key] == "object") return;
      paramsString += `${key}:${params[key]};`;
    });
  paramsString = crypto
    .createHmac("sha1", secret_key)
    .update(paramsString)
    .digest("hex");
  return paramsString;
};
const secretKey = 'secretKey';
const params = {
  m: 1, // merchant id
  o: "order_id", // order id in your system
  oa: "50000", // payment amount - 500 rub
  cr: "RUB", // currency
}
params.s = buildSignatureFromParams(params, secretKey); // signature

Пример генерации подписи на php:

function buildSignature($params, $secret_key)
{
  ksort($params);
  $paramsString = '';
  foreach($params AS $key => $value)
  {
    if($key == 's' || $key == 'signature') continue; 
    if(is_array($value) || is_null($value)) continue;
    if(is_bool($value)) $value = $value ? 'true' : 'false';
    $paramsString .= $key .':'. $value .';';
  }
  $sign = hash_hmac('sha1', $paramsString, $secret_key);
  return $sign;
}
$secretKey = 'secretKey';
$params = array(
  'm' => 1, // merchant id
  'o' => "order_id", // order id in your system
  'oa' => "50000", // payment amount - 500 rub
  'cr' => "RUB", // currency
);
$params['s'] = buildSignature($params, $secretKey); // signature

Пример генерации подписи на C#:

using System; 
using System.Linq;
using System.Text;
using System.Collections.Generic;
using System.Security.Cryptography;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class SignatureBuilder {
  public static JObject Sort(JObject jObj) {
  var sortedObj = new JObject(
    jObj.Properties().OrderBy(c => c.Name)
  );
  return sortedObj;
}
public static string BuildSignature(string json) {
  string secretKey = "secretKey";
  JObject jObj = (JObject)JsonConvert.DeserializeObject(json);
  JObject sortedObj = Sort(jObj);
  string paramsString = "";
  foreach (var param in sortedObj)
  {
    string name = param.Key;
    JToken value = param.Value;
    var valueType = value.GetType();
    if (valueType.IsArray) continue;
    if (name == "s" || name == "signature") continue;
    if (value.Type == JTokenType.Boolean) value = (bool)value ? "true" : "false";
    paramsString += name + ":";
    paramsString += value + ";";
  }
  using(var hmacsha1 = new HMACSHA1(Encoding.UTF8.GetBytes(secretKey))) {
    var hash = hmacsha1.ComputeHash(Encoding.UTF8.GetBytes(paramsString));
    return BitConverter.ToString(hash).Replace("-", "").ToLower();
  }
}
}
public class Program {
  public static void Main() {
    Params signatureParams = new Params {
      m = 1,
        o = "order_id",
        oa = "50000",
        cr = "RUB"
    };
    string json = JsonConvert.SerializeObject(signatureParams, Formatting.Indented);
    Console.WriteLine(SignatureBuilder.BuildSignature(json));
  }
}
public class Params {
  public int m {get;set;}
  public string o {get;set;}
  public string oa {get;set;}
  public string cr {get;set;}
  [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
  public string? s {get;set;}
}

Получение и обработка оповещений

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

Оповещения на ваш сервер отправляются через POST запрос, в свою очередь, ваш сервер должен вернуть успешный HTTP Status Code (200-204), если же ваш сервер вернет другой статус код, то наша система отправит повторный запрос через 3 минуты, максимально количество повторных запросов: 2

Оповещение о PayIn платеже

Пример Request Body который будет отправлен вам на сервер:

{
  internal_id: 1,
  status: -2,
  amount: '501253',
  is_reprocessed: false,
  target_address: '0000********0000',
  formatted_amount: '5012.53',
  transaction_amount: ''501253'',
  currency_id: 'RUB',
  method_id: 'CARD_RUB',
  fields_data: { 'card-mask': { value: '4242********4242' } },
  operation_type: 1,
  order_id: 'my_id1',
  signature: 'b33c6e9f9f5cd4b2c961295c614cf2ac8efcd0f3'
}

Описание:

status Int Статус платежа
status Int Статус платежа
internal_id Int Идентификатор платежа в нашей системе
amount string Сумма платежа
Is_reprocessed bool Является ли платеж повторно-обработанным (см. Описание ниже)
target_address string|null Адрес куда перевел деньги пользователь
formatted_amount string Сумма платежа (отформатированная)
transaction_amount string Сумма которая была добавлена на ваш кошелек
currency_id string Валюта платежа
method_id string Выбранный метод платежа
fields_data object Динамические поля
operation_type Int Тип платежа (1 – PayIn, 2 - PayOut)
order_id string ID платежа в вашей системе
signature string Подпись подписанная с помощью “second_secret”

Повторно-обработанные платежи:
Платеж может быть повторно обработан, после неуспешного/просроченного статуса, чтобы определить такие платежи в запрос подается параметр “is_reprocessed”, который нужно дополнительно обработать.

Пример повторно-обработанного платежа:
Пользователь создает заявку на сумму 1000 RUB, но оплачивает только 900 RUB, в этом случае саппорт, обновляет сумму заявки на 900 RUB, а затем на ваш сервер отправляется дополнительный колбэк, где будет указана новая сумма. (ID платежа и все остальные данные остаются теми же, что были переданы в первый раз)

Пример обработки платежа на javascript:

const crypto = require('crypto');

const buildSignatureFromParams = (params, secret_key) => {
  let paramsString = "";
  Object.keys(params)
    .sort()
    .forEach((key) => {
      if (key === "s") return;
      if (key === "signature") return;
      if (typeof params[key] == "object") return;

      paramsString += `${key}:${params[key]};`;
    });

  paramsString = crypto
    .createHmac("sha1", secret_key)
    .update(paramsString)
    .digest("hex");
  return paramsString;
};

const handleRequest = () => {
  const callbackData = {
    status: 100,
    amount: '501253',
    is_reprocessed: false,
    target_address: '0000********0000',
    formatted_amount: '5012.53',
    transaction_amount: '501253',
    currency_id: 'RUB',
    method_id: 'CARDB_RUB',
    fields_data: { 'card-mask': { value: '4242********4242' } },
    operation_type: 1,
    order_id: 'my_id1',
    signature: '5b6552383fdd7195b5fba1cc43b769398468f9f6'
  }

  const signature = buildSignatureFromParams(callbackData, "SECOND_SECRET");

  if (callbackData.signature !== signature) {
    throw new BadRequestException("Invalid signature");
  }

  if (callbackData.is_reprocessed) {
    // handle reprocessed payment
    return "ok";
  }

  if (callbackData.status === 0) {
    // handle pending payment
    return "ok";
  }

  if (callbackData.status < 0) {
    // handle failed payment
    return "ok";
  }

  if (callbackData.status >= 100) {
    // handle successful payment
    return "ok";
  }

  throw new BadRequestException("Invalid status");
}

Оповещение о PayOut платеже

Пример Request Body который будет отправлен вам на сервер:

{
  status: -3,
  amount: '500000',
  formatted_amount: '5000',
  transaction_amount: '0',
  currency_id: 'RUB',
  method_id: 'TESTB_RUB',
  fields_data: { 'card-number': { value: '4002690000000008' } },
  operation_type: 2,
  order_id: 'MERCHANT_ORDER_ID',
  signature: "1576ca8c8c544dad5b3b3fb604d4f436ac710c58"
}

Описание:

status Int Статус платежа
status Int Статус платежа
internal_id Int ID платежа в нашей системе
amount string Сумма платежа
formatted_amount string Сумма платежа (отформатированная)
transaction_amount string Сумма которая была добавлена на ваш кошелек
currency_id string Валюта платежа
method_id string Выбранный метод платежа
fields_data object Поля введенные в момент создания платежа
operation_type Int Тип платежа (1 – PayIn, 2 - PayOut)
order_id string ID платежа в системе мерчанта
signature string Подпись подписанная с помощью “second_secret”

Оповещение о Арбитражах

Оповещения о закрытых арбитражах будут отправлены на callback url который указан в настройках

Оповещения отправляются только для арбитражей созданных через API Прикрепление чека и комментария к PayIn заявке с подачей параметра should_notify_merchant=true

Пример Request Body который будет отправлен вам на сервер:

 {
  operation_id: 597803,
  order_id: '1702637068',
  arbitrage_id: 1155,
  operation_status: 100,
  operation_type: 1,
  operation_amount: '55500',
  arbitrage_status: 100,
  signature: '18c4d4f66abc9751801aedb942ec6d791793ab44'
}

Описание:

status Int Статус платежа
operation_id Int ID платежа в нашей системе
order_id string ID платежа в системе мерчанта
arbitrage_id Int ID арбитража
operation_status Int Текущий статус операции
operation_type Int Тип платежа (1 – PayIn, 2 - PayOut)
operation_amount string Сумма платежа
arbitrage_status Int Статус арбитража (100 - Оплачено, -1 - Не оплачено)
signature string Подпись подписанная с помощью “second_secret”

Общее

Список статусов

Для защиты вашего обработчика вы можете использовать следующие правила:

  • <0 = Отказы/Ошибки
  • 0-99 = платеж находится в ожидании в каком-либо виде
  • >=100 = Платеж успешно завершен
ID статуса Описание
-3 Платеж завершен с ошибкой (Failed)
-2 Платеж отменен (Rejected)
-1 Срок платежа истёк (Expired)
0 Ожидание (Pending)
100 Платеж успешно завершен (Success)

Платежные реквизиты

В зависимости от выбранного метода платежа, платежные реквизиты могут состоять из следующих структур:

Структура 1.:

"payment_credentials": {
  "card": "0000000000000000",
  "comment": ""
}

Описание:

Название параметра Тип Описание
payment_credentials.card string Номер карты куда должен перевести деньги пользователь
payment_credentials.comment string|undefined Обязательный комментарий к платежу

Структура 2.:

"payment_credentials": {
  "card": "0000000000000000",
  "name": "Card Holder Name",
  "exp_date": "12/24"
}

Описание:

Название параметра Тип Описание
payment_credentials.card string Номер карты куда должен перевести деньги пользователь
payment_credentials.name string Имя держателя карты
payment_credentials.exp_date string Срок действия карты

Структура 3.:

"payment_credentials": {
  "url": "https://google.com",
}

Описание:

Название параметра Тип Описание
payment_credentials.url string Ссылка на которую нужно перенаправить пользователя

Структура 4.:

"payment_credentials": {
  "iban": "IBAN",
  "name": "Card Holder Name",
  "last_card_digits": "0000",
  "bank_name": "Сбербанк"
}

Описание:

Название параметра Тип Описание
payment_credentials.iban string IBAN счет куда должен перевести деньги пользователь
payment_credentials.name string Имя держателя счета
payment_credentials.last_card_digits string Последние 4 цифры карты
payment_credentials.bank_name string Название банка

Структура 5.:

"payment_credentials": {
  "phone_number": "798711111111",
  "bank_name": "Bank name",
  "name": "Card holder name"
}

Описание:

Название параметра Тип Описание
payment_credentials.phone_number string Номер куда должен перевести деньги пользователь
payment_credentials.bank_name string Название банка
payment_credentials.name string|undefined Имя держателя счета

Динамические поля (fields_data)

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

Типы заполнения полей (filling_type):

  1. before_creation – Поля которые нужно подать в момент создания заявки
  2. after_creation – Поля которые нужно подать в момент подтверждение заявки пользователем

Если для выбранного метода динамические поля отсутствуют, то значит ничего подавать не нужно.

В случае осуществления PayIn платежей, эти поля заполняет пользователь в форме оплаты.
В случае осуществления PayOut платежа, эти поля заполняет мерчант в момент создания заявки.

Структура динамических полей прикрепленных к методу:

Название параметра Тип Описание
type String Тип поля (email, phone, card, card-mask, card-number, name)
required Bool Является ли поле обязательным для заполнения
validate_key String Идентификатор валидации поля (может быть использован фронтэндом для внедрения валидации поля на форме оплаты)
filling_type String Тип заполнения поля (before_creation, after_creation)
value String Если поле уже было заполнено пользователем, то в этом параметре вернется значение

Описание полей:

Название поля Тип заполнения Описание Пример
card-mask before_creation маска карты пользователя { key: “card-mask”, value: { value: “4242********4242” } }
card-number before_creation полный номер карты пользователя { key: “card- number”, value: { value: “42424242424242” } }
email before_creation электронная почта пользователя { key: “email”, value: { value: “abc@gmail.com” } }
phone before_creation номер телефона пользователя { key: “phone”, value: { value: “79221110500” } }
name before_creation имя клиента { key: “name”, value: { value: “Alexey Fomin” } }
card before_creation полные данные карты { key: “card”, value: { card: “4242424242424242”, year: “26”, month: “05”, cvv: 053 } }

Тестирование интеграции

Для PayIn и PayOut платежей доступен тестовый метод, для того чтобы протестировать работоспособность системы. Чтобы включить тестовый метод, обратитесь к саппорту.

После включения тестового метода, в форме оплаты на первом шаге, будет доступен метод с иконкой “шестеренки”, логика этого метода и заполняемые поля ни чем не отличаются от других методов. Чтобы платеж прошел по определенному сценарию, на втором шаге в поле ввода маски карты, нужно ввести одно из значений приведенных ниже.

Обратите внимание, что платежи совершенные через тестовый метод, не имеют никакого влияния на Ваш кошелек.

Список карт со статусами для PayIn операций:

Номер карты Статус Описание
4242********4242 100 (Success) Платеж завершится успешно
5151********5151 -1 (Expired) Платеж завершится с ошибкой (просрочен)
4444********4444 -2 (Rejected) Платеж завершится с ошибкой (отклонен)
5252********5252 -3 (Failed) Платеж завершится с ошибкой

Список карт со статусами для PayOut операций:

Номер карты Статус Описание
4400000000000008 100 (Success) Платеж завершится успешно
5555555555554444 -1 (Expired) Платеж завершится с ошибкой (просрочен)
4002690000000008 -2 (Rejected) Платеж завершится с ошибкой (отклонен)
4000020000000000 -3 (Failed) Платеж завершится с ошибкой

Описание API

Для осуществления апи запросов нужен API ключ. Найти его можно в настройках профиля.

URL для апи запросов: https://api.safepays.io

API ключ передается в заголовке:

x-api-token: YOUR_API_TOKEN

Общие запросы

Получить балансы кошельков

Authorizations:
x-api-token

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "string"
}

Получить список доступных методов

Authorizations:
x-api-token

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

PayIn операции

Получить данные о PayIn операции по ID

Authorizations:
x-api-token
path Parameters
internal_id
required
string

ID платежа

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Получение списка PayIn операций

Authorizations:
x-api-token
query Parameters
sort_dir
string
Example: sort_dir=ASC

Порядок сортировки (по возрастанию/по убыванию по времени создания заявки)

page
integer
Example: page=1

Номер страницы

page_limit
integer
Example: page_limit=15

Количество записей на 1 странице

internal_id[]
Array of integers
Example: internal_id[]=10&internal_id[]=11

ID платежа в нашей системе

merchant_order_id[]
Array of strings
Example: merchant_order_id[]=MERCHANT_ORDER_ID

ID платежа в системе мерчанта

amount_from
integer
Example: amount_from=50000

Сумма платежа от (включительно)

amount_to
integer
Example: amount_to=150000

Сумма платежа до (включительно)

status
Array of integers
Example: status=100&status=200

Статус платежа

created_from
string
Example: created_from=30/12/2022

Дата создания заявки от (формат: DD/MM/YYYY)

created_to
string
Example: created_to=31/12/2022

Дата создания заявки до (формат: DD/MM/YYYY)

finished_from
string
Example: finished_from=30/12/2022

Дата завершения заявки от (формат: DD/MM/YYYY)

finished_to
string
Example: finished_to=31/12/2022

Дата завершения заявки до (формат: DD/MM/YYYY)

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

PayOut операции

Создать запрос на вывод средств пользователю

Authorizations:
x-api-token
Request Body schema: application/json
order_id
string

ID платежа в вашей системе

amount
integer

Сумма платежа в наименьшем номинале валюты

currency
string

Валюта платежа

method_id
string

Идентификатор PayOut метода

fields_data
Array of objects

Динамические поля платежа (см. секцию Динамические поля)

Responses

Request samples

Content type
application/json
{
  • "order_id": "MERCHANT_ORDER_ID",
  • "amount": 500000,
  • "currency": "RUB",
  • "method_id": "TESTB_RUB",
  • "fields_data": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Получить данные о PayOut операции по ID

Authorizations:
x-api-token
path Parameters
internal_id
required
string

ID платежа

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Получение списка PayOut операций

Authorizations:
x-api-token
query Parameters
sort_dir
string
Example: sort_dir=ASC

Порядок сортировки (по возрастанию/по убыванию по времени создания заявки)

page
integer
Example: page=1

Номер страницы

page_limit
integer
Example: page_limit=15

Количество записей на 1 странице

internal_id[]
Array of integers
Example: internal_id[]=10&internal_id[]=11

ID платежа в нашей системе

merchant_order_id[]
Array of strings
Example: merchant_order_id[]=MERCHANT_ORDER_ID

ID платежа в системе мерчанта

amount_from
integer
Example: amount_from=50000

Сумма платежа от (включительно)

amount_to
integer
Example: amount_to=150000

Сумма платежа до (включительно)

status
Array of integers
Example: status=100&status=200

Статус платежа

created_from
string
Example: created_from=30/12/2022

Дата создания заявки от (формат: DD/MM/YYYY)

created_to
string
Example: created_to=31/12/2022

Дата создания заявки до (формат: DD/MM/YYYY)

finished_from
string
Example: finished_from=30/12/2022

Дата завершения заявки от (формат: DD/MM/YYYY)

finished_to
string
Example: finished_to=31/12/2022

Дата завершения заявки до (формат: DD/MM/YYYY)

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Выплаты

Получение курса обмена фиата

Получить актуальный курс обмена фиата в криптовалюту под вывод

Authorizations:
x-api-token
Request Body schema: application/json
merchant_wallet_id
uuid

Идентификатор фиатного кошелька мерчанта (список кошельков с идентификаторами можно получить используя запрос Получить балансы кошельков)

amount
string

Сумма для которой нужно получить обменный курс в наименьшем эквиваленте валюты

Responses

Request samples

Content type
application/json
{
  • "merchant_wallet_id": null,
  • "amount": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Создание запроса на выплату в криптовалюте

Authorizations:
x-api-token
Request Body schema: application/json
merchant_wallet_id
uuid

Идентификатор фиатного кошелька мерчанта (список кошельков с идентификаторами можно получить используя запрос Получить балансы кошельков)

amount
string

Сумма для которой нужно получить обменный курс в наименьшем эквиваленте валюты

crypto_address
string

Адрес кошелька USDT TRC20

Responses

Request samples

Content type
application/json
{
  • "merchant_wallet_id": null,
  • "amount": "string",
  • "crypto_address": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Клиенсткие запросы

Инициализация PayIn заявки

Request Body schema: application/json
m
integer

ID магазина в нашей системе [Входит в подпись]

oa
integer

Сумма платежа в наименьшем номинале валюты [Входит в подпись]

o
string

ID платежа в вашей системе [Входит в подпись]

cr
string

Валюта платежа (Доступные валюты: RUB, KZT, UZS, UAH) [Входит в подпись]

success_url
string

URL куда переадресовать пользователя после успешной оплаты (Если не заполнено, значение берется из настроек магазина. Данный параметр в приоритете для редиректа) [Входит в подпись если указано значение]

fail_url
string

URL куда переадресовать пользователя после неуспешной оплаты (Если не заполнено, значение берется из настроек магазина. Данный параметр в приоритете для редиректа) [Входит в подпись если указано значение]

method_id
string

Предвыбранный идентификатор метода, без возможности его изменения на форме оплаты. [Этот параметр может быть опционально включен в подпись]

fp
string

Отпечаток пользователя, обязательный параметр для определенных методов оплаты (уточняйте у менеджера) [Входит в подпись если указано значение]

s
string

Подпись сгенерированная с помощью “first_secret”

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Создание PayIn заявки

Request Body schema: application/json
m
integer

ID магазина в нашей системе [Входит в подпись]

oa
integer

Сумма платежа в наименьшем номинале валюты [Входит в подпись]

o
string

ID платежа в вашей системе [Входит в подпись]

cr
string

Валюта платежа (Доступные валюты: RUB, KZT, UZS) [Входит в подпись]

success_url
string

URL куда переадресовать пользователя после успешной оплаты [Входит в подпись если указано значение]

fail_url
string

URL куда переадресовать пользователя после неуспешной оплаты [Входит в подпись если указано значение]

method_id
string

Пред выбранный идентификатор метода, без возможности его изменения на форме оплаты. [Этот параметр может быть опционально включен в подпись]

fields_data
Array of objects

Заполненные динамические поля для выбранного метода (поля с типом заполнения=before_creation) (см. cекцию: Динамические поля)

fp
string

Отпечаток пользователя, обязательный параметр для определенных методов оплаты (уточняйте у менеджера) [Входит в подпись если указано значение]

s
string

Подпись сгенерированная с помощью “first_secret” (такая же подпись как и при инициализации)

Responses

Request samples

Content type
application/json
{
  • "m": 1,
  • "oa": 501253,
  • "o": "my_id1",
  • "cr": "RUB",
  • "method_id": "TESTB_RUB",
  • "fields_data": [
    ],
  • "fp": "dc4c84e3b37cd60db7d72e12d4df8b64",
  • "s": "cc59bcd6c43f3e78e4327ef91e413ee978bc8a3f"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Получение информации о PayIn платеже

path Parameters
operationHash
required
string

Идентификатор платежа (hash)

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Получение статуса PayIn платежа

path Parameters
operationHash
required
string

Идентификатор платежа (hash)

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Отмена PayIn платежа пользователем

path Parameters
operationHash
required
string

Идентификатор платежа (hash)

Responses

Response samples

Content type
application/json
{
  • "data": true,
  • "message": "string"
}

Подтверждение PayIn платежа пользователем

path Parameters
operationHash
required
string

Идентификатор платежа (hash)

Request Body schema: application/json
fields_data
Array of objects

Заполненные динамические поля для выбранного метода (поля с типом заполнения=after_creation) (см. cекцию: Динамические поля)

Responses

Request samples

Content type
application/json
{
  • "fields_data": [
    ]
}

Response samples

Content type
application/json
{
  • "data": true,
  • "message": "string"
}

Прикрепление чека и комментария к PayIn заявке

Прикрепление чека и комментария к PayIn заявке создаст арбитраж

path Parameters
operationHash
required
string

Идентификатор платежа (hash)

Request Body schema: multipart/form-data
attachment
string <binary>

Прикрепленный файл (jpg|jpeg|png|pdf)

comment
string

Комментарий

should_notify_merchant
boolean

Если установлено "true", то мерчант получит уведомление когда арбитраж будет закрыт
Подробнее смотрите в разделе Оповещения об арбитражах

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string"
}

Редирект пользователя обратно к мерчанту

path Parameters
operationHash
required
string

Идентификатор платежа (hash)

Responses