SopagueDocs
v3

Biblioteca JavaScript para criptografia RSA e inserção de anti-fraude em aplicações web. Zero dependências, leve (~5KB minificado) e compatível com todos os navegadores modernos.

Funcionalidades

  • Criptografia RSA-OAEP com SHA-256
  • Biblioteca anti-fraude integrada
  • Zero dependências
  • Compatível com todos os navegadores modernos

Instalação via CDN

LTS (recomendado)

<script src="https://cdn.sopague.com.br/JS/GATEWAY/sopague-integration-library.min.js"></script>

Versão específica

<script src="https://cdn.sopague.com.br/JS/GATEWAY/sopague-integration-library-1.5.2.min.js"></script>

Download local

<script src="/libs/sopague-integration-library-1.0.0.min.js"></script>

Uso Rápido

Criptografia RSA

// Configurar chave pública
const publicKey = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
-----END PUBLIC KEY-----`;
 
Sopague.setEncryptPublicKey(publicKey);
 
// Criptografar número do cartão
const encrypted = await Sopague.encryptCard('0000000000000000');
console.log(encrypted); // string encriptada

O token criptografado expira em 5 minutos. Criptografe apenas no momento de processar o pagamento. Não armazene tokens criptografados por longos períodos.

Anti-Fraude

// Inicializar detecção de fraude
const sessionId = Sopague.initAntiFraud('bc5a19ab-4dec-4ce2-b489-6b7ada73b88c');
 
// Obter session ID atual
const currentSession = Sopague.getAntiFraudSessionId();
 
// Remover quando não for mais necessário
Sopague.removeAntiFraud();

API Completa

Criptografia

setEncryptPublicKey(publicKeyPem: string): void

Configura a chave pública RSA em formato PEM.

encryptCard(plainText: string): Promise<string>

Criptografa um número de cartão. O código gerado é válido por 5 minutos.

Anti-Fraude

initAntiFraud(antiFraudId: string, options?: Object): string

Inicializa o módulo de anti-fraude e retorna o session ID completo.

Parâmetros:

  • antiFraudId (string): GUID gerado pela sua aplicação
  • options (opcional):
    • orgId (string): ID da organização
    • sessionPrefix (string): Prefixo da sessão

removeAntiFraud(): void

Remove o iframe de anti-fraude.

getAntiFraudSessionId(): string | null

Retorna o session ID atual do anti-fraude.

setAntiFraudOrgId(orgId: string): void

Configura o ID da organização para anti-fraude.

setAntiFraudSessionPrefix(prefix: string): void

Configura o prefixo da sessão para anti-fraude.

Utilitários

getVersion(): string

Retorna a versão da biblioteca.

getInfo(): Object

Retorna informações detalhadas sobre a biblioteca e módulos ativos.

Exemplo: Integração JavaScript Vanilla

<!DOCTYPE html>
<html>
<head>
  <script src="https://cdn.sopague.com.br/JS/GATEWAY/sopague-integration-library.min.js"></script>
</head>
<body>
  <input type="text" id="inputData" placeholder="Número do cartão">
  <button id="btnEncrypt">Criptografar</button>
  <div id="output"></div>
 
  <script>
    const publicKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC...
-----END PUBLIC KEY-----`;
 
    document.getElementById('btnEncrypt').addEventListener('click', async () => {
      const data = document.getElementById('inputData').value.replace(/\s/g, '');
      if (!data) return alert('Informe o número do cartão!');
 
      Sopague.initAntiFraud('b12d3b7a-2f8b-4281-84ee-b4e99e029aa1');
      Sopague.setEncryptPublicKey(publicKey);
 
      const encrypted = await Sopague.encryptCard(data);
      document.getElementById('output').textContent = encrypted;
    });
  </script>
</body>
</html>

Tipagens TypeScript (NextJS)

declare global {
  interface Window {
    Sopague: {
      setEncryptPublicKey: (key: string) => void;
      encryptCard: (text: string) => Promise<string>;
      initAntiFraud: (antiFraudId: string, options?: { orgId: string; sessionPrefix: string }) => string;
      removeAntiFraud: () => void;
      getAntiFraudSessionId: () => string | null;
      getVersion: () => string;
      getInfo: () => object;
    };
  }
}

Compatibilidade

  • Chrome 37+, Firefox 34+, Safari 11+, Edge 79+
  • Requer HTTPS (Web Crypto API)
  • Compatível com React, Next.js, Vue.js, Angular e JavaScript Vanilla