Page tree
Skip to end of metadata
Go to start of metadata


Le principe 

Vous pouvez demander des paramètres de chiffrement à Payline afin d'encoder vos données sensibles pour vos appels web services.

Les étapes de chiffrement

Le traitement se déroule en 3 étapes : 

  1. Le marchand demande des paramètres pour générer la clef d'encryption.
  2. Le marchand encrypte les données sensibles sur son serveur.
  3. Le marchand appelle les web services de Payline avec les données encryptées.

Comment intégrer l'encryption

Pour commencer cette étape, vous devez avoir un commerçant et une clef d'accès marchand.

Vous devez intégrer les web services Payline et connaitre l'encryption de données RSA : 

  • getEncryptionKey : permet de récupérer les paramètres d'encryption pour encrypter votre message. 


Vous devez intégrer les web services Payline : 

  1. Le marchand réalise un getEncryptionKey : permet de récupérer les paramètres d'encryption.
    Le marchand récupère les paramètres d'encryption et la key.keyId de getEncryptionKeyReponse

  2. Le marchand peut alors encrypter le message avec les données sensibles.

    La fonction d'encryption doit :
    • générer une clef public avec les paramètres récupérés dans le getEncryptionKeyReponse : algo, modulus, exponent ;
    • contruire la clé publique avec les paramètres : Modulus et publicExponent ;
    • construire le cipher est retouné par le service getEncryptionKeyReponse ;
    • encrypter le message avec les paramètres suivant : le message formaté avec les données sensibles, le cipher et la publicKey.

           Message = "CardNumber=497010000000006,ExpDate=0220,CVX=123,OwnerBirthDate=,Password=Payline01$,Cardholder=Jeremy Mattio"

    • encoder le message en base64.

  3. Le marchand peut alors appeler les web services Payline en transmettant le message encrypté dans la balise encryptionData et la clef ID du service getEncryptionKeyReponse dans la balise encryptionKeyId.
    Consulter le wbs getEncryptionKey pour lister les wbs utilisant le message encrypté.


A partir de la version 21 : Payline rajoute des éléments Cipher, Algo et Size pour encrypter le message.


Example d'une fonction d'encryption
   public void getRSAEncodedMessage() throws Exception{
       String message = "CardNumber=497010000000006,ExpDate=0220,CVX=123,OwnerBirthDate=,Password=Payline1,Cardholder=Alain Durand";
       String cipherName = "RSA/ECB/OAEPWithSHA-256AndMGF1Padding";
       Cipher cipher = Cipher.getInstance(cipherName);
       String algo = "RSA";
       String modulus = "AOLndIya3+ViAuP07V1Ky+YRuZK6zsMUsVIPP3xhFCS1CSJb9oBLmmzkMMASAn0TQ7BrELuNbY1+9VT30ah1N0mX0BzIBqE5sojV+CkafF+LtIntpF1wUhguXlcFOXcBLCECiMA4gBqHJMrVxnF626M1S6Wi2++WUwFgPTtHdn4B7e0RMvWqFr6uKBDq1qhdP8iziiAn/YPPp5ObgxuabWvPAZvRMDmgflNLYCOZB05LjZXMDvkLaYy244iY0tmVWwa7WYi2lJ7N0wK6gpDXD1WQh42AQuyVQX9i/m3oOjH8iqdRZG8FuaoHkBtON9zhz+ZyuBAwb+zNZWBDvnp6V0E=";
       String publicExponent = "AQAB";

       final KeyFactory fact = KeyFactory.getInstance(algo);
       PublicKey publicKey =  fact.generatePublic(new RSAPublicKeySpec(new BigInteger(Base64.decodeBase64(modulus.getBytes())), new BigInteger(Base64.decodeBase64(publicExponent.getBytes()))));
       System.out.println("Message encoded : " + Base64.encodeBase64String(encrypt(cipher, publicKey, message)));
   }


   public static byte[] encrypt(Cipher cipher, Key key, String message) throws Exception {
       cipher.init(Cipher.ENCRYPT_MODE, key);
       return cipher.doFinal(message.getBytes());
   }