Integração Simples e Poderosa

🔑 Chave de API de Exemplo

💸 Documentação da API de Pagamentos

Utilize a nossa API para iniciar transações de mobile money (M-Pesa, e-Mola) diretamente da sua aplicação. Todas as requisições devem incluir a sua chave de API de pagamentos no URL.


Endpoint de Transação

Para iniciar um pagamento, envie uma requisição POST para o seguinte endpoint:

POST pagafacil.ecomap.co.mz/api/v1/transfer/[A_SUA_CHAVE_DE_PAGAMENTOS]
Cabeçalhos da Requisição
Cabeçalho Valor Descrição
Content-Type application/json Indica que o corpo da requisição está em formato JSON.
Parâmetros do Corpo (JSON)

O corpo da sua requisição POST deve ser um objeto JSON com os seguintes campos:

Parâmetro Tipo Obrigatório Descrição
name String Sim Uma descrição dos produtos ou serviços a serem pagos (ex: "Ebook de Finanças", "Fatura #123"). Não pode ser nulo.
amount Number Sim O valor total a ser pago, em meticais (MZN).
phone String Sim O número de telefone do cliente para o qual a requisição de pagamento será enviada (9 dígitos, ex: 84xxxxxxx ou 86xxxxxxx).

💻 Exemplos de Código & Respostas (Pagamentos)

Abaixo estão exemplos práticos de como integrar com a nossa API de pagamentos em diferentes linguagens.

curl --location --request POST 'pagafacil.ecomap.co.mz/api/v1/transfer/[A_SUA_CHAVE_DE_PAGAMENTOS]' \
--header 'Content-Type: application/json' \
--data-raw '{
  "name": "Curso de Programação",
  "amount": 2500,
  "phone": "841234567"
}'
const url = 'https://pagafacil.ecomap.co.mz/api/v1/transfer/[A_SUA_CHAVE_DE_PAGAMENTOS]';

const data = {
  name: "Curso de Programação",
  amount: 2500,
  phone: "841234567"
};

async function makePayment() {
  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(data)
    });
    
    const result = await response.json();
    console.log(result);
  } catch (error) {
    console.error('Erro:', error);
  }
}

makePayment();
import requests
import json

url = "https://pagafacil.ecomap.co.mz/api/v1/transfer/[A_SUA_CHAVE_DE_PAGAMENTOS]"

payload = json.dumps({
  "name": "Curso de Programação",
  "amount": 2500,
  "phone": "841234567"
})

headers = {
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
<?php

$curl = curl_init();
$apiKey = '[A_SUA_CHAVE_DE_PAGAMENTOS]';

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://pagafacil.ecomap.co.mz/api/v1/transfer/' . $apiKey,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => json_encode([
    'name' => 'Curso de Programação',
    'amount' => 2500,
    'phone' => '841234567'
  ]),
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

💰 Documentação da API de Saques

Utilize este endpoint para processar saques da sua conta para um número de telemóvel. A autenticação é feita através de um Bearer Token no cabeçalho da requisição.


Endpoint de Saque

Para iniciar um saque, envie uma requisição POST para o seguinte endpoint:

POST https://pagafacil.ecomap.co.mz/api/v1/withdraw/
Cabeçalhos da Requisição

Para autenticar a sua requisição, precisa de incluir a sua Chave de API de Saques no cabeçalho Authorization.

Cabeçalho Valor Descrição
Content-Type application/json Indica que o corpo da requisição está em formato JSON.
Authorization Bearer [SUA_CHAVE_DE_API_DE_SAQUES] Obrigatório. A sua chave secreta para autorizar saques. Deve ser precedida por "Bearer ".
Parâmetros do Corpo (JSON)
Parâmetro Tipo Obrigatório Descrição
amount Number Sim O valor total a ser sacado, em meticais (MZN).
phone String Sim O número de telefone que receberá o valor do saque (9 dígitos, ex: 86xxxxxxx ou 87xxxxxxx).

💻 Exemplos de Código & Respostas (Saques)

Abaixo estão exemplos práticos de como integrar com a nossa API de saques em diferentes linguagens.

curl --location --request POST 'https://pagafacil.ecomap.co.mz/api/v1/withdraw/' \
--header 'Authorization: Bearer [SUA_CHAVE_DE_API_DE_SAQUES]' \
--header 'Content-Type: application/json' \
--data-raw '{
  "amount": 500,
  "phone": "861234567"
}'
const apiKey = '[SUA_CHAVE_DE_API_DE_SAQUES]';
const url = 'https://pagafacil.ecomap.co.mz/api/v1/withdraw/';

const data = {
  amount: 500,
  phone: "861234567"
};

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${apiKey}`
  },
  body: JSON.stringify(data)
})
  .then(res => res.json())
  .then(console.log)
  .catch(console.error);
import requests
import json

api_key = "[SUA_CHAVE_DE_API_DE_SAQUES]"
url = "https://pagafacil.ecomap.co.mz/api/v1/withdraw/"

payload = json.dumps({
  "amount": 500,
  "phone": "861234567"
})

headers = {
  'Content-Type': 'application/json',
  'Authorization': f'Bearer {api_key}'
}

response = requests.post(url, headers=headers, data=payload)

print(response.json())
<?php

$apiKey = '[SUA_CHAVE_DE_API_DE_SAQUES]';
$url = 'https://pagafacil.ecomap.co.mz/api/v1/withdraw/';

$data = [
  'amount' => 500,
  'phone' => '861234567'
];

$curl = curl_init($url);

curl_setopt_array($curl, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => json_encode($data),
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $apiKey
  ]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
✅ Resposta de Sucesso (200 OK)

Indica que o saque foi processado e concluído com sucesso pelo provedor (M-Pesa, e-Mola, etc.).

{
  "status": "success",
  "message": "Pagamento efetuado com sucesso",
  "data": {
    "output_ResponseCode": "INS-0",
    "output_TransactionID": "unique_id_from_provider"
    // ... outros dados da resposta do provedor
  }
}
❌ Respostas de Erro

Acontecem quando há um problema com a requisição (ex: chave de API inválida) ou quando o provedor recusa a transação (ex: saldo insuficiente).

// Exemplo: Chave de API inválida ou ausente (401 Unauthorized)
{
  "status": "error",
  "message": "Autenticação falhou. Token inválido ou ausente."
}

// Exemplo: Falha na transação pelo provedor
{
  "status": "error",
  "method": "mpesa",
  "message": "Pagamento não efetuado com sucesso. Saldo insuficiente."
}