Plugin EDPay para WooCommerce (WordPress)
Integração nativa multi-gateway para lojas WooCommerce no WordPress. Permite receber pagamentos por Carteiras Móveis (e-Mola e M-Pesa), Cartões de Débito/Crédito (Visa / Mastercard), Apple Pay, Google Pay e Referência Bancária.
Repositório Oficial do Plugin
Código-fonte aberto, compatível com WordPress 6.0+ e WooCommerce 7.0+ (PHP 7.4 a 8.3).
Especificações da Integração
Moeda & Tarifa
Metical (MZN) · tarifa plana de 6%
Liquidação bancária em 2 a 7 dias úteis.
Modos de Operação
Sandbox (Teste) & Live (Produção)
Alternância instantânea por credenciais.
Canal de Confirmação
Webhooks Assinados HMAC-SHA256
Atualização assíncrona automática de encomendas.
1. Instalação do Plugin
O plugin pode ser descarregado a partir do repositório GitHub ou instalado via WP-CLI directamente no servidor:
# Instalação via WP-CLI no directório do WordPress
cd /var/www/html/wp-content/plugins
git clone https://github.com/edutecka/edpay-woocommerce-plugin.git edpay-woocommerce
wp plugin activate edpay-woocommerce2. Configuração no Painel do WooCommerce
No painel de administração do WordPress, navegue para WooCommerce > Definições > Pagamentos > EDPay Multi-Gateway e preencha os seguintes parâmetros técnicos:
| Campo | Valor Exigido | Descrição Técnica |
|---|---|---|
| Modo de Operação | Sandbox ou Produção | Determina se os pedidos utilizam pk_test_... ou pk_live_.... |
| Public Key | pk_live_... / pk_test_... | Chave pública transmitida no cabeçalho X-EDPay-Public-Key. |
| Private Key | sk_live_... / sk_test_... | Chave secreta transmitida no cabeçalho X-EDPay-Private-Key (armazenada de forma segura na tabela wp_options). |
| Webhook Secret | Segredo HMAC | Chave secreta para validação criptográfica do cabeçalho X-EDPay-Signature. |
| Canal Padrão e-Mola | Texto customizado | Mensagem personalizada exibida no prompt USSD do cliente e-Mola (máx. 100 caracteres). |
3. Processamento de Webhooks e Confirmação de Encomendas
O endpoint padrão do webhook é registado automaticamente no WooCommerce através da API de acções:https://seusite.co.mz/?wc-api=edpay_webhook.O snippet abaixo ilustra a validação técnica de assinatura e a transição de estado da encomenda:
<?php
/**
* Verificação de Assinatura Webhook EDPay no WooCommerce
* Rota padrão: https://seusite.co.mz/?wc-api=edpay_webhook
*/
$payload = file_get_contents('php://input');
$signatureHeader = $_SERVER['HTTP_X_EDPAY_SIGNATURE'] ?? '';
$webhookSecret = get_option('woocommerce_edpay_webhook_secret'); // sk_live_... ou segredo de webhook
$expectedSignature = hash_hmac('sha256', $payload, $webhookSecret);
if (!hash_equals($expectedSignature, $signatureHeader)) {
http_response_code(401);
echo json_encode(['error' => 'invalid_signature']);
exit;
}
$event = json_decode($payload, true);
if ($event['event'] === 'payment.succeeded') {
$orderId = (int) $event['data']['reference'];
$order = wc_get_order($orderId);
if ($order && !$order->is_paid()) {
$order->payment_complete($event['data']['id']);
$order->add_order_note(sprintf(
'Pagamento confirmado via EDPay (%s). ID da transacção: %s. Tarifa plana da plataforma: 6%% em MZN.',
esc_html($event['data']['method']),
esc_html($event['data']['id'])
));
}
}
http_response_code(200);
echo json_encode(['received' => true]);Payload Exemplo Recebido pelo Webhook (200 OK)
{
"id": "evt_wc_019313264c8f74a0",
"event": "payment.succeeded",
"created_at": "2026-11-08T12:00:00Z",
"data": {
"id": "pay_019313264c8f74a0a4c519d5c805eb5a",
"reference": "10492",
"amount": 2500,
"currency": "MZN",
"fee": 150,
"net_amount": 2350,
"status": "succeeded",
"method": "emola",
"customer_phone": "+25884xxxxxxx"
}
}