Este SDK TypeScript fornece uma interface completa para integração com a API PayPay Africa, permitindo processar pagamentos via PayPay APP, MULTICAIXA Express e por referência.
- ✅ Suporte completo para todos os métodos de pagamento PayPay Africa
- ✅ Encriptação e assinatura RSA automática
- ✅ Verificação de assinaturas de resposta
- ✅ TypeScript com tipagem completa
- ✅ Tratamento de erros robusto
- ✅ Exemplos de uso detalhados
- PayPay APP - Pagamentos através da aplicação móvel PayPay
- MULTICAIXA Express - Pagamentos através do sistema MULTICAIXA Express
- Pagamento por Referência - Pagamentos através de referência bancária
- Transferências - Transferências para contas bancárias e contas PayPay
- Reembolsos - Processamento de reembolsos totais e parciais
- Consultas - Verificação do status de pagamentos
npm install crypto
# ou
yarn add cryptoAntes de usar o SDK, é necessário configurar as suas credenciais PayPay:
import PayPaySDK, { PayPayConfig } from './paypay-typescript-sdk';
const config: PayPayConfig = {
partnerId: 'SEU_PARTNER_ID',
privateKey: `-----BEGIN PRIVATE KEY-----
SEU_PRIVATE_KEY_AQUI
-----END PRIVATE KEY-----`,
publicKey: `-----BEGIN PUBLIC KEY-----
CHAVE_PUBLICA_PAYPAY_AQUI
-----END PUBLIC KEY-----`,
baseUrl: 'https://openapi.paypayafrica.com/gateway.do', // Opcional
version: '1.0', // Opcional
charset: 'UTF-8', // Opcional
format: 'JSON', // Opcional
language: 'pt' // Opcional
};
const payPaySDK = new PayPaySDK(config);const payment = {
requestNo: `PAY_${Date.now()}`,
amount: 1000, // 1000 AOA
currency: 'AOA',
subject: 'Compra de produto',
body: 'Descrição detalhada do produto',
notifyUrl: 'https://seusite.com/notify',
returnUrl: 'https://seusite.com/return',
timeoutExpress: '30m'
};
const response = await payPaySDK.createPayPayAppPayment(payment);
if (response.code === '10000') {
// Redirecionar para o URL de pagamento
window.location.href = response.bizContent.payUrl!;
}const payment = {
requestNo: `MCX_${Date.now()}`,
amount: 2500,
currency: 'AOA',
subject: 'Pagamento de serviço',
notifyUrl: 'https://seusite.com/notify',
returnUrl: 'https://seusite.com/return'
};
const response = await payPaySDK.createMulticaixaExpressPayment(payment);
if (response.code === '10000') {
// Exibir QR Code para o utilizador
console.log('QR Code:', response.bizContent.qrCode);
}const payment = {
requestNo: `REF_${Date.now()}`,
amount: 5000,
currency: 'AOA',
subject: 'Pagamento de fatura',
notifyUrl: 'https://seusite.com/notify',
returnUrl: 'https://seusite.com/return',
timeoutExpress: '24h'
};
const response = await payPaySDK.createReferencePayment(payment);
if (response.code === '10000') {
// Exibir referência para o utilizador
console.log('Referência:', response.bizContent.reference);
}const response = await payPaySDK.queryPayment({
outTradeNo: 'PAY_1234567890'
});
if (response.code === '10000') {
console.log('Status:', response.bizContent);
}const response = await payPaySDK.refundPayment({
outTradeNo: 'PAY_1234567890',
refundAmount: 500,
refundReason: 'Produto defeituoso',
outRequestNo: `REFUND_${Date.now()}`
});const response = await payPaySDK.transferToBankAccount({
outBizNo: `TRANSFER_${Date.now()}`,
payeeType: 'ALIPAY_LOGONID',
payeeAccount: 'AO06000000012345678901234',
amount: 1000,
payerShowName: 'Sua Empresa Lda',
payeeRealName: 'João Silva',
remark: 'Pagamento de salário'
});O PayPay envia notificações para o seu notifyUrl quando o status de um pagamento muda. Aqui está como processar essas notificações:
import { PayPayIntegration } from './paypay-usage-examples';
const integration = new PayPayIntegration(config);
// No seu endpoint de notificação
app.post('/paypay/notify', async (req, res) => {
const success = await integration.processNotification(req.body);
if (success) {
res.status(200).send('success');
} else {
res.status(400).send('fail');
}
});| Código | Descrição |
|---|---|
| 10000 | Sucesso |
| 20000 | Erro do sistema |
| 20001 | Parâmetros inválidos |
| 40001 | Parceiro não existe |
| 40002 | Assinatura inválida |
| 40004 | Erro de encriptação |
- Gerar chave privada:
openssl genrsa -out rsa_private_key.pem 1024- Gerar chave pública:
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem- Carregar a chave pública no portal PayPay
- Descarregar a chave pública do PayPay
- ✅ Mantenha as chaves privadas seguras e nunca as exponha
- ✅ Use HTTPS para todas as comunicações
- ✅ Valide sempre as assinaturas das respostas
- ✅ Implemente timeouts apropriados
- ✅ Registe todas as transações para auditoria
- ✅ Use números de transação únicos
Nota: Atualmente, o PayPay Africa apenas fornece ambiente de produção. Todas as transações geram fundos reais.
Para questões técnicas ou problemas com a integração:
- Consulte a documentação oficial: https://portal.paypayafrica.com/passport/apidoc/guide
- Entre em contacto com o suporte PayPay Africa
- Verifique os logs de erro para detalhes específicos
Este SDK é fornecido como exemplo de integração. Consulte os termos de serviço do PayPay Africa para uso comercial.
Contribuições são bem-vindas! Por favor:
- Faça fork do repositório
- Crie uma branch para a sua funcionalidade
- Adicione testes se aplicável
- Submeta um pull request
- Implementação inicial do SDK
- Suporte para todos os métodos de pagamento
- Exemplos de uso completos
- Documentação detalhada