CreateInvoice (Live)
Формирует счет на оплату одной или нескольких кампаний в формате HTML.
При вызове метода указывают одну или несколько кампаний и суммы к оплате, отражаемые в счете. Метод возвращает URL счета на оплату. Получить счет может пользователь, от лица которого вызван метод (пользователю необходимо авторизоваться в Яндексе).
Прямые рекламодатели могут формировать счет на оплату, только если кампания одобрена модератором (см. параметр кампании StatusModerate).
Рекомендации и ограничения
Рекомендуется формировать счета на оплату как можно меньшим количеством вызовов метода CreateInvoice в сутки. Данная рекомендация нацелена на повышение производительности API Яндекс Директа. С точки зрения производительности, лучше сформировать один счет на оплату для нескольких кампаний, чем вызывать метод несколько раз для формирования отдельных счетов на оплату.
Ниже перечислены ограничения на вызов метода:
- один пользователь может вызвать метод 1000 раз в сутки;
- для одной кампании возможно не более 30 финансовых операций в сутки, включая формирование счетов на оплату (CreateInvoice (Live)), перевод средств (TransferMoney (Live)), оплату с отсрочкой (PayCampaigns (Live));
Превышение указанных лимитов вызывает ошибку с кодом 56.
Валютные ограничения
Все кампании, указанные в одном вызове метода, должны быть в одной валюте.
Суммы к оплате (параметр Sum) можно указывать в валюте кампаний (задав соответствующее значение параметра Currency). Все суммы должны быть указаны в одной валюте.
Новое в версии Live 4
Входной параметр Currency стал обязательным.
Добавлен входной параметр Currency.
Входные данные
Ниже показана структура входных данных в формате JSON.
{
"method": "CreateInvoice",
"finance_token": (string),
"operation_num": (int),
"param": {
/* CreateInvoiceInfo */
"Payments": [
{ /* PayCampElement */
"CampaignID": (int),
"Sum": (float),
"Currency": (string)
}
...
]
}
}
Ниже приведено описание параметров.
Параметр | Описание | Требуется |
Объект CreateInvoiceInfo | ||
---|---|---|
Payments | Массив объектов PayCampElement. Каждый объект указывает кампанию и сумму, отражаемую в счете на оплату. | Да |
Объект PayCampElement | ||
CampaignID | Идентификатор кампании. | Да |
Sum | Сумма оплаты в валюте, указанной в параметре Currency. При выставлении счета сумма округляется по математическим правилам с точностью до второго знака после запятой (для всех валют, в том числе тенге). Значение в реальной валюте должно включать НДС клиента. Минимальное допустимое значение можно получить с помощью метода Dictionaries.get API версии 5, указав в запросе имя справочника Currencies. | Да |
Currency | Валюта, в которой указана сумма. Возможные значения: RUB, CHF, EUR, KZT, TRY, UAH, USD, BYN. Значение должно совпадать с валютой кампании, в противном случае возвращается ошибка с кодом 245. | Да |
Параметр | Описание | Требуется |
Объект CreateInvoiceInfo | ||
---|---|---|
Payments | Массив объектов PayCampElement. Каждый объект указывает кампанию и сумму, отражаемую в счете на оплату. | Да |
Объект PayCampElement | ||
CampaignID | Идентификатор кампании. | Да |
Sum | Сумма оплаты в валюте, указанной в параметре Currency. При выставлении счета сумма округляется по математическим правилам с точностью до второго знака после запятой (для всех валют, в том числе тенге). Значение в реальной валюте должно включать НДС клиента. Минимальное допустимое значение можно получить с помощью метода Dictionaries.get API версии 5, указав в запросе имя справочника Currencies. | Да |
Currency | Валюта, в которой указана сумма. Возможные значения: RUB, CHF, EUR, KZT, TRY, UAH, USD, BYN. Значение должно совпадать с валютой кампании, в противном случае возвращается ошибка с кодом 245. | Да |
Результирующие данные
При успешном выполнении метод возвращает URL счета на оплату, как показано ниже. В противном случае возвращается сообщение об ошибке.
{
"data": "https://passport.yandex.ru/passport?mode=subscribe&from=balance&retpath=http%3A%2F%2Fbalance.yandex.ru%2Fpaypreview.xml%3Frequest_id%3D14062489%26ref_service_id%3D7%26ui_type%3Dstd"
}
Примеры входных данных
Python
{
'Payments': [
{'CampaignID': 3193279, 'Sum': 50000.0, 'Currency': 'RUB'},
{'CampaignID': 3193244, 'Sum': 1200.0, 'Currency': 'RUB'}
]
}
PHP
array(
'Payments' => array(
array('CampaignID' => 3193279, 'Sum' => 50000.0, 'Currency' => 'RUB'),
array('CampaignID' => 3193244, 'Sum' => 1200.0, 'Currency' => 'RUB')
)
)
Perl
{
'Payments' => [
{'CampaignID' => 3193279, 'Sum' => 50000.0, 'Currency' => 'RUB'},
{'CampaignID' => 3193279, 'Sum' => 1200.0, 'Currency' => 'RUB'}
]
}