Documentação da API

Integre pagamentos na sua aplicação de forma simples e segura.

Autenticação

Todos os pedidos à API devem ser autenticados usando a sua API Key. A chave deve ser enviada no cabeçalho (header) Authorization.

Você pode encontrar a sua API Key na sua página de perfil.

Authorization: ApiKey <SUA_API_KEY>

Processar um Pagamento

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

POST /api/v1/processar/

Parâmetros do Corpo (Body)

Parâmetro Tipo Obrigatório Descrição
metodo string Sim O método de pagamento. Atualmente, apenas "mpesa" é suportado.
valor string Sim O montante a ser cobrado. Ex: "150.00".
numero_celular string Sim O número de telemóvel do cliente a ser cobrado (ex: "841234567").
referencia_externa string Não Uma referência do seu sistema (ex: ID do pedido).

Exemplos de Requisição

import requests
import json

API_KEY = 'sua_api_key_aqui'
API_URL = 'https://paymoz.tech/api/v1/processar/'

headers = {
    'Authorization': f'ApiKey {API_KEY}',
    'Content-Type': 'application/json'
}

payload = {
    "metodo": "mpesa",
    "valor": "10.00",
    "numero_celular": "841234567"
}

response = requests.post(API_URL, headers=headers, data=json.dumps(payload))

print(response.status_code)
print(response.json())

Resposta de Sucesso

Quando um pedido de pagamento é processado com sucesso, a API retornará um código de status 200 OK e um corpo JSON com os detalhes da transação.

{
  "sucesso": true,
  "mensagem": "Pagamento processado com sucesso.",
  "dados": {
    "output_ResponseCode": "INS-0",
    "output_ResponseDesc": "Request processed successfully",
    "output_TransactionID": "7m2swkzme9y9",
    "output_ConversationID": "8afbf904889f4e88a35e22ae7df796a7",
    "output_ThirdPartyReference": "PAYMOZOAXCGF"
  }
}
  • output_TransactionID: O ID único da transação gerado pelo M-Pesa.
  • output_ConversationID: Um ID de conversação para fins de reconciliação.
  • output_ThirdPartyReference: A referência única que a Paymoz enviou para o M-Pesa (a mesma que a sua referencia_paymoz).

Respostas de Erro

A API utiliza códigos de status HTTP padrão para indicar o sucesso ou a falha de uma requisição. Em caso de erro, o corpo da resposta conterá um objeto JSON com uma chave erro descrevendo o problema.

400 Bad Request - Requisição Inválida

Ocorre quando faltam parâmetros obrigatórios ou os dados enviados são inválidos.

{
  "erro": "Os campos metodo, valor e numero_celular são obrigatórios."
}

Também pode ocorrer em caso de falha de comunicação com o provedor de pagamento (ex: timeout).

{
  "sucesso": false,
  "erro": "Falha na comunicação com o M-Pesa (Erro 408)."
}

401 Unauthorized - Autenticação Falhou

Ocorre quando a API Key não é fornecida ou é inválida.

{
  "detail": "API Key inválida ou não encontrada."
}

403 Forbidden - Permissão Negada

Ocorre se o utilizador autenticado não tiver permissão para realizar a ação (ex: plano expirado).

{
  "detail": "Você não tem permissão para realizar esta ação."
}

500 Internal Server Error - Erro no Servidor

Indica um erro inesperado no nosso lado. A nossa equipe é notificada automaticamente, mas se o problema persistir, por favor, entre em contacto com o suporte.

{
  "erro": "Ocorreu um erro interno inesperado."
}