Criptografia

Para aumentar a segurança das transações a API Moip trabalha com o conceito de criptografia ponta-a-ponta. Isto é, os dados sensíveis de cartão de crédito são criptografados nas aplicações clientes (browser, apps nativos) e somente são descriptografados nos servidores da Moip. Veja abaixo o passo-a-passo de como realizar criptografia nos principais clientes:

Obtendo uma chave pública

As chaves públicas de criptografia são disponibilizadas dentro de sua Conta Moip. Acesse pelo link da conta de sandbox ou de produção caso você já tenha passado pelo processo de homologação e esteja nos últimos detalhes para transacionar de verdade.

Criptografia no Browser

A SDK de criptografia Javascript é uma biblioteca client-side e está disponível em nosso GitHub, você deve utilizá-la caso esteja fazendo a criptografia dos dados do cliente no browser ou em apps que rodem em frameworks html5 (Ionic, React, etc.). Para integrações em ambientes Mobile você deve criptografar os dados usando nossas SDKs Android e iOS.

👍

EXEMPLO

Você pode ver exemplos e instruções de instalação clicando aqui.

Criptografia no Android

Criamos um SDK para facilitar a criptografia dos dados do cartão de seu cliente em apps Android nativos. Em nosso Github você pode encontrar um zip com as dependências para que você adicione o SDK em seu projeto. Caso você utilize o Gradle você pode utilizar a linha abaixo:

compile 'com.madgag.spongycastle:pkix:1.51.0.0'

Para fazer a criptografia dos dados do cartão, você deve adicionar a sua chave pública em seu app.

final String PUBLIC_KEY = "-----BEGIN PUBLIC KEY-----\n"+
        "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoBttaXwRoI1Fbcond5mS\n"+
        "7QOb7X2lykY5hvvDeLJelvFhpeLnS4YDwkrnziM3W00UNH1yiSDU+3JhfHu5G387\n"+
        "O6uN9rIHXvL+TRzkVfa5iIjG+ap2N0/toPzy5ekpgxBicjtyPHEgoU6dRzdszEF4\n"+
        "ItimGk5ACx/lMOvctncS5j3uWBaTPwyn0hshmtDwClf6dEZgQvm/dNaIkxHKV+9j\n"+
        "Mn3ZfK/liT8A3xwaVvRzzuxf09xJTXrAd9v5VQbeWGxwFcW05oJulSFjmJA9Hcmb\n"+
        "DYHJT+sG2mlZDEruCGAzCVubJwGY1aRlcs9AQc1jIm/l8JwH7le2kpk3QoX+gz0w\n"+
        "WwIDAQAB\n"+
        "-----END PUBLIC KEY-----";

Após adicionar sua chave pública, você deve criar o objeto Credit Card.

CreditCard creditCard = new CreditCard();
        creditCard.setCvc("123");
        creditCard.setNumber("4340948565343648");
        creditCard.setExpirationMonth("12");
        creditCard.setExpirationYear("2030");
        creditCard.setPublicKey(PUBLIC_KEY);

Uma vez que você tem o objeto com os dados do cartão de seu cliente, você deverá utilizar o método encrypt(), esse método fará a criptografia dos dados do cartão criado por você.

try {
  creditCard.encrypt();
} catch (MoipEncryptionException mee) {
  
}

Após a criptografia ocorrer você receberá uma string que será correspondente a um hash do cartão de crédito, com esse hash em mãos você poderá criar um Pagamento ou um Multipagamento na Moip.

Criptografia iOS

Após fazer a integração da criação dos pedidos em sua aplicação no iOS, você deve utilizar o nosso SDK (open source) para fazer a criptografia dos dados e assim poder criar pagamentos sem se preocupar com o escopo PCI. O SDK iOS está em nosso Github.

O primeiro passo para fazer a criptografia é importar o SDK em sua aplicação.

#import <MoipSDK/MoipSDK.h>

Após importar o SDK, você deve adicionar a sua Chave Pública em seu app.

NSString *myPublicKey = @"-----BEGIN PUBLIC KEY-----\n"+
        "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoBttaXwRoI1Fbcond5mS\n"+
        "7QOb7X2lykY5hvvDeLJelvFhpeLnS4YDwkrnziM3W00UNH1yiSDU+3JhfHu5G387\n"+
        "O6uN9rIHXvL+TRzkVfa5iIjG+ap2N0/toPzy5ekpgxBicjtyPHEgoU6dRzdszEF4\n"+
        "ItimGk5ACx/lMOvctncS5j3uWBaTPwyn0hshmtDwClf6dEZgQvm/dNaIkxHKV+9j\n"+
        "Mn3ZfK/liT8A3xwaVvRzzuxf09xJTXrAd9v5VQbeWGxwFcW05oJulSFjmJA9Hcmb\n"+
        "DYHJT+sG2mlZDEruCGAzCVubJwGY1aRlcs9AQc1jIm/l8JwH7le2kpk3QoX+gz0w\n"+
        "WwIDAQAB\n"+
        "-----END PUBLIC KEY-----";
[MoipSDK importPublicKey:myPublicKey];
MPKCreditCard *creditCard = [MPKCreditCard new];
creditCard.number = @"4111111111111111";
creditCard.cvc = @"999";
creditCard.expirationMonth = @"07";
creditCard.expirationYear = @"15";

Após adicionar sua chave pública, você deve criar o objeto Credit Card.

Com o objeto criado, você irá utilizar nosso método para criptografar os dados do cartão.

NSString * cryptData = [MoipSDK encryptCreditCard:creditCard];

Fazendo a criptografia você receberá um hash do cartão de crédito(string), uma vez que você tiver esse hash você poderá criar um Pagamento ou um Multipagamento na Moip.