Sobre os ficheiros de amostra do motor do motor do adaptador de faturação
Aplica-se a: Windows Azure Pack
A amostra de adaptador de faturação Azure Pack Windows consiste num motor de núcleo adaptador de faturação e código específico do sistema para interagir com um sistema de faturação específico. Os ficheiros de amostra estão na pasta de Faturação. Este tópico discute o código-fonte do projeto de amostra do motor do adaptador de faturação. Os ficheiros de amostra do núcleo do motor do adaptador de faturação estão sob a pasta BillingAdapter\Billing no pacote de amostras Windows Azure Pack. Para obter informações sobre o código-fonte de amostra específico do sistema, consulte sobre os ficheiros de amostra específicos do sistema de faturação.
BillingAdapter
O motor adaptador de faturação tem quatro "sub-motores", cada um fornecendo uma funcionalidade diferente. Cada sub-motor é completamente ortogonal para outros sub-motores, o que significa que cada um tem a sua própria configuração e cada um pode ser ativado\desativado sem afetar outros sub-motores. O projeto do motor do adaptador de faturação fornece quatro interfaces fortemente digitadas que combinam com cada um dos sub-motores. A implementação específica do sistema pode optar por implementar parte ou todas as interfaces e ativar\desativar os sub-motores correspondentes de acordo. Ao implementar a interface de resposta aos preços, a interface de resposta de aprovação de faturação também deve ser implementada.
As quatro interfaces são
IBillingNotificationProcessor
Processor IBillingUsage
IBillingSubscriptionResponder
IBillingPricingResponder
Interface |
Description |
Ficheiro de Origem |
---|---|---|
Processador de notificação de faturação |
Fornece eventos fortemente dactilografado correspondentes aos eventos API do Serviço de Utilização de Pacotes Azure Windows. Implemente esta interface se pretender receber notificações de eventos de Windows Azure Pack e sincronizá-las no seu sistema de faturação. Os eventos incluem planos, complementos e modificações de subscrição. Para obter mais informações sobre a API de repouso de serviço de utilização, consulte Windows Azure Pack Usage Service Rest Referência API. |
IBillingNotificationProcessor.cs |
Resposta de preços de faturação |
Esta interface inclui eventos fortemente dactilografados para responder a consultas de preços em tempo real. Implemente esta interface se pretender devolver informações sobre preços do seu sistema de faturação em Windows Azure Pack. Um exemplo desta implementação da interface pode ser encontrado na amostra HostBill. Para obter mais informações sobre o preço Rest API, consulte Windows Azure Pack Usage Service Priceing API Reference. |
IBillingPricingResponder.cs |
Resposta de subscrição de faturação |
Esta interface inclui eventos fortemente dactilografados para responder a pedidos de aprovação de faturação bloqueados. Implemente esta interface se o seu sistema de faturação incluir lógica para aprovar ou negar um utilizador que cria ou elimina subscrições de planos e subscrições adicionais. Para obter mais informações sobre a API de aprovação de faturação, consulte Windows Azure Pack Use Service Billing Approval REST Referência. |
IBillingSubscriptionResponder.cs |
Processador de utilização de faturação |
Proporciona eventos fortemente dactilografados para recuperar registos de utilização do inquilino. Implemente esta interface para recuperar informações de utilização agregadas do inquilino para todos os fornecedores de recursos Windows Azure Pack. Para obter mais informações sobre os dados de utilização do fornecedor de recursos Rest API, consulte Windows Referência de API do Fornecedor de Recursos Personalizados Azure Pack Custom Resource Provider. |
IBillingUsageProcessor.cs |
Controladores
O motor central do adaptador de faturação fornece dois sub-motores (Billing Pricing Responder e Billing Subscription Responder) para ouvir os pedidos recebidos do sistema Windows Azure Pack. Estes pedidos são tratados pelos controladores da API Web na pasta Controladores. Estes controladores convertem os pedidos de REST em eventos fortemente digitados e enviam-nos para a implementação adequada da interface (IBillingSubscriptionResponder e IBillingPricingResponder).
Notificação de eventos e processamento de registo de utilização
Cada um deles é um programador que acorda periodicamente e consulta o sistema Windows Azure Pack para novas informações, convertendo-o em eventos fortemente digitados e chama o evento correspondente na interface apropriada (IBillingNotificationProcessor ou IBillingUsageProcessor). Ambos os programadores executam uma lógica semelhante:
Certifique-se de que o processador atual é atualmente o principal. Se não, dormem por um tempo predefinido. Consulte a secção app.config para mais informações.
Recuperar o estado atual da loja estatal.
Leia novos eventos do sistema Windows Azure Pack.
Converta os eventos em eventos fortemente dactilografado e invoque a implementação da interface específica do sistema.
Lidar com quaisquer erros.
Resposta de preços de faturação
Para reportar erros da implementação do IBillingPricingResponder, são fornecidos dois objetos de exceção, PricingNotFoundException e PricingUnknownException, que podem ser utilizados para indicar que o produto solicitado não foi encontrado ou não existe informação sobre preços para este produto.
Configuração
O adaptador de faturação utiliza o ficheiro app.config para alterar as definições do adaptador de faturação. Após uma construção bem sucedida, o ficheiro app.config será colocado ao lado do adaptador de faturação executável e o ficheiro renomeado para ter o mesmo nome que o adaptador de faturação executável com um sufixo adicional de .config (por exemplo, Microsoft.WindowsAzurePack.Samples.Billing.exe.config). Modificar este ficheiro requer reiniciar o processo do adaptador de faturação.
Nota
O ficheiro app.config contém as definições tanto para o núcleo do adaptador de faturação como para a implementação específica do sistema. Se fornecer a sua própria implementação específica do sistema, pode optar por armazenar as definições específicas do sistema em outros lugares.
O seguinte descreve as definições no ficheiro app.config:
Utilitários - App.Config
O ficheiro app.config contém campos que podem ser modificados conforme necessário para um adaptador de faturação e Windows implementação do Azure Pack. As alterações de campo devem ser efetuadas após a compilação e antes de executar o binário. O seguinte descreve os campos-chave.
<conexõesAl>
Cadeias de ligação para a(s) base de dados utilizada pelo adaptador de faturação. A cadeia de ligação StateManage é utilizada pelo motor central do adaptador de faturação para armazenar o seu estado interno. A cadeia de conexão IdentityMappingManager é utilizada pela implementação específica do sistema para armazenar o mapeamento entre as identidades do Windows Azure Pack e as identidades do sistema de faturação. Se fornecer a sua própria implementação específica do sistema, poderá não precisar desta base de dados.
<appSettings>
A secção de definições de definições contém as definições para o motor central do adaptador de faturação e a implementação específica do sistema. As definições são agrupadas, com base no seu prefixo, e controlam diferentes sub-motores.
Seguem-se as definições de montagem do adaptador de faturação:
Definições |
Descrição |
---|---|
BillingAdapter.Assembléia |
O conjunto do adaptador de faturação que contém a implementação específica do sistema. |
BillingAdapter.Type |
O nome completo do tipo no BillingAdapter.Assembly que implementa as interfaces específicas do sistema. Se este tipo não implementar uma interface específica, mas o sub-motor correspondente para esta interface estiver ativado, ocorrerá um erro e o processo do adaptador de faturação não será iniciado. |
Seguem-se as definições de aplicação para o Processador de Notificação de Faturação:
Definição da Aplicação |
Description |
---|---|
Processamento de notificações.Ativado |
Definido como verdadeiro se implementar a interface do Processo de Notificação; isto permitirá o programador do Processador de Notificação. |
NotificationProcessor.EndpointBaseAddress |
O Windows a notificação do evento Azure Pack REST endpoint URI. O Processador de Notificação de Eventos utilizará este ponto final para ler notificações de eventos do sistema Windows Azure Pack. |
NotificationProcessor.EndpointUsername, NotificationProcessor.EndpointPassword |
Nome de utilizador e senha para o ponto final de notificação do evento Azure Pack Windows. O Processador de Notificação de Eventos utilizará estas credenciais ao ler eventos a partir do ponto final de notificação do evento WAP. |
Processamento de notificações.ReadBatchsize |
O tamanho máximo do lote que será utilizado ao ler notificações do evento a partir dos pontos finais de notificação do evento Windows Azure Pack. Se experimentar problemas de desempenho na rede, considere alterar este valor. |
NotficationProcessor.PollingIntervalSeconds |
A quantidade de tempo que o agendador vai dormir entre carrapatos. O programador não se sobrepõe, pelo que o período de sono só começará quando uma leitura completa estiver concluída. |
NotificationProcessor.ErrorBackoffIntervalSeconds |
Depois de um erro, esta é a quantidade de tempo que o agendador irá dormir antes de voltar a tentar. |
Processor de notificação.IsMasterExpirationInSeconds |
Apenas uma instância de programador é permitida para correr em todos os processos e máquinas. Este agendador chama-se mestre. Quando uma instância de programador é selecionada para ser a principal instância, continua a pingar a base de dados do Estado. Se a base de dados principal não ping por um período mais longo que este valor, outra instância de agendamento tentará tornar-se o mestre. A instância principal pings a base de dados do estado apenas durante o processamento do scheduler (não ping durante o sono do agendador), por isso, recomenda-se que este valor seja várias vezes maior do que o tempo máximo de sono possível para o programador, que é o máximo de NotficationProcessor.PollingIntervalSeconds e NotificationProcessor.ErrorBackoffInterivas. Definir este valor para um período demasiado longo levará a uma falha de mestre mais lenta. |
Seguem-se as definições de aplicação para o processador de utilização de faturação:
Definição da Aplicação |
Description |
---|---|
Processamento de utilização.Ativado |
Definido como verdadeiro se implementar a interface UsageProcessor; isto permitirá o programador do processador de utilização de faturação. |
Processamento de uso.EndpointBaseAddress |
O ponto final utilizado por Windows Azure Pack para fazer as chamadas de API de descanso. A amostra .config ficheiro tem um valor predefinido, mas irá querer especificar o seu próprio servidor de ponto final. |
UsageProcessor.EndpointUsername, UsageProcessor.EndpointPassword |
Nome de utilizador e palavra-passe para o ponto final de utilização do pacote Azure Windows. O Processador de Utilização utilizará estas credenciais ao ler eventos do Windows ponto final de utilização do Pacote Azure. |
Processamento de uso.ReadBatchsize |
O tamanho máximo do lote que será utilizado ao ler notificações do evento a partir dos pontos finais de notificação do evento Windows Azure Pack. Se experimentar problemas de desempenho na rede, considere alterar este valor. |
Processamento de Uso.PollingIntervalSeconds |
A quantidade de tempo que o agendador vai dormir entre carrapatos. O programador não se sobrepõe, pelo que o período de sono só começará quando uma leitura completa estiver concluída. |
UsageProcessor.ErrorBackoffIntervalSeconds |
Depois de um erro, esta é a quantidade de tempo que o agendador irá dormir antes de voltar a tentar. |
Processamento de Uso.IsMasterExpirationInSeconds |
Apenas uma instância de programador é permitida para correr em todos os processos e máquinas. Este agendador chama-se mestre. Quando uma instância de programador é selecionada para ser a principal instância, continua a pingar a base de dados do Estado. Se a base de dados principal não ping por um período mais longo que este valor, outra instância de agendamento tentará tornar-se o mestre. A instância principal pings a base de dados do estado apenas durante o processamento do scheduler (não ping durante os sonos agendadores), por isso, recomenda-se que este valor seja várias vezes maior do que o tempo máximo de sono possível para o programador, que é o máximo de UsageProcessor.PollingIntervalSeconds e UsageProcessor.ErrorBackoffRSeconds. Definir este valor para um período demasiado longo levará a uma falha de mestre mais lenta. |
Seguem-se as definições aplicadas a todos os respondentes:
Definição da Aplicação |
Description |
---|---|
Responders.EndpointBaseAddress |
O endereço da base local para os pontos finais dos socorristas. O adaptador de faturação criará um ouvinte utilizando este endereço base. O mesmo ponto final base é utilizado para ambos os respondentes (o motor adaptador de faturação irá anexar diferentes caminhos para cada resposta). Se for utilizado o Protocolo de Transferência de Hipertextos Secure (HTTPS), é necessário configurar um certificado SSL fora da banda na mesma porta. Para obter mais informações, consulte https://msdn.microsoft.com/en-us/library/ms733791(v=vs.110).aspx. |
Respostas.EndpointUsername, Responders.EndpointPassword |
Credenciais básicas de autenticação para o ponto final dos respondentes. |
Respostas.Notificação.Ativada |
Definir para ser verdadeiro para ativar o respondente de subscrição (Billing Approval API). A implementação específica do sistema do adaptador de faturação deve implementar a interface IBillingSubscriptionResponder. |
Respostas.Preços.Habilidosos |
Definir para ser verdadeiro para ativar o respondente de preços (API de preços). A implementação específica do sistema adaptador de faturação deve implementar a interface IBillingPricingResponder. |
Seguem-se as definições de aplicação do adaptador de faturação:
Definição da Aplicação |
Description |
---|---|
BillingAdapter.Assembléia |
Caminho para o adaptador de faturação. |
BillingAdapter.Type |
Caminho para o adaptador de faturação. Se o código aqui não corresponder aos valores definidos para os valores "Ativar" no app.config, haverá um erro ao executar. |
Como exemplo, o app.config fornecido contém uma definição de espaço reservado tanto para os sistemas de faturação WHMCS como para os sistemas de faturação HostBill. Numa implantação de produção, não é necessário ter ambos. Deve manter as definições correspondentes à implementação específica do sistema do adaptador de faturação. Se implementar o seu próprio adaptador, cabe-lhe a si decidir se deve ter as definições em app.config ou em qualquer outro lugar (numa base de dados, por exemplo).
Algumas definições a notar são:
Definição da Aplicação |
Description |
---|---|
WHMCS. ExpectVersion / HostBill.ExpectVersion |
Campo obrigatório. O motor adaptador de faturação irá comparar este valor de versão com a versão configurada do sistema de faturação. Se não corresponderem, produzirá um erro e impedirá o adaptador de funcionar. O objetivo desta verificação é evitar que o adaptador de faturação funcione num sistema de faturação não testado. |
WHMCS. MySqlConnectionString / HostBill.MySqlConnectionString |
Uma cadeia de ligação (com permissões de escrita) para a base de dados MySql do sistema de faturação. É utilizado pela implementação específica do sistema adaptador para atualizar diretamente a base de dados do sistema de faturação quando não existe uma chamada de API correspondente. |
WHMCS. EndpointUsername, WHMCS EndPointPassword |
O nome de utilizador e palavra-passe do ponto final WHMCS. |
HostBill.ApiId, HostBIll.ApiKey |
A chave HostBill Identifier e API. |
WHMCS. ProductGroupName, HostBill.CategoryName |
Os planos são criados sob uma categoria de grupo\nos sistemas de faturação. Este valor especificou a categoria de grupo a utilizar. A categoria de grupo deve existir (criada manualmente) antes de executar o processo de adaptação de faturação. |
WHMCS. Código de PadrãoSdesdecurrencyCode |
Especifica o código de moeda padrão para WHMCS ao criar novas ordens de subscrição. |
WHMCS. Padrão PagamentoModule / HostBill.DefaultPaymentModule |
WHMCS. Padrão PagamentoMethodModule \ HostBill.DefaultPaymentModule. Especifica o método de pagamento predefinido a utilizar na edição de novas ordens de subscrição. |
WHMCS. Predefinição Desfinição DeSciclo / HostBill.DefaultBillingCycle |
Especifica o ciclo de faturação predefinido para novas ordens de subscrição, se não estiver definido nas definições do utilizador. |
WHMCS. EnableUserCreation / HostBill.EnableUserCreation |
Em ambientes de produção, todos os utilizadores Windows Azure Pack devem pré-existir no sistema de faturação. No entanto, para os cenários de testes, pode ser útil criar utilizadores em movimento, caso estes não existam no sistema de faturação. Quando definido para True, se um utilizador não existir no sistema de faturação, este será automaticamente criado quando um evento de subscrição for recebido de Windows Azure Pack. |
WHMCS. EnableOrderMailConfirmation |
Definido como verdadeiro para enviar uma confirmação de correio quando uma subscrição está sendo criada. |
Nota
Na amostra do adaptador de faturação, ter enableUserCreation definido para True fará com que o adaptador de faturação crie contas de utilizador dentro do sistema de faturação "on-the-fly", uma vez que processa eventos a partir de Windows Azure Pack. Se for falsa, rejeitará as operações se forem enviadas através da API em tempo real, e suspenderá o processamento se forem encontradas na API de Repouso.
Um verdadeiro fornecedor teria um sistema de gestão de identidade em vigor para controlar a criação de contas de utilizador. Idealmente, isto ocorreria antes de os clientes poderem adquirir subscrições dentro de Windows Azure Pack, e o adaptador de faturação nunca deverá encontrar uma operação para uma conta de utilizador que não exista no sistema de faturação.
Para que a amostra do adaptador de faturação funcione "fora da caixa", esta opção é fornecida para criar contas de utilizador à medida que a amostra processa eventos. As contas são criadas apenas com endereço de e-mail. Todos os outros campos estão vazios.