Génération de seToken
Qu'est-ce que seToken
seToken (Self Encrypted Token) - c'est un cryptogramme utilisé pour la transmission sécurisée des données de carte. Il peut être utilisé dans les requêtes suivantes, lorsque les données de carte sont collectées du côté du marchand :
Ci-dessous est décrit comment créer seToken et l'envoyer dans la requête de paiement.
Format seToken avant chiffrement
Avant chiffrement, seToken est une chaîne qui inclut de 5 à 9 paramètres, séparés par le symbole "/".
Paramètres inclus dans la composition de seToken
Le tableau ci-dessous énumère les paramètres qui peuvent être utilisés dans la chaîne seToken. Ces paramètres doivent être inclus dans la chaîne dans une séquence stricte selon ce tableau.
| Obligatoire | Nom | Type | Description |
|---|---|---|---|
| Oui | timestamp |
String | Date de la demande selon ISO 8601:2004 au format YYYY-MM-DDThh:mm:ss±hh:mm. |
| Oui | uuid |
String [1..32] | Identifiant au standard UUID formé conformément au document |
| Condition | PAN |
Integer [1..19] | Numéro de carte de débit des fonds monétaires. La demande doit inclure soit PAN, soit bindingId. |
| Obligatoire pour certaines méthodes. La liste des paramètres obligatoires seToken utilisés dans une méthode déterminée est énumérée dans la description de la méthode correspondante dans le Guide API. | |||
| Condition (voir description) | CVV |
String [3] | Code de vérification de la carte. Ce paramètre est obligatoire si l'autorisation Peut effectuer un paiement sans confirmation CVC n'est pas sélectionnée pour le marchand. Seuls les chiffres sont autorisés. |
| Condition | EXPDATE |
Integer [6] | Date d'expiration de la carte dans le format suivant : YYYYMM, où YYYY - année, MM - mois. |
| Obligatoire pour certaines méthodes. La liste des paramètres obligatoires seToken utilisés dans une méthode déterminée est énumérée dans la description de la méthode correspondante dans le Guide API. | |||
| Condition | mdOrder |
String [1..36] | Identifiant de commande pour le paiement par cryptogramme. |
| Obligatoire pour certaines méthodes. La liste des paramètres obligatoires seToken utilisés dans une méthode déterminée est énumérée dans la description de la méthode correspondante dans le Guide API. | |||
| Condition | bindingId |
String [1..255] | Identifiant d'une liaison déjà existante (identifiant de carte tokenisée par la passerelle). Il ne peut être utilisé que si le marchand a l'autorisation de travailler avec les liaisons. La demande doit inclure soit PAN, soit bindingId. |
| Obligatoire pour certaines méthodes. La liste des paramètres obligatoires seToken utilisés dans une méthode déterminée est énumérée dans la description de la méthode correspondante dans le Guide API. | |||
| Non | cardholder |
String | Nom du titulaire de la carte en lettres latines. |
| Non | registeredFrom |
String | SDK qui a été utilisé pour l'enregistrement de la commande. Valeurs autorisées : MSDK_CORE, MSDK_FORMS, MSDK_PAYMENT, WSDK_CORE, WSDK_PAYMENT
|
Exemple de chaîne générée :
2020-09-15T10:00:33+03:00/9bb1501a-1547-425a-a022-1db5ff8f72c4/5555555555555599/123/202412
où :
- temps correspondant 2020-09-15T10:00:33+03:00
- uuid
- PAN - 5555555555555599
- CVV - 123
- date d'expiration de la carte décembre 2024
Algorithme de création de requête de paiement
-
Envoyez une requête de clé
Pour cela, ouvrez le lien https://dev.bpcbt.com/payment/se/keys.do.
En résultat nous obtenons une clé dans le format suivant :
{ "keys": [ { "keyValue": "-----BEGIN PUBLIC KEY-----{PUBLIC KEY BODY}-----END PUBLIC KEY-----", "protocolVersion": "RSA", "keyExpiration": 1893456000000 }, { "keyValue": "-----BEGIN PUBLIC KEY-----{PUBLIC KEY BODY}-----END PUBLIC KEY-----", "protocolVersion": "RSA", "keyExpiration": 1924992000000 } ] }Où :
-
keyValue- représentation en chaîne de la clé publique RSA 2048 -
keyExpiration- date planifiée d'expiration de la clé, date en secondes selon le standard de temps UNIX -
protocolVersion- version de l'algorithme de chiffrement
-
-
Enregistrez la commande
-
Générez la chaîne qui doit être chiffrée
Dans notre exemple ci-dessus la valeur
orderId=b94eac90-e487-796a-8ed2-cf5a00096352est indiquée commeUUID. Nous obtenons la chaîne :2020-09-15T10:00:33+03:00/9bb1501a-1547-425a-a022-1db5ff8f72c4/5555555555555599/123/202412 -
Chiffrez la chaîne obtenue
La chaîne obtenue doit être chiffrée en utilisant l'algorithme de chiffrement RSA "RSA/None/PKCS1Padding" avec une longueur de clé de 2048.
Exemple de résultat de chiffrement :
Cfqv4t2XHBb9k8ixM7jxxCvziETS4koa3bV3F0QUvGVY47nKyMBqjGzV/rvmCAw6KzwoBDzeLsqwBLEzvQhaF627ZS0OJnhttBi4fL3/h/sBSwFtxr3s+oVUeoE3e4SNVUq9vciinOyNCIKqfpeQya+pOUYt3MgrtSeu66Ar12XEj4k6lecZN7Ffquj9RqhZsYhP63np5VCxJR90cNQG+TMWIFU6rqxLAe4gzCJtcXNrPT8aDOI201Zwd+e4K1YnrI7dZGlibO7MVMPB9m7NJaJTHko/MiJNWumAjS4yDDovLraIKMwOFTvAhqXsHslthpcUO0GZXEIaDRgERD7+jw==Avant l'envoi dans la requête REST, il faut appliquer l'encodage URL à la chaîne chiffrée :
Cfqv4t2XHBb9k8ixM7jxxCvziETS4koa3bV3F0QUvGVY47nKyMBqjGzV%2FrvmCAw6KzwoBDzeLsqwBLEzvQhaF627ZS0OJnhttBi4fL3%2Fh%2FsBSwFtxr3s%2BoVUeoE3e4SNVUq9vciinOyNCIKqfpeQya%2BpOUYt3MgrtSeu66Ar12XEj4k6lecZN7Ffquj9RqhZsYhP63np5VCxJR90cNQG%2BTMWIFU6rqxLAe4gzCJtcXNrPT8aDOI201Zwd%2Be4K1YnrI7dZGlibO7MVMPB9m7NJaJTHko%2FMiJNWumAjS4yDDovLraIKMwOFTvAhqXsHslthpcUO0GZXEIaDRgERD7%2Bjw%3D%3D -
Envoyez la requête de paiement avec seToken.
Voir l'exemple de requête de paiement à l'aide de seToken ici.