Перейти к содержанию

Создание, редактирование операции по расписанию


Описание

Используется для создания и редактирования операции по расписанию.

POST (Уровень доступа: Базовый)

https://api.intellectmoney.ru/personal/scheduler/setScheduledOperationData

Заголовки запроса

Параметр Свойства Описание
Accept STRING OPTIONAL application/json Заголовок, указывающий формат данных, которые клиент хочет получить от сервера.
Content-Type STRING OPTIONAL application/json application/xml Заголовок, указывающий формат данных в теле запроса.
Authorization STRING REQUIRED Bearer {token} Заголовок, используемый для аутентификации клиента с помощью Bearer токена.
Подробнее об использование Bearer токена.
Sign STRING REQUIRED Заголовок с подписью для аутентификации запроса.

Сигнатура подписи:
UserToken::::::Operation::ObjectId::ObjectTypeVal::ParamsJson::RepeatPlan::RetryOnFailPlan::RetryOnFailCount::IsSingle::FireOnSkip::State::::::EndExecDate::SignSecretKey

Тело запроса

Параметр Свойства Описание
UserToken STRING REQUIRED Токен пользователя.
Для получения использовать метод GetUserToken.
Operation STRING CONDITION guid Номер операции по расписанию.
Используется для редактирования операции, если параметр не передать - создается новая операция.
Условия:
  • Передается обязательно при редактировании операции.
  • Не передается в остальных случаях.
ObjectId STRING CONDITION 3xxxxxxxxx Номер исходного СКО.
Для получения использовать:
  • Метод CreateInvoice.
  • Параметр PaymentId из Вебхука.
  • Параметр SourceInvoiceId из Вебхука - доступен только для СКО, созданных операцией по расписанию.
Условия:
  • Передается обязательно при создание операции.
  • Передается по усмотрению при редактирование операции.
  • Не передается в остальных случаях.
ObjectTypeVal STRING REQUIRED 1 Тип операции по расписанию.
Всегда единица.
ParamsJson OBJECT REQUIRED Параметры СКО.
Параметры необходимые операции по расписанию для создания СКО.
RepeatPlan STRING OPTIONAL План выполнения.
Задается в одном из двух форматов:
  1. Cron-выражение позволяет задавать сложные периоды выполнения операции.
    Пример запуска операции каждый день в 12:00 часов: 0 0 12 1/1 * ? *
    Для создания можно использовать онлайн-инструмент CronMaker.
  2. JSON поддерживает указание даты начала и периодов выполнения операции в удобочитаемом формате.
    Пример первого списания в 18:50 22 ноября 2023 года, последующие списания раз в 30 дней: { "StartAt": "2023-11-22T18:50:00+03:00", "PeriodLength": 30, "PeriodType": "Day" }
    Допустимые значения: Day, Week, Month.
Запуск по требованию.
Если параметр не передан, то план выполнения отменяется, операция запускается один раз текущей датой и временем, после чего статус операции меняется на "Выключен".
RetryOnFailPlan STRING CONDITION План выполнения при ошибке.
Определяет, с какой частотой система будет автоматически повторять операцию в случае её неудачного выполнения.
Например, если указать значение 5 минут, система будет пытаться повторить операцию каждые 5 минут до тех пор, пока она не завершится успешно или не достигнет лимита параметра RetryOnFailCount.
Форматы:
  • Cron-выражение: 0 0/5 * 1/1 * ? *
  • JSON: { "PeriodLength": 5, "PeriodType": "Minute" }
    Допустимые значения: Minute, Hour, Day, Week, Month.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.
RetryOnFailCount STRING CONDITION number Количество повторов выполнения при ошибке.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.
IsSingle STRING CONDITION 0-1 Флаг, указывающий возможность параллельного выполнения операции.
Допустимые значения:
  • 0 - новая запланированная операция не будет запущена, пока не закончена предыдущая.
  • 1 - запланированная операция запускается независимо от статуса предыдущей.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.
FireOnSkip STRING CONDITION 0-1 Флаг, указывающий необходимость создания всех запланированных операций, в случае непредвиденного пропуска операции.
Допустимые значения:
  • 0 - не создавать пропущенные, ранее запланированные операции.
  • 1 - создать пропущенные, ранее запланированные операции.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.
State STRING REQUIRED 0-1 Флаг, указывающий статус активности операции.
Допустимые значения:
  • 0 - операция выполняется.
  • 1 - операция не выполняется.
    Ранее запланированные операции будут выполнены.
EndExecDate STRING CONDITION yyyy-MM-dd HH:mm:ss Дата окончания
По достижению данной даты операция выполняться не будет.
Параметр State изменит значение на 1.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.

Тело ответа

Поле Тип Описание
OperationState OperationState Статус выполнения операции.
OperationId GUID Идентификатор операции.
EshopId INT Номер магазина.
Result SetScheduledOperationData Результат выполнения запроса.
Примеры кода
C#
var client = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Post, "https://api.intellectmoney.ru/personal/scheduler/setScheduledOperationData");

request.Headers.Add("Accept", "application/json");
request.Headers.Add("Content-Type", "application/json");
request.Headers.Add("Authorization", "Bearer 9d97820c61424eb6ac0db414ccb7ac60");
request.Headers.Add("Sign", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");

var collection = new List<KeyValuePair<string, string>>();
collection.Add(new("UserToken", "YdUlqkFcVo62XmY6B9VLJXCoAeA/0fJPxD4/kUUGmwHf5kgBa12MrKUyJd8uO0za"));
collection.Add(new("ObjectId", "3000000000"));
collection.Add(new("ObjectTypeVal", "1"));
collection.Add(new("ParamsJson", "{    \"Amount\": 10.00,    \"ServiceName\": \"Подписка\",    \"OrderId\": \"Покупка №50\",    \"MerchantReceipt\": null}"));
collection.Add(new("RepeatPlan", "0 0 12 1/1 * ? *"));
collection.Add(new("RetryOnFailPlan", "{ "PeriodLength": 5, "PeriodType": "Minute" }"));
collection.Add(new("RetryOnFailCount", "10"));
collection.Add(new("IsSingle", "0"));
collection.Add(new("FireOnSkip", "0"));
collection.Add(new("State", "0"));
collection.Add(new("EndExecDate", "2050-01-01 00:00:00"));
var content = new FormUrlEncodedContent(collection);
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.intellectmoney.ru/personal/scheduler/setScheduledOperationData',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => 'UserToken=YdUlqkFcVo62XmY6B9VLJXCoAeA/0fJPxD4/kUUGmwHf5kgBa12MrKUyJd8uO0za&ObjectId=3000000000&ObjectTypeVal=1&ParamsJson={    \"Amount\": 10.00,    \"ServiceName\": \"Подписка\",    \"OrderId\": \"Покупка №50\",    \"MerchantReceipt\": null}&RepeatPlan=0 0 12 1/1 * ? *&RetryOnFailPlan={ "PeriodLength": 5, "PeriodType": "Minute" }&RetryOnFailCount=10&IsSingle=0&FireOnSkip=0&State=0&EndExecDate=2050-01-01 00:00:00',
    CURLOPT_HTTPHEADER => array(
        'Accept: application/json',
        'Content-Type: application/json',
        'Authorization: Bearer 9d97820c61424eb6ac0db414ccb7ac60',
        'Sign: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Пример ответов
JSON
{
    "OperationState": {
        "Code": 0,
        "Desc": "Успешно обработан"
    },
    "Result": {
        "State": {
            "Code": 0,
            "Desc": "Успешно обработан"
        },
        "ScheduledOperation": {
            "CronOperationId": "1d3cf0ea-b038-48d1-913c-fc94017c87e7",
            "ObjectId": 3181047635,
            "CronOperationType": "Recurring",
            "Params": "{    \"Amount\": 10.00,    \"ServiceName\": \"Подписка\",    \"OrderId\": \"Покупка 1\",    \"MerchantReceipt\": null}",
            "CreationDate": "2025-02-12T11:14:30.383224+03:00",
            "ChangeDate": "2025-02-12T11:14:30.383224+03:00",
            "LastExecDate": "2025-02-12T11:14:30.383224+03:00",
            "FireOnSkip": false,
            "IsSingle": false,
            "CronOperationState": "Disable"
        }
    }
}
JSON
{
    "OperationState": {
        "Code": 2,
        "Desc": "Ошибка"
    },
    "Result": {
        "State": {
            "Code": 3,
            "Desc": "ParamsJson: Неверное значение параметра ParamsJson."
        }
    }
}