npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

momenu-payments

v1.0.5

Published

SDK de pagamentos Angolanos para React — Multicaixa Express e Referência ATM.

Readme

MoMenu Payments SDK 🚀

NPM version License

O SDK de pagamentos oficial da MoMenu para React. Integre pagamentos angolanos (Multicaixa Express e Referência Bancária) na sua aplicação em minutos com conformidade SAFT-AO.


📦 Instalação

npm install momenu-payments

Importe os estilos globais na raiz do seu projecto (ex: main.tsx ou App.tsx):

import 'momenu-payments/style.css';

🚀 Início Rápido

1. Configurar o Provider

Envolva a sua aplicação com o MoMenuPaymentProvider:

import { MoMenuPaymentProvider } from 'momenu-payments';

function App() {
  return (
    <MoMenuPaymentProvider 
        config={{ 
            apiKey: 'SUA_API_KEY',
            qaMode: true // Ative para testes
        }}
    >
      <MinhaApp />
    </MoMenuPaymentProvider>
  );
}

2. Adicionar o Checkout Premium

O componente MoMenuCheckout oferece uma interface completa e moderna com todos os métodos suportados.

import { MoMenuCheckout } from 'momenu-payments';

function CheckoutPage() {
  const products = [
    { id: '1', productName: 'iPhone 15 Pro', productPrice: 1500000, productQuantity: 1 }
  ];

  return (
    <MoMenuCheckout
      amount={1500000}
      products={products}
      onSuccess={(data) => console.log('Sucesso:', data)}
      onError={(err) => console.error('Erro:', err)}
    />
  );
}

Props do MoMenuCheckout

| Prop | Tipo | Obrigatório | Default | Descrição | |---|---|---|---|---| | amount | number | ✅ | — | Valor total em Kwanzas | | products | PaymentProduct[] | ❌ | — | Lista de produtos para facturação SAFT-AO | | customer | PaymentCustomer | ❌ | — | Dados do cliente (pré-preenchimento) | | initialMethod | 'mcx' \| 'reference' | ❌ | 'mcx' | Método de pagamento seleccionado por defeito | | isModal | boolean | ❌ | true | Exibe o checkout como modal com overlay | | isOpen | boolean | ❌ | true | Controla a visibilidade do modal | | onClose | () => void | ❌ | — | Callback ao fechar o modal | | simulateResult | SimulateResult | ❌ | — | Simula resultados em modo QA | | onSuccess | (data: any) => void | ❌ | — | Callback de pagamento bem-sucedido | | onError | (error: any) => void | ❌ | — | Callback de erro no pagamento |

Exemplo com modal controlado:

const [open, setOpen] = useState(false);

<MoMenuCheckout
  amount={5000}
  isModal={true}
  isOpen={open}
  initialMethod="reference"
  onClose={() => setOpen(false)}
  onSuccess={(data) => console.log(data)}
/>

🧾 Facturação SAFT-AO

Para que a API da MoMenu gere facturas válidas automaticamente, o SDK permite passar os dados do cliente e a lista de produtos.

Dados do Cliente (PaymentCustomer)

Pode passar dados iniciais do cliente, mas o utilizador também tem a opção de os introduzir/editar directamente na interface do checkout.

| Campo | Tipo | Obrigatório | Descrição | |---|---|---|---| | name | string | ✅ | Nome completo do cliente | | nif | string | ❌ | NIF para facturação SAFT-AO | | phone | string | ❌ | Número de telefone do cliente |

const customer = {
  name: 'João Lourenço',
  nif: '5000123456',
  phone: '244923456789'
};

// No componente
<MoMenuCheckout amount={5000} products={products} customer={customer} />

[!TIP] De acordo com as regras de facturação, se o Nome for fornecido, o NIF também deve ser (e vice-versa). O SDK valida isto automaticamente na interface.

Produtos (PaymentProduct)

A lista de produtos permite que a API calcule o total exacto com IVA incluído, garantindo facturas SAFT-AO válidas.

| Campo | Tipo | Obrigatório | Descrição | |---|---|---|---| | id | string | ✅ | Identificador único do produto | | productName | string | ✅ | Nome do produto para exibição | | productPrice | number | ✅ | Preço unitário em Kwanzas | | productQuantity | number | ✅ | Quantidade | | iva | number | ❌ | Taxa de IVA (1 a 14, default: 14) |

const products = [
  { id: '1', productName: 'Plano Pro', productPrice: 5000, productQuantity: 1, iva: 14 },
  { id: '2', productName: 'Taxa de Activação', productPrice: 1000, productQuantity: 1, iva: 7 },
];

💳 Métodos Suportados

1. Multicaixa Express (MCX)

O utilizador insere o número de telefone e confirma o pagamento instantaneamente na aplicação Multicaixa Express do seu dispositivo.

2. Referência Bancária (ATM)

O SDK gera uma Entidade e Referência únicas. O utilizador pode pagar em qualquer ATM ou via Internet Banking. O SDK inclui um botão "✓ Já Paguei" para verificação imediata após o pagamento.


🎨 Personalização de Temas

O SDK foi desenhado para se adaptar à sua marca.

<MoMenuPaymentProvider
  config={{ apiKey: '...' }}
  theme={{
    primaryColor: '#F97316',          // Cor principal (Botões e destaques)
    primaryHoverColor: '#EA580C',     // Cor ao passar o rato
    borderRadius: '18px',             // Arredondamento dos componentes
    backgroundColor: '#ffffff',       // Fundo do modal/container
    cardColor: '#f8fafc',             // Cor dos cartões internos
    textColor: '#1e293b',             // Cor do texto
    fontFamily: 'Inter, sans-serif'   // Fonte personalizada
  }}
>

🧪 Ambiente de Testes (QA)

Ative o qaMode: true na configuração para usar o ambiente de testes da MoMenu.

Números Mágicos (Simulação MCX):

  • 244900000000: Sucesso ✅
  • 244900000001: Saldo Insuficiente ❌
  • 244900000002: Timeout (Expirado) ⏳
  • 244900000003: Rejeitado pelo Cliente 🚫
  • 244999999999: Número Inválido ⚠️

🧩 Componentes Individuais

Se necessitar de incorporar apenas um método de pagamento na sua própria UI, pode usar os sub-componentes directamente em vez do MoMenuCheckout completo.

MCXPaymentForm

Formulário de pagamento via Multicaixa Express.

import { MCXPaymentForm } from 'momenu-payments';

<MCXPaymentForm
  amount={5000}
  products={products}
  customer={customer}
  simulateResult="success" // QA only
  onSuccess={(data) => console.log(data)}
  onError={(err) => console.error(err)}
/>

ReferencePaymentDisplay

Geração e exibição de referência bancária (ATM), incluindo botão de verificação de pagamento.

import { ReferencePaymentDisplay } from 'momenu-payments';

<ReferencePaymentDisplay
  amount={5000}
  products={products}
  customer={customer}
  onSuccess={(data) => console.log(data)}
  onError={(err) => console.error(err)}
/>

🔧 Hooks Avançados

Se preferir construir a sua própria interface, pode usar os hooks internos:

  • useMCXPayment(): Gestão de fluxo Multicaixa Express.
  • useReferencePayment(): Geração e consulta de referências bancárias.
  • useMoMenuPayment(): Acesso ao cliente SDK e configurações globais.

💡 Dicas de Integração

[!TIP] Conformidade SAFT-AO (Evitar Erro 400): Se enviar a lista de products, o SDK omitirá automaticamente o campo amount no pedido para a API em todos os métodos. Isto permite que a MoMenu realize o cálculo total exacto com IVA, garantindo que a factura seja emitida sem discrepâncias.

[!IMPORTANT] Fiabilidade em Produção: O SDK implementa automaticamente uma estratégia de re-tentativa (retries) para erros de rede transientes e erros de servidor (5xx), garantindo que o checkout não falhe por instabilidades momentâneas da ligação.

[!IMPORTANT] Testes em Localhost: Para evitar erros de autorização de domínio em desenvolvimento, adicione http://localhost:5173 (ou a sua porta local) à lista de domínios permitidos no seu Painel MoMenu.


📱 Responsividade

O SDK é Mobile-First e utiliza técnicas modernas de blur e glassmorphism, garantindo uma experiência premium em iPhones, Androids e Desktop.


📖 Recursos e Suporte


MIT © Toquemedia