API выверки выставленных счетов версии 2 (GA)
Центр партнеров (недоступен в Azure для государственных организаций или Azure China 21Vianet) применяется к:
Общие сведения об архитектуре
Новый асинхронный API предлагает значительные улучшения в том, как мы обрабатываем доступ к данным выставления счетов и выверки. Этот подход устраняет проблемы, связанные с традиционными синхронными методами, такими как обслуживание длительных подключений и обработка больших пакетов данных. Ниже приведены основные преимущества и механизмы этого API:
Ключевые компоненты
Безопасный доступ с помощью шаблона ключа valet
Шаблон ключа валета обеспечивает безопасный и ограниченный доступ к данным биллинга. Аналогично тому, как служебный ключ позволяет кому-то управлять автомобилем без доступа к багажнику, этот шаблон обеспечивает детализированный контроль доступа. Вместо использования общих учетных данных токен совместного доступа (SAS) предоставляет ограниченный по времени доступ к определённым ресурсам. Этот шаблон снижает риск несанкционированного доступа, настраивая точные сроки действия и разрешения доступа.
Повышение эффективности с помощью асинхронного шаблона ответа на запрос
Подумайте об этом, как о заказе в оживлённом ресторане. Вместо того чтобы ждать у стойки, вы получаете зуммер и можете заниматься другими делами, пока готовится ваш заказ. Когда данные будут готовы, система уведомляет вас.
Асинхронный характер API означает, что вы выполняете запрос и система обрабатывает его в фоновом режиме. Это асинхронный запрос-ответ эффективно использует ресурсы, снижает нагрузку на сервер и минимизирует тайм-ауты и сбои, которые часто встречаются при синхронном извлечении данных.
Гибкость в разрешениях доступа к данным
Маркеры SAS обеспечивают гибкость в управлении разрешениями доступа к данным. Вы можете создавать токены, предоставляющие доступ ко всем атрибутам данных согласования выставленных счетов или ограничить доступ к определенным подмножествам. Эта степень детализации позволяет организациям адаптировать доступ к данным в соответствии с внутренними политиками и нормативными требованиями, повышая безопасность и соответствие требованиям.
Упрощенный рабочий процесс и улучшенное время обработки данных
Шаблон асинхронного ответа на запрос упрощает обработку данных, позволяя динамический доступ вместо фиксированных пакетов из 2000 элементов строки. Такой подход приводит к более быстрым результатам и улучшению времени обработки, упрощая интеграцию данных выставления счетов и выверки в существующие системы и рабочие процессы.
Преимущества
преимущества производительности
Вместо поддержания длительных подключений и обработки фиксированных пакетов новая система позволяет:
Выполните быстрый первоначальный запрос.
Получите маркер безопасного доступа.
Обрабатывайте данные в своём темпе.
Доступ именно к тому, что вам нужно, когда это необходимо.
улучшения безопасности
Шаблон ключа valet, реализованный с помощью маркеров SAS, предоставляет следующие возможности:
Ограниченный доступ по времени.
Ограниченные разрешения.
Устранение общего доступа или хранения постоянных учетных данных.
Мелкозернистое управление доступом.
Архитектурные преимущества
Шаблон асинхронного запроса-ответа действует как личный помощник, который:
Принимает ваш запрос.
Обрабатывает задачу в фоновом режиме.
Уведомляет вас, когда все готово.
Внедрение оптимизированных API для повышения производительности
Использование этих оптимизированных API упрощает рабочий процесс и повышает общую производительность управления данными. Используя безопасный контроль доступа и эффективные механизмы извлечения, вы достигаете лучшие результаты с меньшими усилиями, что приводит к повышению эффективности работы.
В заключение, новый асинхронный API для доступа к данным выставления счетов и выверки через Azure blobs является мощным инструментом. Он обеспечивает безопасный, эффективный доступ к финансовым данным, упрощение рабочих процессов, снижение нагрузки сервера и улучшение времени обработки, все с высоким уровнем безопасности и соответствия требованиям.
Примечание.
Новый API не размещен на узле API Центра партнеров. Вместо этого вы можете найти это на платформе Microsoft Graph: используйте API Microsoft Graph, чтобы экспортировать данные о выставлении счетов для партнеров — версия 1.0. Чтобы получить доступ к этому API, ознакомьтесь со следующими сведениями.
Разрешить приложению безопасно получать доступ к данным о выставлении счетов партнера
Чтобы разрешить приложению доступ к данным о выставлении счетов партнера, следуйте этой ссылке и ознакомьтесь с основами проверки подлинности и авторизации MicrosoftGraph. Этот шаг имеет решающее значение, так как это гарантирует, что ваше приложение может безопасно получить доступ к необходимым данным.
Зарегистрируйте ваше приложение и назначьте разрешение PartnerBilling.Read.All
Вы можете назначить разрешение "PartnerBilling.Read.All" с помощью портала Azure или центра администрирования Microsoft Entra. Выполнив эти действия, вы можете убедиться, что ваше приложение имеет необходимый доступ к данным о выставлении счетов партнера. Это делается следующим образом:
- Зарегистрируйте приложение на домашней странице Microsoft Entra в разделе Регистрация приложений.
- Предоставьте необходимое разрешение, перейдя на страницу приложения Microsoft Entra. В разделе разрешений API выберите Добавить разрешение и выберите область PartnerBilling.Read.All.
Сведения о ключевых конечных точках API
Чтобы получить асинхронные элементы выверки выставленных счетов о выставлении счетов, мы предлагаем две ключевые конечные точки API. Эти конечные точки помогают эффективно управлять процессом выверки счетов. Выполните это упрощенное руководство, чтобы быстро приступить к работе.
Используйте конечную точку выверки выставленного счета
Во-первых, используйте этот API для получения новых выставленных счетов, выставленных на выверку счетов. При выполнении запроса вы получаете состояние HTTP 202 и заголовок расположения с URL-адресом. Регулярно опросите этот URL-адрес, пока не получите состояние успешного выполнения и URL-адрес манифеста.
Используйте конечную точку статуса операции
Затем продолжайте проверять состояние операции, вызывая этот API через регулярные интервалы. Если данные не готовы, ответ включает заголовок Retry-After , указывающий, как долго ждать, прежде чем повторить попытку. После завершения операции вы получите манифест-ресурс со ссылкой на папку для загрузки данных об использовании. Ответ сегментирует файлы, чтобы повысить пропускную способность и разрешить параллелизм ввода-вывода.
Просмотр схемы последовательности
Ниже приведена схема последовательности, на которую показано, как скачать новые данные о выверки торгового счета.
Следуйте последовательности действий пользователя, чтобы получить данные выверки выставленных счетов
Ниже приведена последовательность действий пользователя для получения данных выверки выставленных счетов:
- Отправить запрос POST
- Проверить состояние запроса
- Скачивание элементов строки выверки из хранилища BLOB-объектов Azure
Отправка запроса POST
Отправьте запрос POST в конечную точку API.
Получение элементов линии выверки выставленного счета
Получить элементы строки сверки выставленных счетов.
Запрос API
POST https://graph.microsoft.com/v1.0/reports/partners/billing/reconciliation/billed/export
Accept: application/json
Content-Type: application/json
{
"invoiceId": "G016907411",
"attributeSet": "basic"
}
Параметры запроса
Н/П
Текст запроса
Атрибут | Обязательное поле | Type | Описание |
---|---|---|---|
attributeSet | False | Строка | Выберите "полный" для всех атрибутов или "базовый" для ограниченного набора. Если значение по умолчанию не указано, значение full. Проверьте список атрибутов в этом разделе. Необязательно. |
invoiceId | Истина | Строка | Уникальный идентификатор для каждого счета. Необходимые. |
Заголовки запросов
Заголовок запроса для API, выполнив действия, описанные в рекомендациях по использованию Microsoft Graph. Следуя этим рекомендациям, вы гарантируете надежность и поддержку приложения. Ваше внимание на этом шаге имеет решающее значение для простой интеграции и оптимальной производительности.
Ответ API
HTTP/1.1 202 Accepted
Location: <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
API обычно отвечает с состоянием HTTP 202. Вы также можете столкнуться с другими статусами в зависимости от ваших запросов. Эти состояния перечислены в разделе состояния ответа API "Стандартный".
Код | Описание |
---|---|
202 — принято | Ваш запрос был принят. Чтобы проверить состояние запроса, запросите URL-адрес, указанный в заголовке расположения. |
Проверка состояния запроса
Чтобы отслеживать состояние запроса, убедитесь, что вы получите ответ HTTP 200, который является стандартным кодом состояния, указывающим на "успешно" или "сбой". В случае успешного выполнения вы найдете URL-адрес манифеста в атрибуте resourceLocation. Этот атрибут предоставляет конечную точку для доступа к необходимым сведениям.
Получение состояния операции
Извлекает состояние запроса.
Запрос API
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Параметры запроса
Имя. | Включение в | Обязательное поле | Type | Описание |
---|---|---|---|---|
operationId | URI запроса | Истина | Строка | Уникальный идентификатор для проверки состояния запроса. Необходимые. |
Заголовок запроса
Заголовок запроса для API, выполнив действия, описанные в рекомендациях по использованию Microsoft Graph. Следуя этим рекомендациям, вы гарантируете надежность и поддержку приложения. Ваше внимание на этом шаге имеет решающее значение для простой интеграции и оптимальной производительности.
Текст запроса
Недоступно
Состояние ответа
Помимо стандартных состояний HTTP, перечисленных в состояниях ответа API уровня "Стандартный", API также может возвращать следующее состояние HTTP:
Код | Описание |
---|---|
410 – Ушло | Срок действия ссылки манифеста истекает после заданного времени. Чтобы снова получить ссылку манифеста, отправьте новый запрос. |
Полезные данные ответа
Полезные данные ответа API включают следующие атрибуты:
Атрибут | Обязательное поле | Описание |
---|---|---|
id | Истина | Уникальный идентификатор для каждого ответа Необходимые. |
статус | Истина |
Значения и действия: обязательный. не начато: дождитесь указанного времени ожидания в заголовке Retry-After, а затем сделайте повторный запрос для проверки состояния. выполнение операции: подождите указанное время в заголовке "Retry-After", затем повторите запрос для проверки состояния. Выполнено успешно: данные готовы. Извлеките полезные данные манифеста с помощью URI, указанного в resourceLocation. сбой: операция не удалось окончательно. Перезапустите его. |
createdDateTime | Истина | Время выполнения запроса. Необходимые. |
lastActionDateTime | Истина | При последнем изменении состояния. Необходимые. |
resourceLocation | False | Универсальный код ресурса (URI) для полезных данных манифеста. Необязательно. |
error | False | Сведения о любых ошибках, предоставляемых в формате JSON. Необязательно. Атрибуты включены: сообщение: описание ошибки. код: тип ошибки. |
Объект расположения ресурсов
Атрибут | Описание |
---|---|
id | Уникальный идентификатор манифеста. |
schemaVersion | Версия схемы манифеста. |
dataFormat | Формат файла данных выставления счетов. compressedJSON: формат данных, в котором каждый большой двоичный объект представляет собой сжатый файл, содержащий данные в формате строк JSON . Чтобы получить данные из каждого большого двоичного объекта, распаковите его. |
createdDateTime | Дата и время создания файла манифеста. |
eTag | Версия данных манифеста. Новое значение создается всякий раз при изменении сведений о выставлении счетов. |
partnerTenantId | Идентификатор Microsoft Entra клиента партнера. |
rootDirectory | Корневой каталог файла. |
sasToken | Маркер SAS (подписанный URL-адресом), позволяющий считывать все файлы в каталоге. |
partitionType | Делит данные на несколько больших двоичных объектов на основе атрибута partitionValue . Система разделяет секции, превышающие поддерживаемую цифру. По умолчанию данные секционируются на основе количества элементов строки в файле. Избегайте жёсткой кодировки количества строк или размеров файлов, так как они могут измениться. |
BLOBCount | Общее количество файлов для этого идентификатора клиента партнера. |
большие двоичные объекты | Массив JSON объектов "BLOB-объектов", содержащий сведения о файле для идентификатора клиента партнера. |
большой двоичный объект | Объект, содержащий следующие сведения: name и partitionValue |
name | Имя большого двоичного объекта. |
partitionValue | Раздел, содержащий файл. Большой раздел разделен на несколько файлов на основе определенных критериев, таких как размер файла или количество записей, и каждый файл содержит один и тот же "partitionValue". |
Запрос API
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Ответ API
Ответ рекомендует ждать 10 секунд, прежде чем повторить попытку при обработке данных.
HTTP/1.1 200 OK
Retry-After: 10
{
"id": "9ab9cb54-d07f-4f52-9ea6-a09d7de52c14",
"createdDateTime": "2022-06-1T10-01-03.4Z",
"lastActionDateTime": "2022-06-1T10-01-05Z",
"status": "running"
}
Запрос API
(через 10 секунд после предыдущего запроса...)
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
Ответ API
API возвращает состояние "успешно" и универсальный код ресурса (URI) для resourceLocation.
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/\$metadata#reports/partners/billing/operations/\$entity",
"@odata.type": "#microsoft.graph.partners.billing.exportSuccessOperation",
"id": "f2170b13-6a8e-47d6-b481-6988490dc0cb",
"createdDateTime": "2023-12-05T21:17:29Z",
"lastActionDateTime": "2023-12-05T21:18:00.8897902Z",
"status": "succeeded",
"resourceLocation": {
"id": "44e8500b-ab92-490e-8ac3-90500a1d3427",
"createdDateTime": "2023-11-06T19:58:47.513Z",
"schemaVersion": "2",
"dataFormat": "compressedJSON",
"partitionType": "default",
"eTag": "RwDrn7fbiTXy6UULE",
"partnerTenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"rootDirectory": "https://adlsreconbuprodeastus201.blob.core.windows.net/path_id",
"sasToken": "{token}",
"blobCount": 1,
"blobs": \[
{
"name": "part-00123-5a93fa5d-749f-48bc-a372-9b021d93c3fa.c000.json.gz",
"partitionValue": "default"
}
\]
}
}
Скачивание элементов линии выверки из хранилища BLOB-объектов Azure
Сначала необходимо получить токен общего доступа (SAS) и определить расположение хранилища блобов. Найдите эти сведения в свойствах sasToken
и rootDirectory
ответа API на данные манифеста.
Чтобы продолжить, выполните следующие действия.
- Скачайте файл Blob с помощью SDK или инструмента для хранения Azure.
- Распакуируйте файл, который находится в формате JSONLines.
Совет
Обязательно ознакомьтесь с нашим примером кода . Показано, как скачать и распаковать файл Blob Azure на локальный диск.
Стандартные состояния ответа API
Вы можете получить следующие состояния HTTP из ответа API:
Код | Описание |
---|---|
400 — недопустимый запрос | Запрос отсутствует или содержит неверные данные. Проверьте текст ответа для получения сведений об ошибке. |
401 — не авторизовано; | Перед первым вызовом требуется проверка подлинности. Проверка подлинности с помощью службы API партнера. |
403 — запрещено; | У вас нет необходимой авторизации для выполнения запроса. |
404 — не найден | Запрошенные ресурсы недоступны с предоставленными входными параметрами. |
410 – Ушло | Ссылка манифеста больше не действительна или активна. Отправьте новый запрос. |
500 — внутренняя ошибка сервера | API или его зависимости не могут выполнять запрос прямо сейчас. Повторите попытку позже. |
5000 — нет доступных данных | Система не имеет данных для предоставленных входных параметров. |
Сравнение базовых и полных атрибутов выверки счетов
Чтобы сравнить атрибуты, возвращаемые API выверки выставленных счетов для полных или базовых наборов атрибутов, см. в этой таблице. Дополнительные сведения об этих атрибутах и их значениях см. в разделе Использование файла выверки.
Атрибут | Полностью | Базовая |
---|---|---|
PartnerId | yes | yes |
CustomerId | yes | yes |
CustomerName | yes | yes |
CustomerDomainName | yes | no |
CustomerCountry | yes | no |
InvoiceNumber | yes | yes |
MpnId | yes | no |
Tier2MpnId | yes | yes |
ИД заказа | yes | yes |
Датазаказа | yes | yes |
ИД продукта | yes | yes |
SkuId | yes | yes |
AvailabilityId | yes | yes |
SkuName | yes | no |
НаименованиеПродукта | yes | yes |
ChargeType | yes | yes |
UnitPrice | yes | yes |
Количество | yes | no |
Промежуточный итог | yes | yes |
TaxTotal | yes | yes |
Итог | yes | yes |
Валюта | yes | yes |
PriceAdjustmentDescription | yes | yes |
PublisherName | yes | yes |
PublisherId | yes | no |
SubscriptionDescription | yes | no |
SubscriptionId | yes | yes |
ChargeStartDate | yes | yes |
ChargeEndDate | yes | yes |
TermAndBillingCycle | yes | yes |
EffectiveUnitPrice | yes | yes |
UnitType | yes | no |
AlternateId | yes | no |
BillableQuantity | yes | yes |
BillingFrequency | yes | no |
PricingCurrency | yes | yes |
PCToBCExchangeRate | yes | yes |
PCToBCExchangeRateDate | yes | no |
MeterDescription | yes | no |
ReservationOrderId | yes | yes |
CreditReasonCode | yes | yes |
SubscriptionStartDate | yes | yes |
SubscriptionEndDate | yes | yes |
ReferenceId | yes | yes |
ProductQualifiers | yes | no |
Рекламный идентификатор | yes | yes |
КатегорияПродукта | yes | yes |
Внимание
Каждое поле или имя атрибута начинается с буквы верхнего регистра, чтобы обеспечить согласованность с файлом и повысить удобочитаемость.
Пример кода
Если вам нужна помощь по миграции в этот API, обратитесь к ссылке, включающей пример кода C#.
примеры API для получения данных о выверке счетов из Партнерского центра.