Vender treinamentos corporativos online frequentemente exige conformidade com padrões legados e corporativos de e-learning. Embora padrões modernos como xAPI (Experience API) e SCORM 2004 sejam amplamente discutidos, o padrão AICC (Aviation Industry Computer-Based Training Committee) continua sendo um requisito fundamental em muitas infraestruturas corporativas e sistemas de gestão de aprendizagem (LMS) legados.
Integrar o padrão AICC ao ecossistema WordPress e WooCommerce permite que você monetize cursos corporativos com a flexibilidade do e-commerce do WooCommerce, mantendo o rastreamento de progresso, notas e autenticação de estudantes em conformidade com o protocolo AICC/CMI.
O que é o Padrão AICC e como funciona a comunicação HACP?
Diferente do SCORM tradicional, que utiliza chamadas JavaScript diretas no navegador do usuário (DOM-based), o AICC suporta o protocolo HACP (HTTP-based AICC/CMI Protocol). Nesse modelo, o pacote de conteúdo (Assignable Unit ou AU) comunica o status do aluno (início, progresso, pontuação e conclusão) enviando requisições HTTP POST para uma URL central gerenciada pelo LMS.
Essa arquitetura baseada em HTTP torna o WordPress perfeitamente capaz de atuar tanto como intermediário de acesso quanto como receptor/validador dessas requisições quando estruturado corretamente.
Arquitetura da Solução: WooCommerce + WordPress + AICC
Para criar uma ponte funcional entre uma compra no WooCommerce e o consumo de conteúdo AICC, a arquitetura técnica é dividida em três pilares principais:
- Processamento da Venda no WooCommerce: Liberação de acesso após a confirmação do pedido (
woocommerce_order_status_completed). - Geração do Launch URL e Sessão AICC: Geração de uma URL parametrizada contendo
AICC_URL(o endpoint HACP no WordPress) eAICC_SID(o Session ID temporário e seguro do aluno). - Endpoint HACP Customizado via WP REST API: Um receptor HTTP para processar os comandos AICC como
GetParam,PutParameExitAU.
Passo 1: Automatizando o Acesso após o Checkout no WooCommerce
Quando um usuário compra um curso no WooCommerce, precisamos associar a permissão de acesso ao usuário e gerar uma sessão válida de execução. Podemos interceptar a conclusão da compra com o seguinte hook:
add_action('woocommerce_order_status_completed', 'conectar_usuario_curso_aicc', 10, 1);
function conectar_usuario_curso_aicc($order_id) {
$order = wc_get_order($order_id);
$user_id = $order->get_user_id();
if (!$user_id) {
return;
}
foreach ($order->get_items() as $item) {
$product_id = $item->get_product_id();
$aicc_course_id = get_post_meta($product_id, '_aicc_course_id', true);
if (!empty($aicc_course_id)) {
// Registra matrícula do usuário no curso AICC
update_user_meta($user_id, '_enrolled_aicc_course_' . $aicc_course_id, time());
}
}
}Passo 2: Criando o Endpoint HACP com WP REST API
O pacote AICC envia formulários codificados em texto (form-urlencoded) contendo comandos padrão. Em implementações que realizo para ambientes corporativos, prefiro registrar uma rota na WP REST API dedicada a interpretar esses comandos e atualizar a tabela de progresso do usuário no banco de dados do WordPress.
add_action('rest_api_init', function () {
register_rest_route('aicc/v1', '/hacp/', array(
'methods' => 'POST',
'callback' => 'processar_requisicao_hacp_aicc',
'permission_callback' => '__return_true',
));
});
function processar_requisicao_hacp_aicc(WP_REST_Request $request) {
$command = strtoupper($request->get_param('command'));
$session_id = sanitize_text_field($request->get_param('session_id'));
$aicc_data = $request->get_param('aicc_data');
// Validar token/session_id no banco de dados
$user_id = validar_sessao_aicc($session_id);
if (!$user_id) {
return new WP_REST_Response("error=1nerror_text=Invalid Session ID", 200, array('Content-Type' => 'text/plain'));
}
switch ($command) {
case 'GETPARAM':
// Retorna os dados iniciais do aluno para o conteúdo
$response = "error=0nerror_text=Successfulnaicc_data=[Core]nStudent_ID={$user_id}nLesson_Status=incompleten";
return new WP_REST_Response($response, 200, array('Content-Type' => 'text/plain'));
case 'PUTPARAM':
// Processa o progresso enviado pelo curso (ex: status, score, tempo)
atualizar_progresso_aicc($user_id, $aicc_data);
return new WP_REST_Response("error=0nerror_text=Successful", 200, array('Content-Type' => 'text/plain'));
case 'EXITAU':
return new WP_REST_Response("error=0nerror_text=Successful", 200, array('Content-Type' => 'text/plain'));
default:
return new WP_REST_Response("error=1nerror_text=Command Not Supported", 200, array('Content-Type' => 'text/plain'));
}
}Passo 3: Lidando com Políticas de Mesma Origem (CORS) e Iframe
Um dos maiores desafios técnicos ao rodar pacotes AICC hospedados em servidores externos ou subdomínios é a política de Cross-Origin Resource Sharing (CORS). Para garantir que as requisições POST do HACP enviadas pelo navegador não sejam bloqueadas, seu endpoint no WordPress deve incluir os headers apropriados de CORS:
Access-Control-Allow-Origin: *(ou restrito ao domínio do CDN/LMS de conteúdo).Access-Control-Allow-Methods: POST, GET, OPTIONS.Access-Control-Allow-Headers: Content-Type, Authorization.
Conexão com Plugins de LMS no WordPress
Se o seu WordPress já utiliza plugins como LearnDash, LifterLMS ou Tutor LMS, o manipulador de PUTPARAM pode disparar hooks nativos desses plugins (como marcar tópicos como concluídos ou atualizar notas em quizzes). Isso une a robustez do WooCommerce na venda, o front-end amigável do plugin de LMS e o padrão de conformidade AICC corporativo.
Precisa de uma integração AICC personalizada para o seu WordPress?
Projetos com requisitos corporativos de e-learning exigem código limpo, segurança na transmissão de dados e tratamento adequado de sessões. Se a sua empresa precisa integrar pacotes AICC, SCORM ou conectar o WooCommerce a plataformas LMS externas, entre em contato para uma consultoria técnica especializada.


