關於計費配接器核心引擎範例檔案
適用于:Windows Azure Pack
Windows Azure Pack 計費配接器範例是由計費配接器核心引擎和系統特定程式碼所組成,可用來與特定計費系統互動。 範例檔案位於 [帳單] 資料夾中。 本主題討論計費配接器核心引擎專案範例原始程式碼。 計費配接器核心引擎範例檔案位於 Windows Azure Pack 範例套件中的 BillingAdapter\Billing 資料夾下。 如需系統特定範例原始程式碼的相關資訊,請參閱 關於計費配接器系統特定範例檔案。
BillingAdapter
計費配接器引擎有四個「子引擎」,各提供不同的功能。 每個子引擎與其他子引擎完全正交,這表示每個子引擎都有自己的組態,而且每個子引擎都可以啟用\停用,而不會影響其他子引擎。 計費配接器引擎專案提供四個強型別介面,符合每個子引擎。 系統特定的實作可以選擇實作部分或所有介面,並根據啟用\停用相符的子引擎。 實作定價回應程式介面時,也必須實作計費核准回應程式介面。
這四個介面為
IBillingNotificationProcessor
IBillingUsageProcessor
IBillingSubscriptionResponder
IBillingPricingResponder
介面 |
描述 |
來源檔案 |
---|---|---|
帳單通知處理器 |
提供對應至Windows Azure Pack Usage Service API 事件的強型別事件。 如果您想要從 Windows Azure Pack 接收事件通知,並將其同步處理至您的計費系統,請實作此介面。 事件包括方案、附加元件和訂用帳戶修改。 如需 Usage Service Rest API 的詳細資訊,請參閱Windows Azure Pack Usage Service Usage REST API 參考。 |
IBillingNotificationProcessor.cs |
計費定價回應程式 |
此介面包含強型別事件,以回應即時定價查詢。 如果您想要從Windows Azure Pack 中的計費系統傳回定價資訊,請實作此介面。 您可以在 HostBill 範例中找到這個介面實作的範例。 如需定價 Rest API 的詳細資訊,請參閱Windows Azure Pack 使用量服務定價 REST API 參考。 |
IBillingPricingResponder.cs |
計費訂用帳戶回應程式 |
此介面包含強型別事件,以回應封鎖帳單核准要求。 如果您的計費系統包含邏輯來核准或刪除方案訂用帳戶和附加元件訂閱的使用者,請實作此介面。 如需帳單核准 Rest API 的詳細資訊,請參閱Windows Azure Pack 使用量服務計費核准 REST API 參考。 |
IBillingSubscriptionResponder.cs |
帳單使用量處理器 |
提供強型別事件來擷取租使用者使用量記錄。 實作此介面,以擷取所有Windows Azure Pack 資源提供者的匯總租使用者使用量資訊。 如需資源提供者使用量資料 Rest API 的詳細資訊,請參閱Windows Azure Pack 自訂資源提供者使用量 REST API 參考。 |
IBillingUsageProcessor.cs |
控制器
計費配接器核心引擎提供兩個子引擎 (計費定價回應程式和計費訂用帳戶回應程式) ,以接聽來自Windows Azure Pack 系統的傳入要求。 這些要求是由 Controllers 資料夾中的 Web API 控制器處理。 這些控制器會將傳入的 REST 要求轉換成強型別事件,並將其傳送至適當的介面實作, (IBillingSubscriptionResponder 和 IBillingPricingResponder) 。
事件通知和使用方式記錄處理
每一個都是排程器,會定期喚醒並查詢 Windows azure Pack 系統是否有新資訊、將它轉換成強型別事件,並在適當的介面上呼叫比對事件, (IBillingNotificationProcessor 或 IBillingUsageProcessor) 。 這兩個排程器都會執行類似的邏輯:
請確定目前的處理器目前是主要處理器。 如果沒有,他們會在預先定義的時間睡眠。 如需詳細資訊,請參閱app.config一節。
從狀態存放區擷取目前狀態。
從Windows Azure Pack 系統讀取新的事件。
將事件轉換為強型別事件,並叫用系統特定的介面實作。
處理任何錯誤。
計費定價回應程式
若要報告 IBillingPricingResponder 實作的錯誤,會提供兩個例外狀況物件:PricingNotFoundException 和 PricingUnknownException,可用來指出找不到要求的產品,或沒有此產品的定價資訊。
組態
計費配接器會使用 app.config 檔案來變更計費配接器設定。 成功建置之後,app.config檔案會放在計費配接器 .config可執行檔旁邊,並將檔案重新命名為與計費配接器可執行檔同名,例如, (Microsoft.WindowsAzurePack.Samples.Billing.exe.config) 。 修改此檔案需要重新開機計費配接器程式。
注意
app.config檔案包含計費配接器核心和系統特定實作的設定。 如果您提供自己的系統特定實作,您可以選擇將系統特定的設定儲存在其他地方。
下列描述 app.config 檔案中的設定:
公用程式 - App.Config
檔案app.config包含可視需要修改計費介面卡和Windows Azure Pack 部署的欄位。 在編譯之後和執行二進位檔之前,應該進列欄位變更。 下列描述索引鍵欄位。
<connectionStrings>
計費配接器所使用的資料庫 () 連接字串。 計費配接器核心引擎會使用 StateManage 連接字串來儲存其內部狀態。 IdentityMappingManager 連接字串是由系統特定實作用來儲存Windows Azure Pack 身分識別與計費系統身分識別之間的對應。 如果您提供自己的系統特定實作,您可能不需要此資料庫。
<appSettings>
appSettings 區段包含計費配接器核心引擎和系統特定實作的設定。 這些設定會根據其前置詞分組,並控制不同的子引擎。
以下是計費配接器元件設定:
設定 |
描述 |
---|---|
BillingAdapter.Assembly |
包含系統特定實作的計費配接器元件。 |
BillingAdapter.Type |
BillingAdapter.Assembly 中實作系統特定介面之型別的完整名稱。 如果此類型未實作特定介面,但已啟用此介面的相符子引擎,就會發生錯誤,而且計費配接器程式將不會啟動。 |
以下是計費通知處理器的應用程式設定:
應用程式設定 |
描述 |
---|---|
NotificationProcessor.Enabled |
如果實作 NotificationProcessor 介面,請將 設定為 true;這會啟用通知處理器的排程器。 |
NotificationProcessor.EndpointBaseAddress |
Windows Azure Pack 事件通知 REST 端點 URI。 事件通知處理器會使用此端點從Windows Azure Pack 系統讀取事件通知。 |
NotificationProcessor.EndpointUsername、NotificationProcessor.EndpointPassword |
Windows Azure Pack 事件通知端點的使用者名稱和密碼。 從 WAP 事件通知端點讀取事件時,事件通知處理器會使用這些認證。 |
NotificationProcessor.ReadBatchSize |
從Windows Azure Pack 事件通知端點讀取事件通知時所使用的批次大小上限。 如果您遇到網路效能問題,請考慮變更此值。 |
NotficationProcessor.PollingIntervalSeconds |
排程器在刻度之間睡眠的時間量。 排程器不重迭,因此睡眠期間只會在完整讀取完成之後開始。 |
NotificationProcessor.ErrorBackoffIntervalSeconds |
發生錯誤之後,這是排程器在重試之前睡眠的時間量。 |
NotificationProcessor.IsMasterExpirationInSeconds |
只有一個排程器實例可以跨所有進程和機器執行。 此排程器稱為 master。 當排程器實例選取為主要實例時,它會持續 Ping 狀態資料庫。 如果 master 資料庫在此值的期間內未 Ping,則另一個排程器實例會嘗試成為 master。 主要實例只會在排程器處理期間 ping 狀態資料庫 (它不會在排程器睡眠期間進行 ping) ,因此,建議此值大於排程器可能的最大睡眠時間,這是 NotficationProcessor.PollingIntervalSeconds 和 NotificationProcessor.ErrorBackoffIntervalSeconds 的最大可能睡眠時間。 將此值設定為太長的時間會導致主要容錯移轉變慢。 |
以下是計費使用量處理器的應用程式設定:
應用程式設定 |
描述 |
---|---|
UsageProcessor.Enabled |
如果實作 UsageProcessor 介面,請將 設定為 true;這會啟用計費使用量處理器的排程器。 |
UsageProcessor.EndpointBaseAddress |
Windows Azure Pack 用來進行 Rest API 呼叫的端點。 範例.config檔案具有預設值,但您想要指定自己的端點伺服器。 |
UsageProcessor.EndpointUsername、UsageProcessor.EndpointPassword |
Windows Azure Pack 使用量端點的使用者名稱和密碼。 從 Windows azure Pack 使用量端點讀取事件時,使用量處理器會使用這些認證。 |
UsageProcessor.ReadBatchSize |
從Windows Azure Pack 事件通知端點讀取事件通知時所使用的批次大小上限。 如果您遇到網路效能問題,請考慮變更此值。 |
UsageProcessor.PollingIntervalSeconds |
排程器在刻度之間睡眠的時間量。 排程器不重迭,因此睡眠期間只會在完整讀取完成之後開始。 |
UsageProcessor.ErrorBackoffIntervalSeconds |
發生錯誤之後,這是排程器在重試之前睡眠的時間量。 |
UsageProcessor.IsMasterExpirationInSeconds |
只有一個排程器實例可以跨所有進程和機器執行。 此排程器稱為 master。 當排程器實例選取為主要實例時,它會持續 Ping 狀態資料庫。 如果 master 資料庫在此值的期間內未 Ping,則另一個排程器實例會嘗試成為 master。 主要實例只會在排程器處理期間 ping 狀態資料庫, (排程器睡眠期間不會 ping) ,因此,建議此值大於排程器的最大可能睡眠時間,這是 UsageProcessor.PollingIntervalSeconds 和 UsageProcessor.ErrorBackoffIntervalSeconds 的最大可能睡眠時間。 將此值設定為太長的時間會導致主要容錯移轉變慢。 |
以下是套用至所有回應者的設定:
應用程式設定 |
描述 |
---|---|
Responders.EndpointBaseAddress |
回應端端點的本機基底位址。 計費配接器會使用此基底位址建立接聽程式。 相同的基底端點用於兩個回應者, (計費配接器引擎會為每個回應程式附加不同的路徑) 。 如果使用超文字傳輸通訊協定安全 (HTTPS) ,則必須在同一端口上設定頻外 SSL 憑證。 如需詳細資訊,請參閱https://msdn.microsoft.com/en-us/library/ms733791(v=vs.110).aspx。 |
Responders.EndpointUsername、Responders.EndpointPassword |
回應程式端點的基本驗證認證。 |
Responders.Notification.Enabled |
設定為 true 以啟用訂用帳戶回應程式 (帳單核准 API) 。 計費配接器系統特定實作必須實作 IBillingSubscriptionResponder 介面。 |
Responders.Pricing.Enabled |
設定為 true 以啟用定價回應程式 (定價 API) 。 計費配接器系統特定的實作必須實作 IBillingPricingResponder 介面。 |
以下是計費配接器應用程式設定:
應用程式設定 |
描述 |
---|---|
BillingAdapter.Assembly |
計費配接器的路徑。 |
BillingAdapter.Type |
計費配接器的路徑。 如果這裡的程式碼不符合app.config中為 「啟用」值設定的值,則執行時會出現錯誤。 |
例如,提供的 app.config包含 WHMCS 和 HostBill 計費系統的預留位置設定。 在生產部署中,不需要同時擁有這兩者。 您應該保留符合帳單配接器系統特定實作的設定。 如果您實作自己的配接器,則決定要在資料庫中app.config或資料庫中 (設定,例如) 。
一些要注意的設定如下:
應用程式設定 |
描述 |
---|---|
WHMCS。ExpectedVersion / HostBill.ExpectedVersion |
必要欄位。 計費配接器引擎會將此版本值與已設定的計費系統版本進行比較。 如果它們不相符,它會產生錯誤,並防止配接器執行。 這項檢查的目的是防止計費配接器在未測試的計費系統上運作。 |
WHMCS。MySqlConnectionString / HostBill.MySqlConnectionString |
連接字串 (,其寫入權限) 至計費系統 MySql 資料庫。 配接器系統特定實作會使用它,在沒有相符的 API 呼叫時直接更新計費系統資料庫。 |
WHMCS。EndpointUsername、WHMCS EndPointPassword |
WHMCS 端點使用者名稱和密碼。 |
HostBill.ApiId、HostBIll.ApiKey |
HostBill 識別碼和 API 金鑰。 |
WHMCS。ProductGroupName、HostBill.CategoryName |
方案會在計費系統中的群組\類別下建立。 此值指定要使用的 group\category。 在執行計費配接器程式之前,群組\category 必須存在 (手動建立) 。 |
WHMCS。DefaultCurrencyCode |
指定建立新訂閱訂單時 WHMCS 的預設貨幣代碼。 |
WHMCS。 DefaultPaymentModule / HostBill.DefaultPaymentModule |
WHMCS。DefaultPaymentMethodModule \ HostBill.DefaultPaymentModule。 指定要在下單新訂閱時使用的預設付款條件。 |
WHMCS。 DefaultBillingCycle / HostBill.DefaultBillingCycle |
指定新訂用帳戶訂單的預設計費週期,如果未在使用者設定中定義。 |
WHMCS。EnableUserCreation / HostBill.EnableUserCreation |
在生產環境中,所有Windows Azure Pack 使用者都應該存在於計費系統中。 不過,對於測試案例,如果計費系統中沒有使用者,則即時建立使用者可能會很有用。 當設定為 True 時,如果使用者不存在於計費系統中,就會在從 Windows Azure Pack 收到訂用帳戶事件時自動建立。 |
WHMCS。EnableOrderMailConfirmation |
設定為 true,以在建立訂閱時傳送郵件確認。 |
注意
在計費配接器範例中,將EnableUserCreation設定為 True 會導致計費配接器在計費系統「即時」內建立使用者帳戶,因為它會處理來自 azure Pack 的事件Windows。 如果為 False,則會在透過即時 API 傳送作業時拒絕作業,並在 Rest API 中找到它們時停止處理。
真正的提供者會有身分識別管理系統,以控制使用者帳戶的建立。 在理想情況下,這會在允許用戶端在 Windows azure Pack 內購買訂用帳戶之前發生,而且計費配接器應該永遠不會遇到計費系統中不存在之使用者帳戶的作業。
為了讓計費配接器範例「現成」運作,提供此選項來建立使用者帳戶作為範例處理事件。 只有電子郵件地址才會建立帳戶。 所有其他欄位都是空的。