Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Mineur

Contenu

Sommaire
maxLevel1
stylenone


Développer
titleListe des fonctionnalités avancées
Contenu par étiquette
showLabelsfalse
max10
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@9a3
showSpacefalse
sorttitle
typepage
cqllabel = "fonctionnalite_avancee" and type = "page" and space = "DT"
labelsbancontact belgique choixdelamarque




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.


Bloc de code
languagejs
themeEmacs
titleExample d'une fonction d'encryption
linenumberstrue
collapsetrue
   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());
   }



Les pages associées

Contenu par étiquette
showLabelsfalse
showSpacefalse
sorttitle
cqllabel = "fonctionalité_avancée" and space = "DT"