帳單發票對帳 API v2 (GA)
適用於: 合作夥伴中心(主權雲端無法使用)
我們的新異步 API 提供更快速且更有效率的方式,可讓您透過 Azure Blob 存取帳單和對帳數據。 與其讓網路連接保持開啟數小時或處理 2,000 筆條目,你現在可以通過簡化工作流程、減少伺服器負載來改善資料處理時間。
新的 商務計費發票對帳 API 會使用進階技術,例如 代客密鑰 和 異步要求-回復 模式。 代客鑰匙模式允許在不共用認證的情況下安全地存取資源,而異步請求-回復模式可讓系統之間有效地通訊。
此 API 提供共用存取簽章 (SAS) 令牌,可讓您用來存取所有屬性或帳單發票對帳數據的子集。 此令牌藉由授與有限的時間存取權來增強安全性,並提供管理數據訪問許可權的彈性。
藉由採用優化的 API,您可以透過較少的工作來達成更快的結果、簡化數據存取,並提升整體效率。 採用這些工具,以更有效率地簡化工作流程及管理許可權。
注意
新的 API 不會裝載於合作夥伴中心 API 主機上。 相反地,您可以在 MS Graph 上找到它: 使用 Microsoft Graph API 導出合作夥伴帳單數據 - Microsoft Graph v1.0。 若要存取此 API,請參閱下列詳細數據。
重要
若要允許您的應用程式存取合作夥伴帳單數據,請遵循此連結並熟悉 Microsoft Graph 的驗證和授權基本概念。 此步驟非常重要,因為它可確保您的應用程式可以安全地存取必要的數據。
您可以使用 Azure 入口網站 或 Entra 系統管理中心來指派 “PartnerBilling.Read.All” 許可權。 方法如下:
- 在 [應用程式註冊] 區段底下的 [Microsoft Entra 首頁上註冊您的應用程式。
- 若要授與必要的許可權,請移至 [Microsoft Entra App] 頁面。 在 [API 許可權] 區段下,選取 [新增許可權],然後選擇 [PartnerBilling.Read.All] 範圍。
藉由完成這些步驟,您可以確定您的應用程式具有合作夥伴帳單數據的必要存取權。
API 概觀
為了協助您以異步方式擷取已 計費的新商務 發票對帳明細專案,我們提供兩個主要 API 端點。 請遵循此簡化的指南,快速且有效率地開始使用!
計費發票對帳端點
首先,使用此 API 來擷取 新的商務 帳單發票對帳明細專案。 當您提出要求時,您會收到 202 HTTP 狀態和具有 URL 的位置標頭。 定期輪詢此 URL,直到您取得成功狀態和指令清單 URL 為止。
作業狀態端點
接下來,定期呼叫此 API 來繼續檢查作業狀態。 如果數據尚未就緒,回應會包含 Retry-After 標頭,指出在再次嘗試之前要等候的時間。 作業完成後,您會收到具有記憶體資料夾連結的指令清單資源,以下載使用量數據。 回應會將檔案區隔以增強輸送量,並允許I/O平行處理原則。
遵循這些步驟,您可以有效率地管理發票對帳程式。
順序圖表
以下是一個順序圖,顯示下載新商務發票對帳數據的步驟。
用戶動作順序
若要擷取計費發票對帳數據,請遵循下列步驟:
步驟 1:提交要求
將 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"
}
查詢參數
N/A
要求本文
屬性 | 必要 | 類型 | 描述 |
---|---|---|---|
attributeSet | False | String | 針對有限的集合,選擇所有屬性的 [完整] 或 [基本]。 如果未指定,“full” 是預設值。 請檢查在此節中的 |
invoiceId | True | String | 每個發票的唯一標識碼。 必要。 |
要求標頭
使用使用 Microsoft Graph 的最佳作法中列出的步驟,要求 API 的標頭。 遵循這些指導方針,可確保應用程式的可靠性和支援。 在此步驟中,您對詳細數據的注意對於無縫整合和最佳效能至關重要。
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。 |
步驟 2:檢查要求狀態
若要追蹤要求的狀態,請確定您會收到 HTTP 200 回應,這是指出「成功」或「失敗」的標準狀態代碼。如果成功,您可以在 「resourceLocation」 屬性中找到指令清單 URL。 這個屬性提供存取必要資訊的端點。
取得作業狀態
擷取要求的狀態。
API 要求
GET <https://graph.microsoft.com/v1.0/reports/partners/billing/operations/9ab9cb54-d07f-4f52-9ea6-a09d7de52c14>
要求參數
名稱 | 包含於 | 必要 | 類型 | 描述 |
---|---|---|---|---|
operationId | 要求 URI | True | String | 檢查要求狀態的唯一標識碼。 必要。 |
要求標頭
使用使用 Microsoft Graph 的最佳作法中列出的步驟,要求 API 的標頭。 遵循這些指導方針,可確保應用程式的可靠性和支援。 在此步驟中,您對詳細數據的注意對於無縫整合和最佳效能至關重要。
要求本文
N/A。
回應狀態
除了標準 API 回應狀態中列出的 標準 HTTP 狀態之外,API 也可以傳回下列 HTTP 狀態:
代碼 | 描述 |
---|---|
410 – 消失 | 指令清單連結會在設定時間之後到期。 若要再次取得指令清單連結,請傳送新的要求。 |
回應承載
API 回應承載包含下列屬性:
屬性 | 必要 | 描述 |
---|---|---|
id | True | 每個回應的唯一標識碼 必要。 |
status | True |
值和動作: 必要。 notstarted:等候「Retry-After」標頭中指定的時間,然後再次發送請求以檢查狀態。 執行:等待 “Retry-After” 標頭中指定的時間,然後發出另一個請求以檢查狀態。 成功:數據已就緒。 使用 resourceLocation 中指定的 URI 擷取指令清單承載。 failed:作業永久失敗。 重新啟動它。 |
createdDateTime | True | 提出要求的時間。 必要。 |
lastActionDateTime | True | 上次狀態變更的時間。 必要。 |
resourceLocation | False | 指令清單承載的 URI。 選擇性。 |
error | False | JSON 格式提供之任何錯誤的詳細數據。 選擇性。 包含的屬性: 訊息:錯誤的描述。 code:錯誤的類型。 |
資源位置物件
屬性 | 描述 |
---|---|
id | 指令清單的唯一標識碼。 |
schemaVersion | 指令清單架構的版本。 |
dataFormat | 計費數據檔的格式。 compressedJSON:數據格式,其中每個 Blob 都是包含 JSON 行格式數據的壓縮檔。 若要從每個 Blob 擷取數據,請將其解壓縮。 |
createdDateTime | 建立指令清單檔的日期和時間。 |
eTag | 指令清單數據的版本。 每當帳單資訊有所變更時,就會產生新的值。 |
partnerTenantId | Microsoft合作夥伴租使用者的 Entra 識別符。 |
rootDirectory | 檔案的根目錄。 |
sasToken | SAS(共用存取簽章)令牌,可讓您讀取目錄下的所有檔案。 |
partitionType | 根據 partitionValue 屬性將數據分割成多個 Blob。 系統會分割超過支援數目的分割區。 根據預設,數據會根據檔案中的明細項目數目進行分割。 避免將行項目計數或檔案大小硬編碼,因為它們可能會變更。 |
blobCount | 此合作夥伴租用戶標識碼的檔案總數。 |
Blob | “blob” 物件的 JSON 陣列,其中包含合作夥伴租使用者標識碼的檔案詳細數據。 |
blob 物件 | 物件,包含下列詳細資料: name 和 partitionValue |
NAME | Blob 的名稱。 |
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 會傳回 “resourceLocation” 的「成功」狀態和 URI。
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"
}
\]
}
}
步驟 3:從 Azure Blob 記憶體下載計費發票對帳明細專案
首先,您必須取得共用存取簽章 (SAS) 令牌和 Blob 記憶體位置。 您可以在指令清單承載 API 回應的 「sasToken」 和 「rootDirectory」 屬性中找到這些詳細數據。 然後,若要下載並解壓縮 Blob 檔案,請使用 Azure 儲存體 SDK/tool。 其格式為 JSONLines 。
提示
請務必查看我們的 範例程序代碼。 它示範如何將 Azure Blob 檔案下載並解壓縮至本機資料庫。
標準 API 回應狀態
您可能會從 API 回應取得這些 HTTP 狀態:
代碼 | 描述 |
---|---|
400 – 不正確的要求 | 要求遺失或包含不正確的數據。 請檢查回應本文以取得錯誤詳細數據。 |
401 - 未經授權 | 進行第一次呼叫之前,必須先進行驗證。 使用合作夥伴 API 服務進行驗證。 |
403 - 禁止 | 您沒有提出要求的必要授權。 |
404 – 找不到 | 所提供的輸入參數無法使用所要求的資源。 |
410 – 消失 | 指令清單連結不再有效或作用中。 提交新的要求。 |
500 – 內部伺服器錯誤 | API 或其相依性目前無法滿足要求。 請稍後再試一次。 |
5000 – 沒有可用的數據 | 系統沒有所提供輸入參數的數據。 |
帳單發票對帳明細項目屬性
若要比較計費發票對帳 API 針對「完整」或「基本」屬性集所傳回的屬性,請參閱下表。 若要深入瞭解這些屬性及其意義,請參閱此 指南。
屬性 | 完整 | 基本 |
---|---|---|
PartnerId | 是 | 是 |
CustomerId | 是 | 是 |
CustomerName | 是 | 是 |
CustomerDomainName | 是 | 否 |
CustomerCountry | 是 | 否 |
InvoiceNumber | 是 | 是 |
MpnId | 是 | 否 |
Tier2MpnId | 是 | 是 |
OrderId | 是 | 是 |
OrderDate | 是 | 是 |
ProductId | 是 | 是 |
SkuId | 是 | 是 |
AvailabilityId | 是 | 是 |
SkuName | 是 | 否 |
ProductName | 是 | 是 |
ChargeType | 是 | 是 |
UnitPrice | 是 | 是 |
數量 | 是 | 否 |
小計 | 是 | 是 |
TaxTotal | 是 | 是 |
總數 | 是 | 是 |
貨幣 | 是 | 是 |
PriceAdjustmentDescription | 是 | 是 |
PublisherName | 是 | 是 |
PublisherId | 是 | 否 |
SubscriptionDescription | 是 | 否 |
SubscriptionId | 是 | 是 |
ChargeStartDate | 是 | 是 |
ChargeEndDate | 是 | 是 |
TermAndBillingCycle | 是 | 是 |
EffectiveUnitPrice | 是 | 是 |
UnitType | 是 | 否 |
AlternateId | 是 | 否 |
BillableQuantity | 是 | 是 |
BillingFrequency | 是 | 否 |
PricingCurrency | 是 | 是 |
PCToBCExchangeRate | 是 | 是 |
PCToBCExchangeRateDate | 是 | 否 |
MeterDescription | 是 | 否 |
ReservationOrderId | 是 | 是 |
CreditReasonCode | 是 | 是 |
SubscriptionStartDate | 是 | 是 |
SubscriptionEndDate | 是 | 是 |
ReferenceId | 是 | 是 |
ProductQualifiers | 是 | 否 |
PromotionId | 是 | 是 |
ProductCategory | 是 | 是 |
重要
從 API v1 移至 v2 時,請記下這些變更。
- 每個屬性名稱現在都會以 大寫 字母開頭,以維持檔案的一致性,並改善可讀性。
範例指令碼
若要使用此 API,請參閱下列連結,其中包含 C# 範例程式代碼。
Partner-Center-Billing-Recon-Samples:用於從合作夥伴中心取得帳單對帳數據的 API 範例(github.com)。