A resposta curta: o WooCommerce avisa o seu código sempre que uma encomenda muda de estado, com a acção woocommerce_order_status_changed. Basta ligar a essa acção uma função que chama a nossa API de SMS com o telefone de facturação do cliente e um texto para cada estado.
Que estados avisar
| Estado no WooCommerce |
Quando acontece |
Exemplo de SMS |
| processing |
Pagamento recebido, encomenda em preparação |
Recebemos a sua encomenda 4521. Avisamos quando sair. |
| completed |
Encomenda concluída ou entregue |
A sua encomenda 4521 foi enviada. Obrigado! |
| on-hold |
À espera de pagamento por transferência ou referência |
A encomenda 4521 aguarda o pagamento. Os dados estão no e-mail que enviamos. |
O que quer dizer cada estado está em estados das encomendas no WooCommerce. Não avise todos: dois ou três momentos chegam.
O código
Defina a chave no wp-config.php, fora do código do tema, com define('RLX_SMS_CHAVE', 'prod_...'); e acrescente:
// num plugin seu ou no functions.php do tema filho
add_action('woocommerce_order_status_changed', function ($id, $de, $para, $order) {
$textos = [
'processing' => 'Recebemos a sua encomenda %s. Avisamos quando sair.',
'completed' => 'A sua encomenda %s foi enviada. Obrigado!',
];
if (empty($textos[$para]) || !$order->get_billing_phone()) { return; }
wp_remote_post('https://api.mozout.co.mz/v1/sms/messages', [
'timeout' => 10,
'headers' => [
'Authorization' => 'Bearer ' . RLX_SMS_CHAVE,
'Content-Type' => 'application/json',
'Idempotency-Key' => 'encomenda-' . $id . '-' . $para,
],
'body' => wp_json_encode([
'number' => $order->get_billing_phone(),
'text' => sprintf($textos[$para], $order->get_order_number()),
]),
]);
}, 10, 4);
| 1 |
A chave é criada na página API do Meu MozOut, só com sms:write.
|
|
| 2 |
O telefone é o de facturação da encomenda. Peça-o no checkout com o formato certo: a nossa API aceita os números com ou sem o indicativo, porque o sistema reconhece o país pelo primeiro algarismo: 841234567 vai para Moçambique e 923456789 para Angola. Assim, +258 84 123 4567 e 258841234567 são o mesmo número que 841234567.
|
|
| 3 |
A Idempotency-Key junta o id da encomenda e o estado: a mesma mudança nunca dá dois SMS.
|
|
| 4 |
O timeout de 10 segundos evita que um problema de rede atrase a página do cliente ou do administrador.
|
|
|
Os textos do exemplo não têm acentos de propósito: letras como «ã» ou «ç» passam a mensagem a Unicode e cada parte leva menos caracteres. Se quiser acentos, confira o custo em quantos créditos gasta um SMS.
|
|
Teste com uma chave sandbox_ e uma encomenda de teste: o pedido é conferido mas não sai nem é cobrado. Mude para a chave prod_ quando tudo estiver certo.
|
|
Quer avisar os seus clientes do WooCommerce por SMS? Veja a página da API e crie a chave.
Ver a página da API
|