Acerca de los archivos de ejemplo del motor principal del adaptador de facturación
Se aplica a: Windows Azure Pack
El Windows ejemplo de adaptador de facturación de Azure Pack consta de un motor principal del adaptador de facturación y un código específico del sistema para interactuar con un sistema de facturación específico. Los archivos de ejemplo se encuentran en la carpeta Facturación. En este tema se describe el código fuente de ejemplo del proyecto del motor principal del adaptador de facturación. Los archivos de ejemplo del motor principal del adaptador de facturación se encuentran en la carpeta BillingAdapter\Billing del paquete de ejemplos de Windows Azure Pack. Para obtener información sobre el código fuente de ejemplo específico del sistema, vea Acerca de los archivos de ejemplo específicos del sistema de adaptador de facturación.
BillingAdapter
El motor del adaptador de facturación tiene cuatro "submotores", cada uno de los cuales proporciona una funcionalidad diferente. Cada submotor es completamente ortogonal a otros submotores, lo que significa que cada uno tiene su propia configuración y cada uno se puede habilitar\deshabilitar sin afectar a otros submotores. El proyecto del motor de adaptador de facturación proporciona cuatro interfaces fuertemente tipadas que coinciden con cada uno de los submotores. La implementación específica del sistema puede optar por implementar parte o todas las interfaces y habilitar o deshabilitar los submotores coincidentes según. Al implementar la interfaz del respondedor de precios, también se debe implementar la interfaz del respondedor de aprobación de facturación.
Las cuatro interfaces son
IBillingNotificationProcessor
IBillingUsageProcessor
IBillingSubscriptionResponder
IBillingPricingResponder
Interfaz |
Descripción |
Archivo de origen |
---|---|---|
Procesador de notificaciones de facturación |
Proporciona eventos fuertemente tipados correspondientes a los eventos de api del servicio de uso de Azure Pack Windows. Implemente esta interfaz si desea recibir notificaciones de eventos de Windows Azure Pack y sincronizarlas con el sistema de facturación. Los eventos incluyen modificaciones de plan, complementos y suscripciones. Para obtener más información sobre la API rest del servicio de uso, consulte Windows Referencia de la API REST de uso del servicio de uso de Azure Pack. |
IBillingNotificationProcessor.cs |
Respondedor de precios de facturación |
Esta interfaz incluye eventos fuertemente tipados para responder a consultas de precios en tiempo real. Implemente esta interfaz si desea devolver información de precios del sistema de facturación en Windows Azure Pack. Puede encontrar un ejemplo de esta implementación de interfaz en el ejemplo HostBill. Para más información sobre los precios de la API rest, consulte Windows Referencia de la API rest de precios del servicio de uso de Azure Pack. |
IBillingPricingResponder.cs |
Respondedor de suscripciones de facturación |
Esta interfaz incluye eventos fuertemente tipados para responder a las solicitudes de aprobación de facturación bloqueadas. Implemente esta interfaz si el sistema de facturación incluye lógica para aprobar o denegar a un usuario que cree o elimine suscripciones de plan y suscripciones de complementos. Para más información sobre la API rest de aprobación de facturación, consulte Windows Referencia de la API de REST de aprobación de facturación del servicio de uso de Azure Pack. |
IBillingSubscriptionResponder.cs |
Procesador de uso de facturación |
Proporciona eventos fuertemente tipados para recuperar registros de uso de inquilinos. Implemente esta interfaz para recuperar información de uso de inquilinos agregada para todos los proveedores de recursos de Windows Azure Pack. Para más información sobre la API rest de datos de uso del proveedor de recursos, consulte Windows Referencia de la API rest de uso del proveedor de recursos personalizado de Azure Pack. |
IBillingUsageProcessor.cs |
Controladores
El motor principal del adaptador de facturación proporciona dos submotores (Respondedor de precios de facturación y Respondedor de suscripciones de facturación) para escuchar las solicitudes entrantes desde el sistema Windows Azure Pack. Estos controladores de API web controlan estas solicitudes en la carpeta Controllers. Estos controladores convierten las solicitudes REST entrantes en eventos fuertemente tipados y los envían a la implementación de interfaz adecuada (IBillingSubscriptionResponder e IBillingPricingResponder).
Procesamiento de registros de uso y notificación de eventos
Cada uno de ellos es un programador que reactiva y consulta periódicamente el sistema Windows Azure Pack para obtener nueva información, convertirlo en eventos fuertemente tipados y llama al evento coincidente en la interfaz adecuada (IBillingNotificationProcessor o IBillingUsageProcessor). Ambos programadores realizan una lógica similar:
Asegúrese de que el procesador actual es actualmente el maestro. Si no es así, se duermen durante un tiempo predefinido. Consulte la sección app.config para obtener más información.
Recupere el estado actual del almacén de estados.
Lea nuevos eventos del sistema Windows Azure Pack.
Convierta los eventos en eventos fuertemente tipados e invoque la implementación de la interfaz específica del sistema.
Controle los errores.
Respondedor de precios de facturación
Para notificar errores de la implementación de IBillingPricingResponder, se proporcionan dos objetos de excepción, PricingNotFoundException y PricingUnknownException, que se pueden usar para indicar que no se encontró el producto solicitado o no hay información de precios para este producto.
Configuración
El adaptador de facturación usa el archivo app.config para cambiar la configuración del adaptador de facturación. Después de una compilación correcta, el archivo app.config se colocará junto al ejecutable del adaptador de facturación y el archivo cuyo nombre ha cambiado para tener el mismo nombre que el ejecutable del adaptador de facturación con un sufijo de .config adicional (por ejemplo, Microsoft.WindowsAzurePack.Samples.Billing.exe.config). La modificación de este archivo requiere reiniciar el proceso del adaptador de facturación.
Nota:
El archivo app.config contiene la configuración para el núcleo del adaptador de facturación y la implementación específica del sistema. Si proporciona su propia implementación específica del sistema, puede elegir almacenar la configuración específica del sistema en otro lugar.
A continuación se describen los valores del archivo app.config:
Utilidades: App.Config
El archivo app.config contiene campos que se pueden modificar según sea necesario para un adaptador de facturación y Windows implementación de Azure Pack. Los cambios de campo deben realizarse después de la compilación y antes de ejecutar el binario. A continuación se describen los campos clave.
<connectionStrings>
Cadenas de conexión para las bases de datos usadas por el adaptador de facturación. El motor principal del adaptador de facturación usa la cadena de conexión StateManage para almacenar su estado interno. La implementación específica del sistema usa la cadena de conexión IdentityMappingManager para almacenar la asignación entre Windows identidades de Azure Pack y las identidades del sistema de facturación. Si proporciona su propia implementación específica del sistema, es posible que no necesite esta base de datos.
<appSettings>
La sección appSettings contiene la configuración del motor principal del adaptador de facturación y la implementación específica del sistema. La configuración se agrupa, en función de su prefijo, y controla diferentes submotores.
A continuación se muestran las opciones de configuración del ensamblado del adaptador de facturación:
Configuración |
Descripción |
---|---|
BillingAdapter.Assembly |
Ensamblado del adaptador de facturación que contiene la implementación específica del sistema. |
BillingAdapter.Type |
Nombre completo del tipo en billingAdapter.Assembly que implementa las interfaces específicas del sistema. Si este tipo no implementa una interfaz específica, pero el sub-motor coincidente de esta interfaz está habilitado, se producirá un error y el proceso del adaptador de facturación no se iniciará. |
A continuación se muestran las opciones de configuración de la aplicación para el procesador de notificaciones de facturación:
Configuración de aplicación |
Descripción |
---|---|
NotificationProcessor.Enabled |
Se establece en true si implementa la interfaz NotificationProcessor; esto habilitará el programador para el procesador de notificaciones. |
NotificationProcessor.EndpointBaseAddress |
El Windows URI del punto de conexión rest de notificación de eventos de Azure Pack. El procesador de notificaciones de eventos usará este punto de conexión para leer las notificaciones de eventos del sistema Windows Azure Pack. |
NotificationProcessor.EndpointUsername, NotificationProcessor.EndpointPassword |
Nombre de usuario y contraseña para el punto de conexión de notificación de eventos de Windows Azure Pack. El procesador de notificaciones de eventos usará estas credenciales al leer eventos del punto de conexión de notificación de eventos WAP. |
NotificationProcessor.ReadBatchSize |
Tamaño máximo de lote que se usará al leer notificaciones de eventos de los puntos de conexión de notificación de eventos de Windows Azure Pack. Si experimenta problemas de rendimiento de red, considere la posibilidad de cambiar este valor. |
NotficationProcessor.PollingIntervalSeconds |
Cantidad de tiempo que el programador dormirá entre tics. Por lo tanto, el programador no se superpone, por lo tanto, el período de suspensión solo se iniciará una vez completada una lectura completa. |
NotificationProcessor.ErrorBackoffIntervalSeconds |
Después de un error, esta es la cantidad de tiempo que el programador se suspenderá antes de volver a intentarlo. |
NotificationProcessor.IsMasterExpirationInSeconds |
Solo se permite que una instancia del programador se ejecute en todos los procesos y máquinas. Este programador se denomina maestro. Cuando se selecciona una instancia del programador para que sea la instancia maestra, sigue haciendo ping a la base de datos de estado. Si la base de datos maestra no hace ping durante un período más largo que este valor, otra instancia del programador intentará convertirse en la maestra. La instancia maestra hace ping a la base de datos de estado solo durante el procesamiento del programador (no hace ping durante la suspensión del programador), por lo tanto, se recomienda que este valor sea varias veces mayor que el tiempo máximo de suspensión posible para el programador, que es el máximo de NotficationProcessor.PollingIntervalSeconds y NotificationProcessor.ErrorBackoffIntervalSeconds. Establecer este valor en un período demasiado largo dará lugar a una conmutación por error maestra más lenta. |
A continuación se muestran las opciones de configuración de la aplicación para el procesador de uso de facturación:
Configuración de aplicación |
Descripción |
---|---|
UsageProcessor.Enabled |
Se establece en true si implementa la interfaz UsageProcessor; esto habilitará el programador para el procesador de uso de facturación. |
UsageProcessor.EndpointBaseAddress |
El punto de conexión usado por Windows Azure Pack para realizar llamadas a la API rest. El archivo .config de ejemplo tiene un valor predeterminado, pero querrá especificar su propio servidor de punto de conexión. |
UsageProcessor.EndpointUsername, UsageProcessor.EndpointPassword |
Nombre de usuario y contraseña para el punto de conexión de uso del paquete de Azure Windows. El procesador de uso usará estas credenciales al leer eventos del punto de conexión de uso de Windows paquete de Azure. |
UsageProcessor.ReadBatchSize |
Tamaño máximo de lote que se usará al leer notificaciones de eventos de los puntos de conexión de notificación de eventos de Windows Azure Pack. Si experimenta problemas de rendimiento de red, considere la posibilidad de cambiar este valor. |
UsageProcessor.PollingIntervalSeconds |
Cantidad de tiempo que el programador dormirá entre tics. Por lo tanto, el programador no se superpone, por lo tanto, el período de suspensión solo se iniciará una vez completada una lectura completa. |
UsageProcessor.ErrorBackoffIntervalSeconds |
Después de un error, esta es la cantidad de tiempo que el programador se suspenderá antes de volver a intentarlo. |
UsageProcessor.IsMasterExpirationInSeconds |
Solo se permite que una instancia del programador se ejecute en todos los procesos y máquinas. Este programador se denomina maestro. Cuando se selecciona una instancia del programador para que sea la instancia maestra, sigue haciendo ping a la base de datos de estado. Si la base de datos maestra no hace ping durante un período más largo que este valor, otra instancia del programador intentará convertirse en la maestra. La instancia maestra hace ping a la base de datos de estado solo durante el procesamiento del programador (no hace ping durante la suspensión del programador), por lo tanto, se recomienda que este valor sea varias veces mayor que el tiempo de suspensión máximo posible para el programador, que es el máximo de UsageProcessor.PollingIntervalSeconds y UsageProcessor.ErrorBackoffIntervalSeconds. Establecer este valor en un período demasiado largo dará lugar a una conmutación por error maestra más lenta. |
A continuación se muestran las opciones de configuración aplicadas a todos los respondedor:
Configuración de aplicación |
Descripción |
---|---|
Respondeds.EndpointBaseAddress |
Dirección base local para los puntos de conexión de los respondedor. El adaptador de facturación creará un agente de escucha mediante esta dirección base. El mismo punto de conexión base se usa para ambos respondedor (el motor del adaptador de facturación anexará rutas de acceso diferentes para cada respondedor). Si se usa el protocolo de transferencia de hipertexto seguro (HTTPS), es necesario configurar un certificado SSL fuera de banda en el mismo puerto. Para obtener más información, vea https://msdn.microsoft.com/en-us/library/ms733791(v=vs.110).aspx. |
Responders.EndpointUsername, Responders.EndpointPassword |
Credenciales de autenticación básicas para el punto de conexión de los respondedor. |
Respondeds.Notification.Enabled |
Establézcalo en true para activar el respondedor de suscripciones (API de aprobación de facturación). La implementación específica del sistema del adaptador de facturación debe implementar la interfaz IBillingSubscriptionResponder. |
Respondeds.Pricing.Enabled |
Establézcalo en true para activar el respondedor de precios (API de precios). La implementación específica del sistema del adaptador de facturación debe implementar la interfaz IBillingPricingResponder. |
A continuación se muestran la configuración de la aplicación del adaptador de facturación:
Configuración de aplicación |
Descripción |
---|---|
BillingAdapter.Assembly |
Ruta de acceso al adaptador de facturación. |
BillingAdapter.Type |
Ruta de acceso al adaptador de facturación. Si el código aquí no coincide con los valores establecidos para los valores "Habilitar" en el app.config, se producirá un error al ejecutarse. |
Por ejemplo, el app.config proporcionado contiene la configuración de marcador de posición para los sistemas de facturación WHMCS y HostBill. En una implementación de producción, no es necesario tener ambos. Debe mantener la configuración que coincida con la implementación específica del sistema del adaptador de facturación. Si implementa su propio adaptador, es necesario decidir si tiene la configuración en app.config o en otro lugar (por ejemplo, en una base de datos).
Algunas opciones de configuración a tener en cuenta son:
Configuración de aplicación |
Descripción |
---|---|
WHMCS. ExpectedVersion/HostBill.ExpectedVersion |
Campo obligatorio. El motor del adaptador de facturación comparará este valor de versión con la versión del sistema de facturación configurada. Si no coinciden, producirá un error y evitará que el adaptador se ejecute. El propósito de esta comprobación es evitar que el adaptador de facturación funcione en un sistema de facturación no probado. |
WHMCS. MySqlConnectionString/HostBill.MySqlConnectionString |
Cadena de conexión (con permisos de escritura) en la base de datos MySql del sistema de facturación. La implementación específica del sistema del adaptador la usa para actualizar la base de datos del sistema de facturación directamente cuando no hay una llamada API coincidente. |
WHMCS. EndpointUsername, WHMCS EndPointPassword |
Nombre de usuario y contraseña del punto de conexión de WHMCS. |
HostBill.ApiId, HostBIll.ApiKey |
Identificador de HostBill y clave de API. |
WHMCS. ProductGroupName, HostBill.CategoryName |
Los planes se crean en un grupo o categoría en los sistemas de facturación. Este valor especificó el grupo\categoría que se va a usar. El grupo\categoría debe existir (creado manualmente) antes de ejecutar el proceso del adaptador de facturación. |
WHMCS. DefaultCurrencyCode |
Especifica el código de moneda predeterminado para WHMCS al crear nuevos pedidos de suscripción. |
WHMCS. DefaultPaymentModule/HostBill.DefaultPaymentModule |
WHMCS. DefaultPaymentMethodModule \ HostBill.DefaultPaymentModule. Especifica el método de pago predeterminado que se usará al realizar nuevos pedidos de suscripción. |
WHMCS. DefaultBillingCycle/HostBill.DefaultBillingCycle |
Especifica el ciclo de facturación predeterminado para los nuevos pedidos de suscripción, si no está definido en la configuración de usuario. |
WHMCS. EnableUserCreation/HostBill.EnableUserCreation |
En entornos de producción, todos los Windows los usuarios de Azure Pack deben existir previamente en el sistema de facturación. Sin embargo, para escenarios de prueba, puede resultar útil crear usuarios sobre la marcha, si no existen en el sistema de facturación. Cuando se establece en True, si un usuario no existe en el sistema de facturación, se creará automáticamente cuando se reciba un evento de suscripción de Windows Azure Pack. |
WHMCS. EnableOrderMailConfirmation |
Establézcalo en true para enviar una confirmación de correo cuando se crea una suscripción. |
Nota:
En el ejemplo del adaptador de facturación, si EnableUserCreation se establece en True, el adaptador de facturación creará cuentas de usuario dentro del sistema de facturación "sobre la marcha" a medida que procesa eventos de Windows Azure Pack. Si es False, rechazará las operaciones si se envían a través de la API en tiempo real y detendrá el procesamiento si se encuentran en la API rest.
Un proveedor verdadero tendría un sistema de administración de identidades para controlar la creación de cuentas de usuario. Lo ideal sería que esto ocurra antes de que los clientes puedan comprar suscripciones dentro de Windows Azure Pack y el adaptador de facturación nunca debe encontrar una operación para una cuenta de usuario que no exista en el sistema de facturación.
Para que el ejemplo del adaptador de facturación funcione "lista para usar", esta opción se proporciona para crear cuentas de usuario a medida que el ejemplo procesa eventos. Las cuentas solo se crean con una dirección de correo electrónico. Todos los demás campos están vacíos.