Pour toute question, nous sommes à un clic

Poser une question

Description générale

Vous pouvez utiliser notre API commerçant pour créer le scénario de paiement dont vous avez besoin. Par exemple, vous pouvez créer votre propre page de paiement entièrement personnalisée et la connecter à notre passerelle de paiement.

Vous pouvez télécharger la collection de demandes API pour Postman afin de tester les fonctionnalités principales de l'API. Envoyez obligatoirement les demandes comme POST avec les attributs dans le corps de la demande.

Télécharger la collection Postman

Caractère obligatoire des paramètres

Le caractère obligatoire de la présence d'un paramètre dans la requête/réponse peut prendre les valeurs suivantes :

Le caractère obligatoire de la transmission du paramètre dans la description de la requête/réponse est indiqué dans la colonne du même nom "Caractère obligatoire".

Authentification

Pour l'authentification du marchand dans la passerelle de paiement, deux méthodes peuvent être utilisées.

Caractère obligatoireNomTypeDescription
ConditionuserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ConditionpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
Caractère obligatoireNomTypeDescription
ConditiontokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.

URL pour les appels API

TEST: https://dev.bpcbt.com/payment/rest/
PROD: https://dev.bpcbt.com/payment/rest/

Erreurs

Codes de statut HTTP :

Si une requête liée au paiement d'une commande est traitée avec succès, cela ne signifie pas encore que le paiement lui-même a réussi.

Pour déterminer si le paiement a été réussi ou non, vous pouvez vous référer à la description de la requête utilisée. Aussi, pour connaître le statut du paiement, vous pouvez toujours utiliser l'algorithme décrit ci-dessous

  1. Appeler getOrderStatusExtended.do;
  2. Vérifier le champ orderStatus dans la réponse : la commande est considérée comme payée seulement si la valeur orderStatus est égale à 1 ou 2.

Signature de requête API

Dans certains cas, pour assurer un échange de données sécurisé, il peut être nécessaire d'implémenter une signature asymétrique de requête. Habituellement, cette exigence s'applique seulement si vous effectuez des requêtes P2P/AFT/OCT.

Pour pouvoir signer les requêtes, vous devez effectuer les étapes suivantes :

  1. Créez et téléchargez un certificat.
  2. Calculez le hash et la signature, en utilisant votre clé privée, et transmettez le hash généré (X-Hash) et la valeur de signature (X-Signature) dans l'en-tête de la requête.

Ces étapes sont décrites en détail ci-dessous.

Création et téléchargement d'un certificat

  1. Créez une clé privée RSA de 2048 bits. La méthode de génération dépend de la politique de confidentialité de votre entreprise. Par exemple, vous pouvez le faire avec OpenSSL :

    openssl genrsa -des3 -out private.key 2048

  2. Créez un CSR public (demande de signature de certificat), en utilisant la clé privée générée :

    openssl req -key private.key -new -out public.csr

  3. Créez un certificat en utilisant la clé privée générée et le CSR. Exemple de formation d'un certificat pour 5 ans :

    openssl x509 -signkey private.key -in public.csr -req -days 1825 -out public.cer

  4. Téléchargez le certificat généré dans l'Espace personnel. Pour cela, allez dans Certificats de portefeuilles > Merchant API, cliquez sur Ajouter un certificat et téléchargez le certificat public généré.


JCC installments final page

Calcul du hash et de la signature

  1. Calculez le hash SHA256 du corps de la requête de la manière suivante :

  2. Utilisez le corps de la requête sous forme de chaîne (dans notre exemple c'est amount=10000&password=gcjgcW1&returnUrl=http&userName=signature-api).

  3. Calculez le hash SHA256 de cette chaîne en octets bruts.

  4. Convertissez les octets bruts en encodage base64.

  5. Générez une signature pour le hash SHA256 calculé à l'aide de l'algorithme RSA, en utilisant la clé privée.

Dans notre exemple, nous utilisons la clé privée suivante avec le mot de passe 12345 :

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,C502560EDE8F82B7
O4+bY1Q1ZcXFLDGVE8s9G2iVISHR/c/IMZKZEjkBED/TbuOCUGVjcav2ZaZO2dO0 lm771N6JNB01uhJbTHScVQ6R0UnGezHFTcsJlAlBa9RQyOwujs4Pk6riOGnLliIs urnTXD0oskBR1wLRA2kp8+V0UPOAMXQaoLxFGE/o8taDGSrkyIcYTBoh9o7ZBxvO SqUWAt2vPbGVyc6XspyuVtgHgEctaJO+E26QTweqdpN5JITF+fDFPNwUrFHoho4N pxpKRWbiCJSpbvbsvhdizkmfgvRw+qYJvTirF3JTfGr14DttudFwjm7sNrr0JILR XPKDUhRyWjkthZM+oDjF2HwISAGkbxcpn4PU7Tywq0uax+5KCQQn2uz4jLM2P6+9 000cvVLwhMnoUdOxuISRXeOcOWVyTO1mPfKiWnHaoO4yS3Y36OCIOe9RHGP8TTmq acb3LUIF30eQyk3KxH/tUB0ScPDKEKMiww13/Kcfr0JkdIe/BWCvV+hSQm38TLQe bTFy+wnD9kHACCwTSVVSOO+rHgJGVIyLgnpClZKWQyyJ4clH7/cORA7mTmp85Ckx IjV5Egu0bPPUMudOB5BnQ4u85RnqXavasgrLRA3JZM4+Jzl8MNy/fsFXnVBQLJJC Wlz/B7S7W8sabRogFuiqkkPmXE/QcpdKQoY3yh748QqMSl8vkA6WgndyYv1EnDDl jA5j7vSf0wKI8BHgdHBEWuEjn3X/s0S/BiPPI6puboYY90tYVJTWSQCR83QrMF3N BIcMu4+RIYu6GWnPx9npZpt0858c670ZII56np24iMse3qgHCOZxsGOenK2x7ta6 163gvaD8bu8xoeQcGVfd6IMbXWVb0+z1hvWR5HWHSalof4lMzZrDsQDKc2UA0ygh hA1+VAl1MAEHVLNCCmyG1SwRwg1PI7FfftW7YARngCZRWkJ1haj1fgy7rtYolrdv lEz/vjFD6diABx67omGgfiJhWdiKIlzsYlX1SW7yaik/Uxf1j8gTFwY34y8ekVd9 6pQTzV2V/4a48ELZl4LvelLWyt1AB3AR+/fM7YG6LYIqlo+qnLtro7Bqu8RNTNRP wcWCd04r/20ulFWMIH8pVa60C98pSdOXriWEI1KDLc0E/fCdhjW2kL+FTPLC7ORe cuzmfI27+06P/BvLZq/FAVBrDAmkioKwe6XYzTjpK1p5jZ3IrNwjAiasY1MNxCRy 5ufhQwkW//d+VUdU5m8Sm30/kXe9UkxMaetXgzPxbB7+5QFFr0bi7D1MjIrJNtTx 5g5E+UfOhqrp8ztBht9csQeFYSYabyyGX4Lh7ymVWrKCVdHlJib3M36nvOjpV/lA zf35sxFz9kaQqNK7xJdQ9Bx6TBUzLjpYhNry37vKk+SIB6Weo+LJ99mALMeX79CB osRqZqX5yrZhaQ8bbpo981nvLy5xFnpRqCuSWVZrVMBq3LQLaOvaCeyGC0V+ZN0C CU6lHlR6XQqd/IjoEN8+8aiVp6Ubw8FuD28TDaEvCltrX3ARL0xFpABsa42LgV1F 09Vi+ju7SSNDvbezN8q0EILq9xp/zNCVhMpyRCIXBq9fzHkyCZ5qMw==
-----END RSA PRIVATE KEY-----

Nous obtenons la signature : pJ/gM4PR1/mKGuIxMvTl5pYDDjJslb0BcXFnIxijFn5qKdPd7W+2ueoctziU7omnkYp01/BlracukH1GOPWMSO+9zKuTDdFueFm1utsS0zaPFU+dmc1niGDRWE0CbCXcti/rGSTDPsnR58mwqgVkbCWxKyCDtuo5LxiKPK9mzgWTUuJ8LX6f6u42MURi5tRG6a9dc8l/+J94g0YOk911R6Lqv2jcluEvZ9ZeMMt8hyxowb0eDaCHlussu2CAyqpE9V+EUAc81Jkwv96MMSsA6UnFwEaCV/k+kwYd0jHCx94m2yWX734p9cWsBW7Fr5F0zox9Yck4GOjqe9nJMMB9jQ== 3. Vous devez maintenant transmettre le hachage généré (X-Hash) et la valeur de la signature (X-Signature) dans l'en-tête de la requête. La requête ressemblera à ceci :

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/register.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --header 'X-Hash: eYkMUF+xaYJhsETTIGsctl6DBNZha1ITN8muCcWQtZk=' \
  --header 'X-Signature: pJ/gM4PR1/mKGuIxMvTl5pYDDjJslb0BcXFnIxijFn5qKdPd7W+2ueoctziU7omnkYp01/BlracukH1GOPWMSO+9zKuTDdFueFm1utsS0zaPFU+dmc1niGDRWE0CbCXcti/rGSTDPsnR58mwqgVkbCWxKyCDtuo5LxiKPK9mzgWTUuJ8LX6f6u42MURi5tRG6a9dc8l/+J94g0YOk911R6Lqv2jcluEvZ9ZeMMt8hyxowb0eDaCHlussu2CAyqpE9V+EUAc81Jkwv96MMSsA6UnFwEaCV/k+kwYd0jHCx94m2yWX734p9cWsBW7Fr5F0zox9Yck4GOjqe9nJMMB9jQ==' \
  --data 'amount=10000&password=gcjgcW1&returnUrl=http&userName=signature-api'

La requête doit répondre aux exigences suivantes :

Exemple de code Java

Ci-dessous un exemple de code Java qui charge la clé privée, calcule le hachage SHA256, le signe à l'aide de la clé privée avec le mot de passe 12345, puis envoie la requête correcte register.do :

import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyStore;
import java.security.MessageDigest;
import java.security.PrivateKey;
import java.security.Signature;
import java.util.Base64;

import static java.net.HttpURLConnection.HTTP_OK;

public class SimpleSignatureExample {

    // Cet exemple n'est pas prêt pour la production. Il montre simplement comment utiliser les signatures dans l'API.
    public static void main(String[] args) throws Exception {
        // charger la clé privée depuis jks
        KeyStore ks = KeyStore.getInstance("JKS");
        char[] pwd = "123456".toCharArray();
        ks.load(Files.newInputStream(Paths.get("/path/to/certificates.jks")), pwd);
        PrivateKey privateKey = (PrivateKey) ks.getKey("111111", pwd);

        // Signer
        String httpBody = "amount=10000&password=gcjgcW1&returnUrl=http&userName=signature-api";

        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initSign(privateKey);

        byte[] sha256 = digest.digest(httpBody.getBytes());
        signature.update(sha256);
        byte[] sign = signature.sign();

        // Envoyer
        Base64.Encoder encoder = Base64.getEncoder();
        HttpsURLConnection connection = (HttpsURLConnection) new URL("https://<YOUR_DOMAIN>/payment/rest/register.do").openConnection();
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setRequestMethod("POST");
        connection.addRequestProperty("content-type", "application/x-www-form-urlencoded");
        connection.addRequestProperty("X-Hash", encoder.encodeToString(sha256));
        connection.addRequestProperty("X-Signature", encoder.encodeToString(sign));
        connection.addRequestProperty("Content-Length", String.valueOf(httpBody.getBytes().length));
        try (final DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) {
            outputStream.write(httpBody.getBytes());
            outputStream.flush();
        }
        connection.connect();

        InputStream inputStream = connection.getResponseCode() == HTTP_OK ? connection.getInputStream() : connection.getErrorStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    }
}

Exemple de code Python

Ci-dessous un exemple de code Python qui génère la signature :

import OpenSSL
from OpenSSL import crypto
import base64
from hashlib import sha256
key_file = open("./priv.pem", "r")
key = key_file.read()
key_file.close()

if key.startswith('-----BEGIN '):
    pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key)
else:
    pkey = crypto.load_pkcs12(key, password).get_privatekey()

data = "amount=2000&currency=978&userName=test_user&password=test_user_password&returnUrl=https%3A%2F%2Fmybestmerchantreturnurl.com&description=my_first_order&language=en"

sha256_hash = sha256(data.encode()).digest()
base64_hash = base64.b64encode(sha256_hash)
print(base64_hash)

sign = OpenSSL.crypto.sign(pkey, sha256_hash, "sha256")

signed_base64 = base64.b64encode(sign)
print(signed_base64)

Le fichier de clé privée pour l'exemple Python doit avoir le format :

-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDdpOwhY/p9x0WmBd3HaDfCD+KYung3M8Cxrw0ozF+h//GltRdnkJD7ejsBDB6/YeIVXZeU3AyqWvsi/IfeHwnokGxVg2IMw8OPacY6o1x7W0EQtfRoZa2Cn2PMCpZhEHlIVraXZDDeg4HY26YP0FZxRbpNnpXhGbiop+Bq0wHeE3JIk53cRmwYhxdxMmvFpgNd6C3dYhmnQqLv6WSpVNDFbQxBVU+JDNyR9FQwB1dU2MadgYwFJnEssbhUkM+sXAC4Wv3qhcZek6MWeWsbFIIlyTPa1T3yrWSXIb4qFJEro4pRMmwQ72qG02p8EPx1tlveQo22TojV9WbTPtaVwQtxAgMBAAECggEBANheTGkYOYsZwgMdzPAB7BSU/0bLGdoBuoV6dqUyRdVWjqaOTwe519625uzR0R5RRqxGzlfyLKcM5Aa2cUhEEp8mhatA87G0Va8lue66VOjTH4RZq/tR7v0J7hlc6Ipe05brl5nYo+BEjriNS+I6Jnizcfid7IBvZJW4NFr0G+mWTxl2BhUK/Mk895n8hg9QtgSRoMNO4jK2f0vJrH4hBHehTYpjHx+QhbUyIvsp60bEnNOXzl054TuWBVCYAQHcHTTZowWMY0s1Z0kGNxwsqQm4amW/v+1EqCF4fjRDrU6v/kjDKxGFx9GJUktKZAe2T8e2LySjgGpJO5g4AdxIVpUCgYEA8x9te+i2ijxoS3kIUSwXaPq5EdKGWGl5mW8KZHzmt9LB/CqTKvSOiDkMGoAx/76t5QmKOYojP+Vsc2XdfQfhT6d00MGTdiPBd+8//MmQQ07/D1/PV58Jd1O8bQFU4fZCMpQl/8Azp9ix/NEx0sHDv2KigLfFMBVGeJxwSoU2JzMCgYEA6WJC0BDTA9vx+i+p9i/41f7ozpQuYey5sxdZa2emOSYen6ptxUFLAYXMxVDaBJ89PMUa8GzWoXHhgXzbuRJk74IzUhWgPpneS4HTr5KDStJh2TqWWVLwEIgLwxvtuw0i9uSEU64D/Czzm801lrOhVgmZsWwNpFtP8ujz0v84MssCgYEA1P4YhbB3kx2e5VfwgGSXUcIttr5wMi6deF0+hpCh9DNw/QEzkzNTV2ZbAzCCHSKo5/n2nbg2b3kIDQUWCL6JlqYHAghErwBeMztoHIddmoovjAGM/Z93xJGYhwremWOL1RHTRH7XAlomfG2tL43PdvDrmsbkut44sdujyLVxnt8CgYBirK3tBMADKLJVgmOM+FlwORe7iAFYW9tj8iJXe/pWvVxDS66fsOyCl0ytvHKBc8ZTdE7gilPw7JJYyi6oQDO25EjIkuYusaXALQMQf5TNRMgkLVY2LA/eHXdDpgJMjNBUrOeZ7cA3ldXl8MyQjCBRnTuDPVlDPWw/GulEM65SIwKBgQDIEv8XK2YBkZrr+0fZSFTQAeK4R7Ve3z4hbpHhJi41YanCNaEWoeYAuQd6/b/QLwABllvfJBDYCNnF8heUxqISpyWd+FZ8nhZtxBoKj5l80czTcutIz/M+ETcvl8FqnMBsoCdp1wodqaLkOx6DIldgKLze6AqKXl5lHUsU4mvVqg==
-----END PRIVATE KEY-----

Enregistrement de commande

Enregistrement de commande

Commencez à travailler avec API Sandbox en créant un compte ou en vous connectant au système.

 

Pour l'enregistrement de commande, utilisez la requête https://dev.bpcbt.com/payment/rest/register.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de requête

Caractère obligatoireNomTypeDescription
ConditionuserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ConditionpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
ConditiontokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
ObligatoirereturnUrlString [1..512]Adresse vers laquelle l'utilisateur doit être redirigé en cas de paiement réussi. L'adresse doit être spécifiée complètement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatiffailUrlString [1..512]Adresse vers laquelle il faut rediriger l'utilisateur en cas de paiement échoué. L'adresse doit être spécifiée entièrement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatifdynamicCallbackUrlString [1..512]Paramètre pour transmettre l'adresse dynamique pour recevoir les notifications callback "de paiement" pour la commande, activées pour le marchand (autorisation réussie, débit réussi, remboursement, annulation, rejet du paiement par timeout, rejet du paiement card present).
Les notifications callback "non liées au paiement" (activation/désactivation de liaison, création de liaison), seront envoyées à l'adresse callback statique.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatifmerchantLoginString [1..255]Pour enregistrer une commande au nom d'un autre marchand, spécifiez son login (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
FacultatifcardholderNameString [1..150]Nom du titulaire de la carte en caractères latins. Lors de la transmission de ce paramètre, le nom du titulaire de la carte sera affiché sur la page de paiement.
FacultatifjsonParamsObjectEnsemble d'attributs supplémentaires de forme arbitraire, structure :
jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}
Peuvent être transmis au Centre de Traitement, pour un traitement ultérieur (configuration supplémentaire requise - contactez le support).
Certains attributs prédéfinis de jsonParams :
  • backToShopUrl - ajoute un bouton à la page de paiement qui ramènera le porteur de carte à l'URL transmise dans ce paramètre
  • backToShopName - configure l'étiquette textuelle du bouton Retour à la boutique par défaut, si elle est utilisée avec backToShopUrl
  • installments - nombre maximum d'autorisations autorisées pour les paiements échelonnés. Requis pour créer des données de paiement sauvegardées d'échelonnement
  • totalInstallmentAmount - montant total de tous les paiements échelonnés. La valeur est nécessaire pour sauvegarder les données de paiement pour effectuer l'échelonnement
  • recurringFrequency - nombre minimum de jours entre les autorisations. Requis pour créer des données de paiement sauvegardées récurrentes, recommandé pour créer des données de paiement sauvegardées d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • recurringExpiry - date après laquelle les autorisations ne sont pas autorisées, au format AAAAMMJJ. Requis pour créer des données de paiement sauvegardées récurrentes, recommandé pour créer des données de paiement sauvegardées d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • paymentWay - méthode de paiement. Pour forcer l'exécution d'un paiement MOTO, il faut transmettre la valeur CARD_MOTO.
FacultatifsessionTimeoutSecsInteger [1..9]Durée de vie de la commande en secondes. Si le paramètre n'est pas défini, la valeur spécifiée dans les paramètres du marchand sera utilisée, ou le temps par défaut (1200 secondes = 20 minutes). Si le paramètre expirationDate est présent dans la requête, alors la valeur du paramètre sessionTimeoutSecs n'est pas prise en compte.
FacultatifexpirationDateString [19]Date et heure d'expiration de la commande. Format : yyyy-MM-ddTHH:mm:ss.
Si ce paramètre n'est pas transmis dans la requête, alors le paramètre sessionTimeoutSecs est utilisé pour déterminer le temps d'expiration de la commande.
FacultatifbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
FacultatiffeaturesStringFonctions de commande. Pour spécifier plusieurs fonctions, utilisez ce paramètre plusieurs fois dans une seule requête. Voici les valeurs possibles.
  • VERIFY - si cette valeur est transmise dans la requête de création de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la requête, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lire plus en détail ici.
  • FORCE_TDS - Traitement forcé du paiement en utilisant 3-D Secure. Si la carte ne supporte pas 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Traitement forcé du paiement via SSL (sans utilisation de 3-D Secure).
  • FORCE_FULL_TDS - Après l'authentification avec 3-D Secure le statut PaRes doit être seulement Y, ce qui garantit l'authentification réussie de l'utilisateur. Sinon la transaction n'aboutira pas.
  • FORCE_CREATE_BINDING - la transmission de cette valeur dans la requête de création de commande crée forcément une liaison. Cette fonctionnalité doit être activée au niveau du vendeur dans la passerelle. Cette valeur ne peut pas être transmise dans une requête avec un bindingId existant ou bindingNotNeeded = true (causera une erreur de validation). Quand cette fonction est transmise, le paramètre clientId doit également être transmis. Si dans le bloc features les deux valeurs FORCE_CREATE_BINDING et VERIFY sont transmises, alors la commande sera créée SEULEMENT pour créer une liaison (sans paiement).
  • PARTIAL_AUTHORIZATION - l'autorisation partielle est disponible pour la commande. Voir plus en détail ici.
  • FORCE_PAYMENT_WAY - traitement forcé du paiement par le moyen de paiement spécifié dans jsonParams dans le paramètre paymentWay. Pour effectuer de tels paiements le marchand doit avoir les autorisations correspondantes.
    À l'heure actuelle utilisé pour le traitement forcé du paiement MOTO. Pour cela il est nécessaire de transmettre également dans jsonParams le paramètre paymentWay avec la valeur CARD_MOTO.
FacultatifpostAddressString [1..255]Adresse de livraison.
FacultatifmarketplaceObjectBloc avec paramètres de marketplace, c'est-à-dire vendeur qui propose des biens ou services de différents vendeurs de détail (détaillants).
Ce paramètre est utilisé si un paramètre spécial est activé (contactez le support technique). Voir paramètres imbriqués.
FacultatiforderBundleObjectObjet contenant le panier de produits. La description des éléments imbriqués est donnée ci-dessous.
FacultatiffeeInputInteger [0..8]Taille de la commission en unités minimales de la devise. La fonctionnalité doit être activée au niveau du vendeur dans la passerelle.
ConditionemailString [1..40]Adresse e-mail à afficher sur la page de paiement. Si les notifications client sont configurées pour le vendeur, l'adresse e-mail doit être spécifiée. Exemple : client_mail@email.com.
L'adresse e-mail n'est pas vérifiée lors de l'enregistrement, elle sera vérifiée ultérieurement lors du paiement.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec informations sur le facilitateur de paiement, c'est-à-dire sur le commerçant qui permet à plusieurs sous-commerçants d'accepter des paiements sous son compte.
Pour la transmission de ce paramètre, un paramètre spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
FacultatifbillingPayerDataObjectBloc avec données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur côté passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de précommande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données du payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Description des paramètres dans l'objet orderBundle :

ObligatoireNomTypeDescription
FacultatiforderCreationDateString [19]Date de création de la commande au format YYYY-MM-DDTHH:MM:SS.
FacultatifcustomerDetailsObjectBloc contenant les attributs du client. La description des attributs de la balise est donnée ci-dessous.
ObligatoirecartItemsObjectObjet contenant les attributs des produits dans le panier. La description des éléments imbriqués est fournie ci-dessous.

Description des paramètres dans l'objet customerDetails :

ObligatoireNomTypeDescription
FacultatifcontactString [0..40]Méthode de contact préférée par le client.
FacultatiffullNameString [1..100]Nom complet du payeur.
FacultatifpassportString [1..100]Série et numéro du passeport du payeur au format suivant : 2222888888
FacultatifdeliveryInfoObjectObjet contenant les attributs de l'adresse de livraison. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet deliveryInfo :

Caractère obligatoireNomTypeDescription
FacultatifdeliveryTypeString [1..20]Mode de livraison.
ObligatoirecountryString [2]Code de pays de livraison à deux lettres.
ObligatoirecityString [0..40]Ville de destination.
ObligatoirepostAddressString [1..255]Adresse de livraison.

Description des paramètres dans l'objet cartItems :

ObligatoireNomTypeDescription
ObligatoireitemsObjectÉlément du tableau avec les attributs de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet items :

ObligatoireNomTypeDescription
ObligatoirepositionIdInteger [1..12]Identifiant unique de la position de marchandise dans le panier.
ObligatoirenameString [1..255]Désignation ou description de la position tarifaire sous forme libre.
FacultatifitemDetailsObjectObjet avec les paramètres de description de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.
ObligatoirequantityObjectÉlément décrivant la quantité totale des positions de marchandises d'un même positionId et ses unités de mesure. La description des éléments imbriqués est donnée ci-dessous.
FacultatifitemAmountInteger [1..12]Montant du coût de toutes les positions de marchandises d'un positionId dans les unités minimales de la devise. itemAmount est obligatoire à transmettre, seulement si le paramètre itemPrice n'a pas été transmis. Dans le cas contraire, la transmission d'itemAmount n'est pas requise. Si dans la requête les deux paramètres sont transmis : itemPrice et itemAmount, alors itemAmount doit être égal à itemPrice * quantity, dans le cas contraire la requête se terminera avec une erreur.
FacultatifitemPriceInteger [1..18]Montant du coût de la position de marchandise d'un positionId en argent dans les unités minimales de devise.
FacultatifdepositedItemAmountString [1..18]Montant de débit pour un positionId en unités minimales de devise (par exemple, en centimes).
FacultatifitemCurrencyInteger [3]Code de devise ISO 4217. Si non spécifié, considéré comme égal à la devise de la commande.
ObligatoireitemCodeString [1..100]Numéro (identifiant) de la position de marchandise dans le système du magasin.

Description des paramètres dans l'objet quantity :

ObligatoireNomTypeDescription
ObligatoirevalueNumber [1..18]Quantité de positions de marchandises de ce positionId. Pour indiquer les nombres fractionnaires, utilisez le point décimal. Maximum 3 chiffres après le point sont autorisés.
ObligatoiremeasureString [1..20]Unité de mesure de la quantité par position.

Description des paramètres dans l'objet itemDetails :

ObligatoireNomTypeDescription
FacultatifitemDetailsParamsObjectParamètre décrivant les informations supplémentaires sur la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet itemDetailsParams :

ObligatoireNomTypeDescription
ObligatoirevalueString [1..2000]Informations supplémentaires sur la position de marchandise.
ObligatoirenameString [1..255]Dénomination du paramètre de description de la détaillisation de la position de marchandise

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Paramètres de réponse

Caractère obligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatifformUrlString [1..512]URL du formulaire de paiement vers lequel l'acheteur sera redirigé. L'URL n'est pas retournée si l'enregistrement de la commande a échoué en raison d'une erreur spécifiée dans errorCode.
FacultatiforderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/register.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data amount=123456 \
  --data userName=test_user \
  --data password=test_user_password \
  --data orderNumber=1234567890ABCDEF \
  --data returnUrl=https://mybestmerchantreturnurl.com \
  --data failUrl=https://mybestmerchantfailurl.com \
  --data email=test@test.com \
  --data clientId=259753456 \
  --data features=FORCE_SSL \
  --data language=en \
  --data 'jsonParams={"param_1_name":"param_1_value","param_2_name":"param_2_value"}'

Exemple de réponse - succès

{
  "orderId": "01491d0b-c848-7dd6-a20d-e96900a7d8c0",
  "formUrl": "https://dev.bpcbt.com/payment/payment/merchants/ecom/payment_en.html?mdOrder=01491d0b-c848-7dd6-a20d-e96900a7d8c0"
}

Exemple de réponse - erreur

{
  "errorCode": "1",
  "errorMessage": "Order number is duplicated, order with given order number is processed already"
}

Enregistrement de commande avec pré-autorisation

Pour la demande d'enregistrement de commande avec pré-autorisation, la méthode https://dev.bpcbt.com/payment/rest/registerPreAuth.do est utilisée.


Lors de l'exécution de la demande, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de demande

ObligatoireNomTypeDescription
ConditionuserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ConditionpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
ConditiontokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
ObligatoirereturnUrlString [1..512]Adresse vers laquelle l'utilisateur doit être redirigé en cas de paiement réussi. L'adresse doit être spécifiée complètement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatiffailUrlString [1..512]Adresse vers laquelle il faut rediriger l'utilisateur en cas de paiement échoué. L'adresse doit être spécifiée entièrement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatifdynamicCallbackUrlString [1..512]Paramètre pour transmettre l'adresse dynamique pour recevoir les notifications callback "de paiement" pour la commande, activées pour le marchand (autorisation réussie, débit réussi, remboursement, annulation, rejet du paiement par timeout, rejet du paiement card present).
Les notifications callback "non liées au paiement" (activation/désactivation de liaison, création de liaison), seront envoyées à l'adresse callback statique.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatifmerchantLoginString [1..255]Pour enregistrer une commande au nom d'un autre marchand, spécifiez son login (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
FacultatifcardholderNameString [1..150]Nom du titulaire de la carte en caractères latins. Lors de la transmission de ce paramètre, le nom du titulaire de la carte sera affiché sur la page de paiement.
FacultatifjsonParamsObjectEnsemble d'attributs supplémentaires de forme arbitraire, structure :
jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}
Peuvent être transmis au Centre de Traitement, pour un traitement ultérieur (configuration supplémentaire requise - contactez le support).
Certains attributs prédéfinis de jsonParams :
  • backToShopUrl - ajoute un bouton à la page de paiement qui ramènera le porteur de carte à l'URL transmise dans ce paramètre
  • backToShopName - configure l'étiquette textuelle du bouton Retour à la boutique par défaut, si elle est utilisée avec backToShopUrl
  • installments - nombre maximum d'autorisations autorisées pour les paiements échelonnés. Requis pour créer des données de paiement sauvegardées d'échelonnement
  • totalInstallmentAmount - montant total de tous les paiements échelonnés. La valeur est nécessaire pour sauvegarder les données de paiement pour effectuer l'échelonnement
  • recurringFrequency - nombre minimum de jours entre les autorisations. Requis pour créer des données de paiement sauvegardées récurrentes, recommandé pour créer des données de paiement sauvegardées d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • recurringExpiry - date après laquelle les autorisations ne sont pas autorisées, au format AAAAMMJJ. Requis pour créer des données de paiement sauvegardées récurrentes, recommandé pour créer des données de paiement sauvegardées d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • paymentWay - méthode de paiement. Pour forcer l'exécution d'un paiement MOTO, il faut transmettre la valeur CARD_MOTO.
FacultatifsessionTimeoutSecsInteger [1..9]Durée de vie de la commande en secondes. Si le paramètre n'est pas défini, la valeur spécifiée dans les paramètres du marchand sera utilisée, ou le temps par défaut (1200 secondes = 20 minutes). Si le paramètre expirationDate est présent dans la requête, alors la valeur du paramètre sessionTimeoutSecs n'est pas prise en compte.
FacultatifexpirationDateString [19]Date et heure d'expiration de la commande. Format : yyyy-MM-ddTHH:mm:ss.
Si ce paramètre n'est pas transmis dans la requête, alors le paramètre sessionTimeoutSecs est utilisé pour déterminer le temps d'expiration de la commande.
FacultatifbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
FacultatiffeaturesStringFonctions de commande. Pour spécifier plusieurs fonctions, utilisez ce paramètre plusieurs fois dans une seule requête. Voici les valeurs possibles.
  • VERIFY - si cette valeur est transmise dans la requête de création de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la requête, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lire plus en détail ici.
  • FORCE_TDS - Traitement forcé du paiement en utilisant 3-D Secure. Si la carte ne supporte pas 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Traitement forcé du paiement via SSL (sans utilisation de 3-D Secure).
  • FORCE_FULL_TDS - Après l'authentification avec 3-D Secure le statut PaRes doit être seulement Y, ce qui garantit l'authentification réussie de l'utilisateur. Sinon la transaction n'aboutira pas.
  • FORCE_CREATE_BINDING - la transmission de cette valeur dans la requête de création de commande crée forcément une liaison. Cette fonctionnalité doit être activée au niveau du vendeur dans la passerelle. Cette valeur ne peut pas être transmise dans une requête avec un bindingId existant ou bindingNotNeeded = true (causera une erreur de validation). Quand cette fonction est transmise, le paramètre clientId doit également être transmis. Si dans le bloc features les deux valeurs FORCE_CREATE_BINDING et VERIFY sont transmises, alors la commande sera créée SEULEMENT pour créer une liaison (sans paiement).
  • PARTIAL_AUTHORIZATION - l'autorisation partielle est disponible pour la commande. Voir plus en détail ici.
  • FORCE_PAYMENT_WAY - traitement forcé du paiement par le moyen de paiement spécifié dans jsonParams dans le paramètre paymentWay. Pour effectuer de tels paiements le marchand doit avoir les autorisations correspondantes.
    À l'heure actuelle utilisé pour le traitement forcé du paiement MOTO. Pour cela il est nécessaire de transmettre également dans jsonParams le paramètre paymentWay avec la valeur CARD_MOTO.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
FacultatifpostAddressString [1..255]Adresse de livraison.
FacultatifmarketplaceObjectBloc avec les paramètres de marketplace, c'est-à-dire le vendeur qui propose des biens ou services de différents vendeurs au détail (détaillants).
Ce paramètre est utilisé si une configuration spéciale est activée (contactez le support technique). Voir paramètres imbriqués.
FacultatiforderBundleObjectObjet contenant le panier de produits. La description des éléments imbriqués est donnée ci-dessous.
FacultatiffeeInputInteger [0..8]Taille de la commission en unités minimales de la devise. La fonctionnalité doit être activée au niveau du vendeur dans la passerelle.
ConditionemailString [1..40]Adresse e-mail à afficher sur la page de paiement. Si les notifications client sont configurées pour le vendeur, l'adresse e-mail doit être spécifiée. Exemple : client_mail@email.com.
L'adresse e-mail n'est pas vérifiée lors de l'enregistrement, elle sera vérifiée ultérieurement lors du paiement.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec les informations sur le facilitateur de paiement, c'est-à-dire le marchand qui permet à plusieurs sous-marchands d'accepter des paiements sous son compte.
Pour transmettre ce paramètre, une configuration spéciale doit être activée (contactez le support technique). Voir paramètres imbriqués.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de précommande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données du payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Description des paramètres dans l'objet orderBundle :

ObligatoireNomTypeDescription
FacultatiforderCreationDateString [19]Date de création de la commande au format YYYY-MM-DDTHH:MM:SS.
FacultatifcustomerDetailsObjectBloc contenant les attributs du client. La description des attributs de la balise est donnée ci-dessous.
ObligatoirecartItemsObjectObjet contenant les attributs des produits dans le panier. La description des éléments imbriqués est fournie ci-dessous.

Description des paramètres dans l'objet customerDetails :

ObligatoireNomTypeDescription
FacultatifcontactString [0..40]Méthode de contact préférée par le client.
FacultatiffullNameString [1..100]Nom complet du payeur.
FacultatifpassportString [1..100]Série et numéro du passeport du payeur au format suivant : 2222888888
FacultatifdeliveryInfoObjectObjet contenant les attributs de l'adresse de livraison. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet deliveryInfo :

Caractère obligatoireNomTypeDescription
FacultatifdeliveryTypeString [1..20]Mode de livraison.
ObligatoirecountryString [2]Code de pays de livraison à deux lettres.
ObligatoirecityString [0..40]Ville de destination.
ObligatoirepostAddressString [1..255]Adresse de livraison.

Description des paramètres dans l'objet cartItems :

ObligatoireNomTypeDescription
ObligatoireitemsObjectÉlément du tableau avec les attributs de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet items :

ObligatoireNomTypeDescription
ObligatoirepositionIdInteger [1..12]Identifiant unique de la position de marchandise dans le panier.
ObligatoirenameString [1..255]Désignation ou description de la position tarifaire sous forme libre.
FacultatifitemDetailsObjectObjet avec les paramètres de description de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.
ObligatoirequantityObjectÉlément décrivant la quantité totale des positions de marchandises d'un même positionId et ses unités de mesure. La description des éléments imbriqués est donnée ci-dessous.
FacultatifitemAmountInteger [1..12]Montant du coût de toutes les positions de marchandises d'un positionId dans les unités minimales de la devise. itemAmount est obligatoire à transmettre, seulement si le paramètre itemPrice n'a pas été transmis. Dans le cas contraire, la transmission d'itemAmount n'est pas requise. Si dans la requête les deux paramètres sont transmis : itemPrice et itemAmount, alors itemAmount doit être égal à itemPrice * quantity, dans le cas contraire la requête se terminera avec une erreur.
FacultatifitemPriceInteger [1..18]Montant du coût de la position de marchandise d'un positionId en argent dans les unités minimales de devise.
FacultatifdepositedItemAmountString [1..18]Montant de débit pour un positionId en unités minimales de devise (par exemple, en centimes).
FacultatifitemCurrencyInteger [3]Code de devise ISO 4217. Si non spécifié, considéré comme égal à la devise de la commande.
ObligatoireitemCodeString [1..100]Numéro (identifiant) de la position de marchandise dans le système du magasin.

Description des paramètres dans l'objet quantity :

ObligatoireNomTypeDescription
ObligatoirevalueNumber [1..18]Quantité de positions de marchandises de ce positionId. Pour indiquer les nombres fractionnaires, utilisez le point décimal. Maximum 3 chiffres après le point sont autorisés.
ObligatoiremeasureString [1..20]Unité de mesure de la quantité par position.

Description des paramètres dans l'objet itemDetails :

ObligatoireNomTypeDescription
FacultatifitemDetailsParamsObjectParamètre décrivant les informations supplémentaires sur la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet itemDetailsParams :

ObligatoireNomTypeDescription
ObligatoirevalueString [1..2000]Informations supplémentaires sur la position de marchandise.
ObligatoirenameString [1..255]Dénomination du paramètre de description de la détaillisation de la position de marchandise

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Paramètres de réponse

ObligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatiforderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
FacultatifformUrlString [1..512]URL du formulaire de paiement vers lequel l'acheteur sera redirigé. L'URL n'est pas retournée si l'enregistrement de la commande a échoué en raison d'une erreur spécifiée dans errorCode.

Exemples

Exemple de demande

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/registerPreAuth.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data amount=2000 \
  --data userName=test_user \
  --data password=test_user_password \
  --data returnUrl=https://mybestmerchantreturnurl.com \
  --data orderNumber=1255555555555 \
  --data clientId=259753456 \
  --data language=en

Exemple de réponse

{
  "orderId": "01492437-d2fb-77fa-8db7-9e2900a7d8c0",
  "formUrl": "https://dev.bpcbt.com/payment/merchants/pay/payment_en.html?mdOrder=01492437-d2fb-77fa-8db7-9e2900a7d8c0"
}

Paiements directs

Paiement de commande

Pour le paiement d'une commande précédemment enregistrée, la requête https://dev.bpcbt.com/payment/rest/paymentorder.do est utilisée.
La requête est utilisée en mode MPI/3DS Server interne, cela ne nécessite pas d'autorisations supplémentaires et/ou de certifications.
La requête est utilisée en mode MPI/3DS Server externe si vous avez un contrat avec un système de paiement international ou un certificat qui permet de réaliser de manière autonome l'authentification 3DS. Cela signifie que vous pouvez utiliser votre propre MPI/3DS Server pour l'authentification du client en utilisant la technologie 3D Secure. Des informations supplémentaires sur le paiement avec votre propre MPI/3DS Server sont disponibles ici.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paiement de commande (MPI/3DS Server interne)

Le paiement de commande s'effectue avec la transmission des données de paiement par carte, ainsi qu'avec l'utilisation de la technologie d'authentification 3DS (l'application de l'authentification est réglementée par les paramètres contrôlés par le service support).

Paramètres de requête

ObligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
ObligatoireMDORDERString [1..36]Numéro de commande dans la passerelle de paiement.
Obligatoire$PANInteger [1..19]Numéro de carte de paiement. Obligatoire si seToken n'est pas transmis.
Obligatoire$CVCString [3]Code CVC/CVV2 au verso de la carte. Obligatoire, si seToken n'est pas transmis.
Seuls les chiffres sont autorisés.
ObligatoireYYYYInteger [4]Année d'expiration de la carte de paiement. Si seToken n'est pas transmis, il est obligatoire de transmettre soit $EXPIRY, soit YYYY et MM.
ObligatoireMMInteger [2]Mois d'expiration de la carte de paiement. Si seToken n'est pas transmis, il est obligatoire de transmettre soit $EXPIRY, soit YYYY et MM.
Conditionnel$EXPIRYInteger [6]Date d'expiration de la carte dans le format suivant : YYYYMM. Remplace les paramètres YYYY et MM. Si seToken n'est pas transmis, il est obligatoire de transmettre soit $EXPIRY, soit YYYY et MM.
ConditionnelseTokenStringDonnées cryptées de la carte qui remplacent les paramètres $PAN, $CVC et $EXPIRY (ou YYYY,MM). Obligatoire si utilisé à la place des données de carte.
Paramètres obligatoires pour la chaîne seToken : timestamp, UUID, PAN, EXPDATE, MDORDER. Plus de détails sur la génération de seToken voir ici.
Si seToken contient des données cryptées sur la liaison (bindingId), pour le paiement il faut utiliser la requête paymentOrderBinding.do.
ObligatoireTEXTString [1..512]Nom du porteur de la carte.
ObligatoirelanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatifbindingNotNeededBooleanValeurs autorisées :
  • true- la création de liaison après l'exécution du paiement est désactivée (la liaison est l'identifiant du client transmis dans la demande d'enregistrement de commande, qui après la demande de paiement sera supprimé des détails de la commande) ;
  • false – en cas de paiement réussi, une liaison peut être créée (sous réserve du respect des conditions nécessaires). C'est la valeur par défaut.
FacultatifjsonParamsObjectChamps d'informations supplémentaires pour stockage ultérieur, transmis sous la forme suivante : jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}.
Peuvent être transmis au Centre de Traitement, pour traitement ultérieur (configuration supplémentaire requise - contactez le support).
Si vous utilisez un MPI/3DS Server externe, la passerelle de paiement s'attend à ce que chaque requête paymentOrder inclue un certain nombre de paramètres supplémentaires, tels que eci, xid, cavv et autres. Informations plus détaillées ici.
Pour initier l'authentification 3RI, il peut être nécessaire de transmettre un certain nombre de paramètres supplémentaires (voir authentification 3RI).
Certains attributs jsonParams prédéfinis :
  • backToShopUrl - ajoute un bouton sur la page de paiement qui renverra le porteur de carte vers l'URL transmise dans ce paramètre
  • backToShopName - configure l'étiquette textuelle par défaut du bouton Retourner au magasin, si elle est utilisée avec backToShopUrl
  • installments - nombre maximum d'autorisations autorisées pour les paiements échelonnés. Requis pour créer une liaison d'échelonnement
  • totalInstallmentAmount - montant total de tous les paiements échelonnés. La valeur est nécessaire pour sauvegarder les données de paiement pour effectuer l'échelonnement
  • recurringFrequency - nombre minimum de jours entre les autorisations. Requis pour créer une liaison récurrente, recommandé pour créer une liaison d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • recurringExpiry - date après laquelle les autorisations ne sont pas autorisées, au format AAAAMMJJ. Requis pour créer une liaison récurrente, recommandé pour créer une liaison d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
FacultatifthreeDSSDKBooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient du 3DS SDK.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
ConditionoriginalSchemeTransactionIdString [1..22]Identifiant de la transaction originale réussie dans Mastercard.
Obligatoire lors de l'utilisation des données de paiement sauvegardées du marchand dans les virements par données de paiement sauvegardées.
FacultatifpaymentFacilitatorObjectBloc avec les informations sur le facilitateur de paiement, c'est-à-dire sur le marchand qui permet à plusieurs sous-marchands d'accepter des paiements sous son compte.
Pour transmettre ce paramètre, un réglage spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
ConditionemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur côté passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de précommande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiftiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera exécuté par l'initiateur (Client ou Marchand). Valeurs possibles
FacultatifexternalScaExemptionIndicatorStringType d'exemption SCA (Strong Customer Authentication). Si ce paramètre est spécifié, la transaction sera traitée en fonction de vos paramètres dans la passerelle de paiement : soit une opération SSL forcée sera effectuée, soit la banque émettrice recevra des informations sur l'exemption SCA et prendra une décision de mener l'opération avec authentification 3DS ou sans elle (pour obtenir des informations détaillées, contactez notre service de support). Valeurs autorisées :
  • LVP – transaction de type Low Value Payments. La transaction peut être classée comme transactions à faible niveau de risque sur la base du montant de la transaction, du nombre de transactions du client par jour ou du montant quotidien total des paiements du client.
  • TRA – transaction de type Transaction Risk Analysis, c'est-à-dire transaction ayant passé avec succès la vérification antifraude.

Pour transmettre ce paramètre, vous devez avoir des droits suffisants dans la passerelle de paiement.
FacultatifclientBrowserInfoObjectBloc de données sur le navigateur du client, qui est envoyé à ACS pendant l'authentification 3DS. Ce bloc ne peut être transmis que si un paramètre spécial est activé (contactez l'équipe de support). Voir paramètres imbriqués.
ConditionoriginalPaymentNetRefNumStringIdentifiant de la transaction originale ou précédente réussie dans le système de paiement par rapport à l'opération effectuée par liaison - TRN ID. Transmis si la valeur du paramètre tii = R,U ou F.
Obligatoire lors de l'utilisation des liaisons du marchand dans les transferts par liaison.
ConditionoriginalPaymentDateStringDate de la transaction initiale. Valeur au format Unix timestamp en millisecondes. Transmise si la valeur du paramètre tii = R,U ou F.
FacultatifacsInIFrameBooleanDrapeau indiquant que pour l'URL finale une version iFrame sera retournée. Valeurs possibles true ou false. Pour activer cette fonctionnalité, contactez le service de support.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Valeurs possibles de tii (Pour en savoir plus sur les types de données de paiement sauvegardées pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour la transactionSauvegarde des données de carte après la transactionRemarque
VideOrdinaireAcheteurSaisi par l'acheteurNonTransaction de commerce électronique sans sauvegarde de données de paiement sauvegardées.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
FPaiement non planifié (CIT)UltérieureAcheteurLe client choisit la carte au lieu de la saisie manuelleNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées.
UPaiement non planifié (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées. Utilisé uniquement pour les paiements en une étape.
RIInitiateur - Récurrents (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
RPaiement récurrent (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération récurrente utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
IPaiement échelonné (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération d'échelonnement utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.

Ci-dessous sont présentés les paramètres du bloc clientBrowserInfo (données sur le navigateur du client).

ObligatoireNomTypeDescription
FacultatifuserAgentString [1..2048]Agent du navigateur.
FacultatifOSStringSystème d'exploitation.
FacultatifOSVersionStringVersion du système d'exploitation.
FacultatifbrowserAcceptHeaderString [1..2048]En-tête Accept, qui informe le serveur des formats (ou types MIME) pris en charge par le navigateur.
FacultatifbrowserIpAddressString [1..45]Adresse IP du navigateur.
FacultatifbrowserLanguageString [1..8]Langue du navigateur.
FacultatifbrowserTimeZoneStringFuseau horaire du navigateur.
FacultatifbrowserTimeZoneOffsetString [1..5]Décalage du fuseau horaire en minutes entre l'heure locale de l'utilisateur et UTC.
FacultatifcolorDepthString [1..2]Profondeur de couleur de l'écran, en bits.
FacultatiffingerprintStringEmpreinte du navigateur - identifiant numérique unique du navigateur.
FacultatifisMobileBooleanValeurs possibles : true ou false. Indicateur signalant qu'un appareil mobile est utilisé.
FacultatifjavaEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge java est activée dans le navigateur.
FacultatifjavascriptEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge javascript est activée dans le navigateur.
FacultatifpluginsStringListe des plugins utilisés dans le navigateur, séparés par des virgules.
FacultatifscreenHeightInteger [1..6]Hauteur de l'écran en pixels.
FacultatifscreenWidthInteger [1..6]Largeur de l'écran en pixels.
FacultatifscreenPrintStringDonnées sur les paramètres d'impression du navigateur, incluant la résolution, la profondeur de couleur, la densité de pixels.

Exemple du bloc clientBrowserInfo :

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Lors de l'authentification par le protocole 3DS2, les paramètres suivants sont également transmis :

ObligatoireNomTypeDescription
OptionnelthreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
OptionnelthreeDSVer2FinishUrlString [1..512]URL vers laquelle le client doit être redirigé après l'authentification sur le serveur ACS.
OptionnelthreeDSMethodNotificationUrlString [1..512]URL pour l'envoi de la notification de passage de la vérification sur ACS.

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
OptionnelerrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
OptionnelinfoStringEn cas de réponse réussie. Résultat de la tentative de paiement. Ci-dessous sont présentées les valeurs possibles.
  • Votre paiement est traité, redirection en cours...
  • Opération refusée. Vérifiez les données saisies, la suffisance des fonds sur la carte et répétez l'opération. Redirection en cours...
  • Désolé, le paiement ne peut pas être effectué. Redirection en cours...
  • Opération refusée. Contactez le magasin. Redirection en cours...
  • Opération refusée. Contactez la banque qui a émis la carte. Redirection en cours...
  • Opération impossible. L'authentification du porteur de carte s'est terminée sans succès. Redirection en cours...
  • Pas de connexion avec la banque. Répétez plus tard. Redirection en cours...
  • Délai d'attente de saisie des données expiré. Redirection en cours...
  • Aucune réponse reçue de la banque. Répétez plus tard. Redirection en cours...
OptionnelredirectString [1..512]Ce paramètre est renvoyé si le paiement a réussi et qu'aucune vérification de la carte pour l'implication dans 3-D Secure n'a été effectuée pour le paiement. Les vendeurs peuvent l'utiliser s'ils souhaitent rediriger l'utilisateur vers la page de la passerelle de paiement. Si le vendeur utilise sa propre page, cette valeur peut être ignorée.
OptionneltermUrlString [1..512]En cas de réponse réussie lors du paiement 3D-Secure. Il s'agit de l'URL vers laquelle l'ACS redirige le porteur de carte après authentification. Pour plus de détails, voir Redirection vers ACS.
OptionnelacsUrlString [1..512]URL pour la redirection vers ACS. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Pour plus de détails, voir Redirection vers ACS.
OptionnelpaReqString [1..255]PAReq (Payment Authentication Request) — message qui doit être envoyé à ACS avec la redirection. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est nécessaire. Ce message contient des données en encodage Base64, nécessaires pour l'authentification du porteur de carte. Pour plus de détails, voir Redirection vers ACS.

L'élément payerData contient les paramètres suivants.

ObligatoireNomTypeDescription
OptionnelpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Lors de l'authentification par protocole 3DS2, en réponse à la première requête, arrivent les paramètres suivants :

ObligatoireNomTypeDescription
Obligatoireis3DSVer2BooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient de 3DS2.
ObligatoirethreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
OptionnelthreeDSMethodUrlString [1..512]URL du serveur ACS pour la collecte des données du navigateur.
ObligatoirethreeDSMethodUrlServerString [1..512]URL du serveur 3DS pour collecter les données du navigateur qui seront incluses dans AReq (Authentication Request) du serveur 3DS vers le serveur ACS.
OptionnelthreeDSMethodDataPackedString [1..1024]Données CReq (Challenge Response) en encodage Base-64 pour l'envoi au serveur ACS.
OptionnelthreeDSMethodURLServerDirectString [1..512]Adresse URL 3dsmethod.do pour l'exécution de la méthode 3DS sur le serveur 3DS via la passerelle de paiement (en présence de l'autorisation correspondante au niveau du vendeur).

Ci-dessous sont présentés les paramètres qui doivent être présents dans la réponse, après la requête répétée de paiement et la nécessité de rediriger le client vers ACS lors de l'authentification par protocole 3DS2 :

ObligatoireNomTypeDescription
ConditionnelacsUrlString [1..512]URL pour la redirection vers ACS. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Pour plus de détails, voir Redirection vers ACS.
ConditionnelpackedCReqStringDonnées challenge request empaquetées. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Cette valeur doit être utilisée comme valeur du paramètre creq du lien vers ACS (acsUrl), pour rediriger le client vers ACS. Pour plus de détails, voir Redirection vers ACS.

Exemples

Exemple de requête

Exemple de première requête :

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/paymentorder.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data MDORDER=64d3b8c2-5d87-7d92-bd20-d8db011b4f5b \
  --data '$PAN=4000001111111118' \
  --data '$CVC=123' \
  --data YYYY=2030 \
  --data MM=12 \
  --data 'TEXT=TEST CARDHOLDER' \
  --data language=en \
  --data 'jsonParams={"param_1_name":"param_1_value","param_2_name":"param_2_value"}'

Exemple de seconde requête :

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/paymentorder.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data MDORDER=64d3b8c2-5d87-7d92-bd20-d8db011b4f5b \
  --data '$PAN=4000001111111118' \
  --data '$CVC=123' \
  --data YYYY=2030 \
  --data MM=12 \
  --data 'TEXT=TEST CARDHOLDER' \
  --data language=en \
  --data threeDSServerTransID=5802746e-3393-40c3-929a-dc966ebf08c6

Exemples de réponse

Exemple de réponse à la première requête :

{
  "errorCode": 0,
  "is3DSVer2": true,
  "threeDSServerTransId": "5802746e-3393-40c3-929a-dc966ebf08c6",
  "threeDSMethodURL": "https://example.com/acs2/acs/3dsMethod",
  "threeDSMethodURLServer": "example.com/3dsserver/api/v1/client/gather?threeDSServerTransID=5802746e-3393-40c3-929a-dc966ebf08c6",
  "threeDSMethodDataPacked": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9hY3F1aXJlci5jb20vM2Rzc2VydmVyL2FwaS92MS9hY3Mvbm90aWZpY2F0aW9uP3RocmVlRFNTZXJ2ZXJUcmFuc0lEPTNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiM2FmYzE2OGEtOTRiNC00ZWIzLThlMmUtODBmNmMxODY2NjlkIn0="
}

Exemple de réponse à la seconde requête :

{
  "info": "Your order is proceeded, redirecting...",
  "errorCode": 0,
  "acsUrl": "https://example.com/acs2/acs/creq",
  "is3DSVer2": true,
  "packedCReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjU4MDI3NDZlLTMzOTMtNDBjMy05MjlhLWRjOTY2ZWJmMDhjNiIsIm1lc3NhZ2VUeXBlIjoiQ1JlcSIsIm1lc3NhZ2VWZXJzaW9uIjoiMi4xLjAiLCJhY3NUcmFuc0lEIjoiODFmZTU1ODUtZmZhOS00Y2NkLTljMjAtY2QzYWFiZDQwNTllIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"
}

Paiement de commande (en mode MPI/3DS Server externe)

Pour utiliser la requête paymenOrder.do en mode MPI/3DS Server externe, vous devez effectuer l'authentification 3DS en utilisant votre propre serveur MPI/3DS.
Vous avez également besoin d'une autorisation supplémentaire assignée par le service support.

Paramètres de la requête

Caractère obligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoireMDORDERString [1..36]Numéro de commande dans la passerelle de paiement.
Condition$PANInteger [1..19]Numéro de carte de paiement. Obligatoire si seToken n'est pas transmis.
Condition$CVCString [3]Code CVC/CVV2 au verso de la carte. Obligatoire, si seToken n'est pas transmis.
Seuls les chiffres sont autorisés.
ConditionYYYYInteger [4]Année d'expiration de la carte de paiement. Si seToken n'est pas transmis, il est obligatoire de transmettre soit $EXPIRY, soit YYYY et MM.
ConditionMMInteger [2]Mois d'expiration de la carte de paiement. Si seToken n'est pas transmis, il est obligatoire de transmettre soit $EXPIRY, soit YYYY et MM.
Condition$EXPIRYInteger [6]Date d'expiration de la carte dans le format suivant : YYYYMM. Remplace les paramètres YYYY et MM. Si seToken n'est pas transmis, il est obligatoire de transmettre soit $EXPIRY, soit YYYY et MM.
ConditionseTokenStringDonnées cryptées de la carte qui remplacent les paramètres $PAN, $CVC et $EXPIRY (ou YYYY,MM). Obligatoire si utilisé à la place des données de carte.
Paramètres obligatoires pour la chaîne seToken : timestamp, UUID, PAN, EXPDATE, MDORDER. Plus de détails sur la génération de seToken voir ici.
Si seToken contient des données cryptées sur la liaison (bindingId), pour le paiement il faut utiliser la requête paymentOrderBinding.do.
ObligatoireTEXTString [1..512]Nom du porteur de la carte.
ObligatoirelanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatifbindingNotNeededBooleanValeurs autorisées :
  • true- la création de liaison après l'exécution du paiement est désactivée (la liaison est l'identifiant du client transmis dans la demande d'enregistrement de commande, qui après la demande de paiement sera supprimé des détails de la commande) ;
  • false – en cas de paiement réussi, une liaison peut être créée (sous réserve du respect des conditions nécessaires). C'est la valeur par défaut.
FacultatifjsonParamsObjectChamps d'informations supplémentaires pour stockage ultérieur, transmis sous la forme suivante : jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}.
Peuvent être transmis au Centre de Traitement, pour traitement ultérieur (configuration supplémentaire requise - contactez le support).
Si vous utilisez un MPI/3DS Server externe, la passerelle de paiement s'attend à ce que chaque requête paymentOrder inclue un certain nombre de paramètres supplémentaires, tels que eci, xid, cavv et autres. Informations plus détaillées ici.
Pour initier l'authentification 3RI, il peut être nécessaire de transmettre un certain nombre de paramètres supplémentaires (voir authentification 3RI).
Certains attributs jsonParams prédéfinis :
  • backToShopUrl - ajoute un bouton sur la page de paiement qui renverra le porteur de carte vers l'URL transmise dans ce paramètre
  • backToShopName - configure l'étiquette textuelle par défaut du bouton Retourner au magasin, si elle est utilisée avec backToShopUrl
  • installments - nombre maximum d'autorisations autorisées pour les paiements échelonnés. Requis pour créer une liaison d'échelonnement
  • totalInstallmentAmount - montant total de tous les paiements échelonnés. La valeur est nécessaire pour sauvegarder les données de paiement pour effectuer l'échelonnement
  • recurringFrequency - nombre minimum de jours entre les autorisations. Requis pour créer une liaison récurrente, recommandé pour créer une liaison d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • recurringExpiry - date après laquelle les autorisations ne sont pas autorisées, au format AAAAMMJJ. Requis pour créer une liaison récurrente, recommandé pour créer une liaison d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
FacultatiftiiStringIdentificateur de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera exécutée par l'initiateur (Client ou Marchand). Valeurs possibles
FacultatifthreeDSProtocolVersionStringVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la requête, alors pour l'autorisation 3D Secure, la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
ConditionemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec des informations sur le facilitateur de paiement, c'est-à-dire sur le marchand qui permet à plusieurs sous-marchands d'accepter des paiements sous son compte.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de pré-commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.
FacultatifclientBrowserInfoObjectBloc de données sur le navigateur du client, qui est envoyé à ACS pendant l'authentification 3DS. Ce bloc peut être transmis seulement si un paramétrage spécial est activé (contactez l'équipe de support). Voir paramètres imbriqués.
FacultatifacsInIFrameBooleanDrapeau indiquant que pour l'URL finale une version iFrame sera retournée. Valeurs possibles true ou false. Pour activer cette fonctionnalité, contactez le service de support.
FacultatifmarketplaceObjectBloc avec les paramètres de la marketplace, c'est-à-dire le vendeur qui propose des biens ou services de différents détaillants.
Ce paramètre est utilisé si un réglage spécial est activé (contactez le service de support). Voir paramètres imbriqués.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Valeurs possibles de tii (Pour en savoir plus sur les types de données de paiement sauvegardées pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour la transactionSauvegarde des données de carte après la transactionRemarque
VideOrdinaireAcheteurSaisi par l'acheteurNonTransaction de commerce électronique sans sauvegarde de données de paiement sauvegardées.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
FPaiement non planifié (CIT)UltérieureAcheteurLe client choisit la carte au lieu de la saisie manuelleNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées.
UPaiement non planifié (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées. Utilisé uniquement pour les paiements en une étape.
RIInitiateur - Récurrents (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
RPaiement récurrent (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération récurrente utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
IPaiement échelonné (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération d'échelonnement utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.

Ci-dessous sont présentés les paramètres du bloc clientBrowserInfo (données sur le navigateur du client).

ObligatoireNomTypeDescription
FacultatifuserAgentString [1..2048]Agent du navigateur.
FacultatifOSStringSystème d'exploitation.
FacultatifOSVersionStringVersion du système d'exploitation.
FacultatifbrowserAcceptHeaderString [1..2048]En-tête Accept, qui informe le serveur des formats (ou types MIME) pris en charge par le navigateur.
FacultatifbrowserIpAddressString [1..45]Adresse IP du navigateur.
FacultatifbrowserLanguageString [1..8]Langue du navigateur.
FacultatifbrowserTimeZoneStringFuseau horaire du navigateur.
FacultatifbrowserTimeZoneOffsetString [1..5]Décalage du fuseau horaire en minutes entre l'heure locale de l'utilisateur et UTC.
FacultatifcolorDepthString [1..2]Profondeur de couleur de l'écran, en bits.
FacultatiffingerprintStringEmpreinte du navigateur - identifiant numérique unique du navigateur.
FacultatifisMobileBooleanValeurs possibles : true ou false. Indicateur signalant qu'un appareil mobile est utilisé.
FacultatifjavaEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge java est activée dans le navigateur.
FacultatifjavascriptEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge javascript est activée dans le navigateur.
FacultatifpluginsStringListe des plugins utilisés dans le navigateur, séparés par des virgules.
FacultatifscreenHeightInteger [1..6]Hauteur de l'écran en pixels.
FacultatifscreenWidthInteger [1..6]Largeur de l'écran en pixels.
FacultatifscreenPrintStringDonnées sur les paramètres d'impression du navigateur, incluant la résolution, la profondeur de couleur, la densité de pixels.

Exemple du bloc clientBrowserInfo :

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatifinfoStringEn cas de réponse réussie. Résultat de la tentative de paiement. Ci-dessous sont présentées les valeurs possibles.
  • Votre paiement est traité, redirection en cours...
  • Opération refusée. Vérifiez les données saisies, la suffisance des fonds sur la carte et répétez l'opération. Redirection en cours...
  • Désolé, le paiement ne peut pas être effectué. Redirection en cours...
  • Opération refusée. Contactez le magasin. Redirection en cours...
  • Opération refusée. Contactez la banque qui a émis la carte. Redirection en cours...
  • Opération impossible. L'authentification du porteur de carte s'est terminée sans succès. Redirection en cours...
  • Pas de connexion avec la banque. Répétez plus tard. Redirection en cours...
  • Délai d'attente de saisie des données expiré. Redirection en cours...
  • Aucune réponse reçue de la banque. Répétez plus tard. Redirection en cours...

Exemples

Exemple de requête

curl --request POST \\
  --url https://dev.bpcbt.com/payment/rest/paymentorder.do \\
  --header 'content-type: application/x-www-form-urlencoded' \\
  --data userName=test_user \\
  --data password=test_user_password \\
  --data MDORDER=0140dda0-71ed-7706-a61f-36bd00a7d8c0 \\
  --data '$PAN=4000001111111118' \\
  --data '$CVC=123' \\
  --data YYYY=2030 \\
  --data MM=12 \\
  --data 'TEXT=TEST CARDHOLDER' \\
  --data language=en \\
  --data 'jsonParams={
  "eci": "02",
  "cavv": "AkZO5XQAA0rhBxoaufa+MAABAAA=",
  "xid": "5010857f-8d3f-74e1-9c5a-54a000cc4110",
  "threeDSProtocolVersion": "2.2.0",
  "threeDsType": "5"
}'

Exemple de réponse

{
  "redirect": "https://dev.bpcbt.com/payment/merchants/temp/finish.html?orderId=01493844-d4d3-703f-9f7e-a73900a7d8c0",
  "info": "Your order is proceeded, redirecting...",
  "errorCode": 0
}

Paiement de commande avec caractéristiques de transaction Industry Practice

Pour le paiement de commande avec caractéristiques de transaction Industry Practice, la requête https://dev.bpcbt.com/payment/industryPractice/paymentOrder.do est utilisée.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de requête

Caractère obligatoireNomTypeDescription
ConditionneluserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ConditionnelpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
ConditionneltokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.
ObligatoireoriginalMdOrderString [1..36]Numéro de la commande d'origine dans la Passerelle de paiement, pour laquelle le paiement Industry Practice est effectué.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
ConditionnelamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en centimes) du paiement d'origine pour les opérations Incremental, Delayed Charges, No show.
Le paramètre est obligatoire pour les opérations Incremental, Delayed Charges, No show. Le paramètre ne doit pas être spécifié pour Resubmission et Reauthorization.
FacultatifjsonParamsObjectBalise supplémentaire avec attributs pour transmettre des paramètres supplémentaires. Voir ci-dessous.
L'ancien paramètre params est un alias de ce paramètre, c'est-à-dire que les requêtes avec params fonctionnent également.
ObligatoiretiiStringIdentifiant de l'initiateur (pour) la transaction. Paramètre indiquant quel type d'opération sera effectué par l'initiateur (Client ou Commerçant).
FacultatiffeaturesStringFonctions de commande. Pour spécifier plusieurs fonctions, utilisez ce paramètre plusieurs fois dans une seule requête. Voici les valeurs possibles.
  • VERIFY - si cette valeur est transmise dans la requête de création de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la requête, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lire plus en détail ici.
  • FORCE_TDS - Traitement forcé du paiement en utilisant 3-D Secure. Si la carte ne supporte pas 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Traitement forcé du paiement via SSL (sans utilisation de 3-D Secure).
  • FORCE_FULL_TDS - Après l'authentification avec 3-D Secure le statut PaRes doit être seulement Y, ce qui garantit l'authentification réussie de l'utilisateur. Sinon la transaction n'aboutira pas.
  • FORCE_CREATE_BINDING - la transmission de cette valeur dans la requête de création de commande crée forcément une liaison. Cette fonctionnalité doit être activée au niveau du vendeur dans la passerelle. Cette valeur ne peut pas être transmise dans une requête avec un bindingId existant ou bindingNotNeeded = true (causera une erreur de validation). Quand cette fonction est transmise, le paramètre clientId doit également être transmis. Si dans le bloc features les deux valeurs FORCE_CREATE_BINDING et VERIFY sont transmises, alors la commande sera créée SEULEMENT pour créer une liaison (sans paiement).
  • PARTIAL_AUTHORIZATION - l'autorisation partielle est disponible pour la commande. Voir plus en détail ici.
  • FORCE_PAYMENT_WAY - traitement forcé du paiement par le moyen de paiement spécifié dans jsonParams dans le paramètre paymentWay. Pour effectuer de tels paiements le marchand doit avoir les autorisations correspondantes.
    À l'heure actuelle utilisé pour le traitement forcé du paiement MOTO. Pour cela il est nécessaire de transmettre également dans jsonParams le paramètre paymentWay avec la valeur CARD_MOTO.

Valeurs possibles de tii.

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour la transactionRemarque
IPIIndustry Practice Incremental (MIT)UltérieureVendeurNon saisies, chargées depuis l'enregistrement transactionnel correspondant ou la liaison de la passerelle de paiementTransaction d'augmentation du montant de paiement dans le cadre d'une commande déjà payée.
IPSIndustry Practice Resubmission (MIT)UltérieureVendeurNon saisies, chargées depuis l'enregistrement transactionnel correspondant ou la liaison de la passerelle de paiementTransaction de tentative de paiement répété, lorsque le paiement initial s'est terminé par une erreur.
IPDIndustry Practice Delayed Charges (MIT)UltérieureVendeurNon saisies, chargées depuis l'enregistrement transactionnel correspondant ou la liaison de la passerelle de paiementFonctionnalité de charges différées.
IPAIndustry Practice Reauthorization (MIT)UltérieureVendeurNon saisies, chargées depuis l'enregistrement transactionnel correspondant ou la liaison de la passerelle de paiementTentative répétée d'autorisation, si l'achèvement ou l'exécution de la commande/service initial dépasse la durée de validité de l'autorisation établie par Visa/MC.
IPNIndustry Practice No Show (MIT)UltérieureVendeurNon saisies, chargées depuis l'enregistrement transactionnel correspondant ou la liaison de la passerelle de paiementExécutée par les Marchands pour facturer au Client des amendes pour non-présentation lors de réservations d'hôtels et d'automobiles Car Sharing.

Le bloc jsonParams contient les champs d'informations supplémentaires pour le stockage ultérieur. Pour transmettre N paramètres, la requête doit contenir N balises jsonParams, où l'attribut name contient le nom, et l'attribut value contient la valeur (voir le tableau ci-dessous).

ObligatoireNomTypeDescription
ObligatoirenameString [1..255]Nom du paramètre supplémentaire.
ObligatoirevalueString [1..1024]Valeur du paramètre supplémentaire - jusqu'à 1024 caractères.

Paramètres de réponse

Caractère obligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatifmdOrderString [1..36]Numéro de commande dans la passerelle de paiement avec le paiement Industry Practice exécuté.
FacultatifactionCodeStringCode de réponse du traitement de la banque. Contient une valeur numérique. Voir la liste des codes de réponse ici.
FacultatifapprovalCodeString [6]Code d'autorisation du système de paiement international. Ce champ a une longueur fixe (six caractères) et peut contenir des chiffres et des lettres latines.
FacultatifrrnInteger [1..12]Reference Retrieval Number - identifiant de transaction attribué par la banque acquéreuse.

Exemples

Exemple de requête

curl --request POST \\
  --url https://dev.bpcbt.com/payment/industryPractice/paymentOrder.do \\
  --header 'content-type: application/x-www-form-urlencoded' \\
  --data '{
    "originalMdOrder":"f252eee4-5598-728a-a023-af6e09078dd0",
    "orderNumber":"testOrderNumber1",
    "tii":"IPI",
    "amount":"10",
    "username":"test_user",
    "password":"test_user_password"
}'

Exemple de réponse - Paiement réussi de commande avec caractéristiques de transaction Industry Practice

{
  "errorCode": "0",
  "errorMessage": "Successful",
  "mdOrder": "d88680c4-54e9-7115-80ae-3cc709017350",
  "actionCode": "0",
  "approvalCode": "000000",
  "rrn": "111111111113"
}

Exemple de réponse - Paiement non réussi de commande avec caractéristiques de transaction Industry Practice (le processeur a retourné une erreur)

{
  "errorCode": "5",
  "errorMessage": "Unsuccessful",
  "mdOrder": "d88680c4-54e9-7115-80ae-3cc709017350",
  "actionCode": "116",
  "approvalCode": "000000",
  "rrn": "111111111113"
}

Paiement non réussi de commande avec caractéristiques de transaction Industry Practice (par exemple, erreur de validation)

{
  "errorCode": "5",
  "errorMessage": "Operation is not allowed for original order"
}

Paiement instantané

Requête utilisée pour l'enregistrement de commande et le paiement simultané pour celle-ci – https://dev.bpcbt.com/payment/rest/instantPayment.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de requête

ObligatoireNomTypeDescription
ConditionuserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ConditionpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
ConditiontokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatifbindingNotNeededBooleanValeurs autorisées :
  • true - la création de liaison après effectuation du paiement est désactivée (liaison - c'est l'identifiant du client, transmis dans la demande d'enregistrement de commande, qui après la demande instantPayment.do sera supprimé des détails de la commande) ;
  • false - en cas de paiement réussi, une liaison peut être créée (sous réserve du respect des conditions nécessaires). C'est la valeur par défaut.
ConditionorderNumberString [1..36]Numéro de commande (ID) dans le système du commerçant, doit être unique pour chaque commerçant enregistré dans la passerelle de paiement. Si le numéro de commande est généré du côté de la passerelle de paiement, ce paramètre n'est pas obligatoire à transmettre.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
ConditionoriginalSchemeTransactionIdString [1..22]Identifiant de la transaction originale réussie dans Mastercard.
Obligatoire lors de l'utilisation des données de paiement sauvegardées du marchand dans les virements par données de paiement sauvegardées.
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifpanString [1..19]Numéro de carte de paiement (obligatoire, si bindinId n'est pas transmis). La valeur pan remplace la valeur bindingId.
FacultatifcvcString [3]La transmission du paramètre est déterminée par le type de paiement :
  • la transmission cvc n'est pas prévue pour tous les paiements tokenisés ;
  • la transmission cvc n'est pas prévue pour les paiements MIT ;
  • la transmission cvc est obligatoire par défaut pour tous les autres types de paiements ; mais si l'autorisation Peut effectuer le paiement sans confirmation CVC est sélectionnée pour le marchand, alors dans ce cas la transmission cvc devient facultative.

Seuls les chiffres sont autorisés.
FacultatifcardHolderNameString [1..26]Nom du titulaire de la carte en lettres latines. Ce paramètre n'est transmis qu'après le paiement de la commande.
FacultatifmerchantLoginString [1..255]Pour enregistrer une commande au nom d'un autre marchand, spécifiez son login (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
FacultatifsessionTimeoutSecsInteger [1..9]Durée de vie de la commande en secondes. Si le paramètre n'est pas défini, la valeur spécifiée dans les paramètres du marchand sera utilisée, ou le temps par défaut (1200 secondes = 20 minutes). Si le paramètre expirationDate est présent dans la requête, alors la valeur du paramètre sessionTimeoutSecs n'est pas prise en compte.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
FacultatifexpirationDateString [19]Date et heure d'expiration de la commande. Format : yyyy-MM-ddTHH:mm:ss.
Si ce paramètre n'est pas transmis dans la requête, alors le paramètre sessionTimeoutSecs est utilisé pour déterminer le temps d'expiration de la commande.
ConditionseTokenString [1..8192]Données de carte chiffrées qui remplacent les paramètres $PAN, $CVC et $EXPIRY (ou YYYY,MM). Obligatoire si utilisé à la place des données de carte.
Paramètres obligatoires pour la chaîne seToken : timestamp, UUID, bindingId(ou PAN,EXPDATE). Pour plus de détails sur la génération de seToken voir ici.
ObligatoirereturnUrlString [1..512]Adresse vers laquelle l'utilisateur doit être redirigé en cas de paiement réussi. L'adresse doit être spécifiée complètement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatiffailUrlString [1..512]Adresse vers laquelle il faut rediriger l'utilisateur en cas de paiement échoué. L'adresse doit être spécifiée entièrement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatifjsonParamsObjectChamps d'informations supplémentaires pour stockage ultérieur, transmis sous la forme suivante : jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}.
Peuvent être transmis au Centre de Traitement, pour traitement ultérieur (configuration supplémentaire requise - contactez le support).
Si vous utilisez un MPI/3DS Server externe, la passerelle de paiement s'attend à ce que chaque requête paymentOrder inclue un certain nombre de paramètres supplémentaires, tels que eci, xid, cavv et autres. Informations plus détaillées ici.
Pour initier l'authentification 3RI, il peut être nécessaire de transmettre un certain nombre de paramètres supplémentaires (voir authentification 3RI).
Certains attributs jsonParams prédéfinis :
  • backToShopUrl - ajoute un bouton sur la page de paiement qui renverra le porteur de carte vers l'URL transmise dans ce paramètre
  • backToShopName - configure l'étiquette textuelle par défaut du bouton Retourner au magasin, si elle est utilisée avec backToShopUrl
  • installments - nombre maximum d'autorisations autorisées pour les paiements échelonnés. Requis pour créer une liaison d'échelonnement
  • totalInstallmentAmount - montant total de tous les paiements échelonnés. La valeur est nécessaire pour sauvegarder les données de paiement pour effectuer l'échelonnement
  • recurringFrequency - nombre minimum de jours entre les autorisations. Requis pour créer une liaison récurrente, recommandé pour créer une liaison d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • recurringExpiry - date après laquelle les autorisations ne sont pas autorisées, au format AAAAMMJJ. Requis pour créer une liaison récurrente, recommandé pour créer une liaison d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
FacultatiffeaturesStringFonctions de commande. Pour spécifier plusieurs fonctions, utilisez ce paramètre plusieurs fois dans une seule requête. Voici les valeurs possibles.
  • VERIFY - si cette valeur est transmise dans la requête de création de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la requête, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lire plus en détail ici.
  • FORCE_TDS - Traitement forcé du paiement en utilisant 3-D Secure. Si la carte ne supporte pas 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Traitement forcé du paiement via SSL (sans utilisation de 3-D Secure).
  • FORCE_FULL_TDS - Après l'authentification avec 3-D Secure le statut PaRes doit être seulement Y, ce qui garantit l'authentification réussie de l'utilisateur. Sinon la transaction n'aboutira pas.
  • FORCE_CREATE_BINDING - la transmission de cette valeur dans la requête de création de commande crée forcément une liaison. Cette fonctionnalité doit être activée au niveau du vendeur dans la passerelle. Cette valeur ne peut pas être transmise dans une requête avec un bindingId existant ou bindingNotNeeded = true (causera une erreur de validation). Quand cette fonction est transmise, le paramètre clientId doit également être transmis. Si dans le bloc features les deux valeurs FORCE_CREATE_BINDING et VERIFY sont transmises, alors la commande sera créée SEULEMENT pour créer une liaison (sans paiement).
  • PARTIAL_AUTHORIZATION - l'autorisation partielle est disponible pour la commande. Voir plus en détail ici.
  • FORCE_PAYMENT_WAY - traitement forcé du paiement par le moyen de paiement spécifié dans jsonParams dans le paramètre paymentWay. Pour effectuer de tels paiements le marchand doit avoir les autorisations correspondantes.
    À l'heure actuelle utilisé pour le traitement forcé du paiement MOTO. Pour cela il est nécessaire de transmettre également dans jsonParams le paramètre paymentWay avec la valeur CARD_MOTO.
FacultatiforderBundleObjectObjet contenant le panier de produits. La description des éléments imbriqués est donnée ci-dessous.
FacultatifdynamicCallbackUrlString [1..512]Paramètre pour transmettre l'adresse dynamique pour recevoir les notifications callback "de paiement" pour la commande, activées pour le marchand (autorisation réussie, débit réussi, remboursement, annulation, rejet du paiement par timeout, rejet du paiement card present).
Les notifications callback "non liées au paiement" (activation/désactivation de liaison, création de liaison), seront envoyées à l'adresse callback statique.
FacultatifthreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
FacultatifthreeDSVer2FinishUrlString [1..512]URL vers laquelle le client doit être redirigé après l'authentification sur le serveur ACS.
FacultatifthreeDSMethodNotificationUrlString [1..512]URL pour l'envoi de la notification de passage de la vérification sur ACS.
ConditionthreeDSVer2MdOrderString [1..36]Numéro de commande qui a été enregistré dans la première partie de la demande dans le cadre de l'opération 3DS2. Obligatoire pour l'authentification 3DS.
Si ce paramètre est présent dans la demande, alors mdOrder est utilisé, qui est transmis dans le présent paramètre. Dans ce cas, l'enregistrement de la commande n'a pas lieu, mais le paiement de la commande se produit immédiatement.
Ce paramètre est transmis uniquement lors de l'utilisation des méthodes de paiement instantané, c'est-à-dire, lorsque la commande est enregistrée et payée dans le cadre d'une seule demande.
FacultatifthreeDSSDKBooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient du 3DS SDK.
FacultatifthreeDSProtocolVersionStringVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la requête, alors pour l'autorisation 3D Secure, la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
FacultatifexpiryInteger [6]Date d'expiration de la carte au format suivant : YYYYMM. Obligatoire si ni seToken, ni bindingId ne sont transmis.
ConditionemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec des informations sur le facilitateur de paiement, c'est-à-dire sur le marchand qui permet à plusieurs sous-marchands d'accepter des paiements sous son compte.
Pour transmettre ce paramètre, un réglage spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
FacultatiftiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera exécuté par l'initiateur (Client ou Marchand). Valeurs possibles
ConditionoriginalPaymentNetRefNumStringIdentifiant de la transaction originale ou précédente réussie dans le système de paiement par rapport à l'opération effectuée par liaison - TRN ID. Transmis si la valeur du paramètre tii = R,U ou F.
Obligatoire lors de l'utilisation des liaisons du marchand dans les transferts par liaison.
ConditionoriginalPaymentDateStringDate de la transaction initiale. Valeur au format Unix timestamp en millisecondes. Transmise si la valeur du paramètre tii = R,U ou F.
FacultatifexternalScaExemptionIndicatorStringType d'exemption SCA (Strong Customer Authentication). Si ce paramètre est spécifié, la transaction sera traitée en fonction de vos paramètres dans la passerelle de paiement : soit une opération SSL forcée sera effectuée, soit la banque émettrice recevra des informations sur l'exemption SCA et prendra une décision de mener l'opération avec authentification 3DS ou sans elle (pour obtenir des informations détaillées, contactez notre service de support). Valeurs autorisées :
  • LVP – transaction de type Low Value Payments. La transaction peut être classée comme transactions à faible niveau de risque sur la base du montant de la transaction, du nombre de transactions du client par jour ou du montant quotidien total des paiements du client.
  • TRA – transaction de type Transaction Risk Analysis, c'est-à-dire transaction ayant passé avec succès la vérification antifraude.

Pour transmettre ce paramètre, vous devez avoir des droits suffisants dans la passerelle de paiement.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifmarketplaceObjectBloc avec les paramètres de la place de marché, c'est-à-dire le vendeur qui propose des biens ou services de différents détaillants (retailers).
Ce paramètre est utilisé si un réglage spécial est activé (contactez le service de support). Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de précommande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données du payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifclientBrowserInfoObjectBloc de données sur le navigateur du client, qui est envoyé vers ACS pendant l'authentification 3DS. Ce bloc ne peut être transmis que si un paramètre spécial est activé (contactez l'équipe de support). Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.

Description des paramètres dans l'objet orderBundle :

ObligatoireNomTypeDescription
FacultatiforderCreationDateString [19]Date de création de la commande au format YYYY-MM-DDTHH:MM:SS.
FacultatifcustomerDetailsObjectBloc contenant les attributs du client. La description des attributs de la balise est donnée ci-dessous.
ObligatoirecartItemsObjectObjet contenant les attributs des produits dans le panier. La description des éléments imbriqués est fournie ci-dessous.

Description des paramètres dans l'objet customerDetails :

ObligatoireNomTypeDescription
FacultatifcontactString [0..40]Méthode de contact préférée par le client.
FacultatiffullNameString [1..100]Nom complet du payeur.
FacultatifpassportString [1..100]Série et numéro du passeport du payeur au format suivant : 2222888888
FacultatifdeliveryInfoObjectObjet contenant les attributs de l'adresse de livraison. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet deliveryInfo :

Caractère obligatoireNomTypeDescription
FacultatifdeliveryTypeString [1..20]Mode de livraison.
ObligatoirecountryString [2]Code de pays de livraison à deux lettres.
ObligatoirecityString [0..40]Ville de destination.
ObligatoirepostAddressString [1..255]Adresse de livraison.

Description des paramètres dans l'objet cartItems :

ObligatoireNomTypeDescription
ObligatoireitemsObjectÉlément du tableau avec les attributs de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet items :

ObligatoireNomTypeDescription
ObligatoirepositionIdInteger [1..12]Identifiant unique de la position de marchandise dans le panier.
ObligatoirenameString [1..255]Désignation ou description de la position tarifaire sous forme libre.
FacultatifitemDetailsObjectObjet avec les paramètres de description de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.
ObligatoirequantityObjectÉlément décrivant la quantité totale des positions de marchandises d'un même positionId et ses unités de mesure. La description des éléments imbriqués est donnée ci-dessous.
FacultatifitemAmountInteger [1..12]Montant du coût de toutes les positions de marchandises d'un positionId dans les unités minimales de la devise. itemAmount est obligatoire à transmettre, seulement si le paramètre itemPrice n'a pas été transmis. Dans le cas contraire, la transmission d'itemAmount n'est pas requise. Si dans la requête les deux paramètres sont transmis : itemPrice et itemAmount, alors itemAmount doit être égal à itemPrice * quantity, dans le cas contraire la requête se terminera avec une erreur.
FacultatifitemPriceInteger [1..18]Montant du coût de la position de marchandise d'un positionId en argent dans les unités minimales de devise.
FacultatifdepositedItemAmountString [1..18]Montant de débit pour un positionId en unités minimales de devise (par exemple, en centimes).
FacultatifitemCurrencyInteger [3]Code de devise ISO 4217. Si non spécifié, considéré comme égal à la devise de la commande.
ObligatoireitemCodeString [1..100]Numéro (identifiant) de la position de marchandise dans le système du magasin.

Description des paramètres dans l'objet itemDetails :

ObligatoireNomTypeDescription
FacultatifitemDetailsParamsObjectParamètre décrivant les informations supplémentaires sur la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet itemDetailsParams :

ObligatoireNomTypeDescription
ObligatoirevalueString [1..2000]Informations supplémentaires sur la position de marchandise.
ObligatoirenameString [1..255]Dénomination du paramètre de description de la détaillisation de la position de marchandise

Description des paramètres dans l'objet quantity :

ObligatoireNomTypeDescription
ObligatoirevalueNumber [1..18]Quantité de positions de marchandises de ce positionId. Pour indiquer les nombres fractionnaires, utilisez le point décimal. Maximum 3 chiffres après le point sont autorisés.
ObligatoiremeasureString [1..20]Unité de mesure de la quantité par position.

Valeurs possibles de tii (Pour en savoir plus sur les types de données de paiement sauvegardées pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour la transactionSauvegarde des données de carte après la transactionRemarque
VideOrdinaireAcheteurSaisi par l'acheteurNonTransaction de commerce électronique sans sauvegarde de données de paiement sauvegardées.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
FPaiement non planifié (CIT)UltérieureAcheteurLe client choisit la carte au lieu de la saisie manuelleNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées.
UPaiement non planifié (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées. Utilisé uniquement pour les paiements en une étape.
RIInitiateur - Récurrents (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
RPaiement récurrent (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération récurrente utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
IPaiement échelonné (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération d'échelonnement utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Ci-dessous sont présentés les paramètres du bloc clientBrowserInfo (données sur le navigateur du client).

ObligatoireNomTypeDescription
FacultatifuserAgentString [1..2048]Agent du navigateur.
FacultatifOSStringSystème d'exploitation.
FacultatifOSVersionStringVersion du système d'exploitation.
FacultatifbrowserAcceptHeaderString [1..2048]En-tête Accept, qui informe le serveur des formats (ou types MIME) pris en charge par le navigateur.
FacultatifbrowserIpAddressString [1..45]Adresse IP du navigateur.
FacultatifbrowserLanguageString [1..8]Langue du navigateur.
FacultatifbrowserTimeZoneStringFuseau horaire du navigateur.
FacultatifbrowserTimeZoneOffsetString [1..5]Décalage du fuseau horaire en minutes entre l'heure locale de l'utilisateur et UTC.
FacultatifcolorDepthString [1..2]Profondeur de couleur de l'écran, en bits.
FacultatiffingerprintStringEmpreinte du navigateur - identifiant numérique unique du navigateur.
FacultatifisMobileBooleanValeurs possibles : true ou false. Indicateur signalant qu'un appareil mobile est utilisé.
FacultatifjavaEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge java est activée dans le navigateur.
FacultatifjavascriptEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge javascript est activée dans le navigateur.
FacultatifpluginsStringListe des plugins utilisés dans le navigateur, séparés par des virgules.
FacultatifscreenHeightInteger [1..6]Hauteur de l'écran en pixels.
FacultatifscreenWidthInteger [1..6]Largeur de l'écran en pixels.
FacultatifscreenPrintStringDonnées sur les paramètres d'impression du navigateur, incluant la résolution, la profondeur de couleur, la densité de pixels.

Exemple du bloc clientBrowserInfo :

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement ;
  • autre valeur numérique positive - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre error.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorString [1..512]Message d'erreur (si une erreur a été retournée dans la réponse) dans la langue transmise dans la requête.
FacultatiforderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
FacultatifinfoStringEn cas de réponse réussie. Résultat de la tentative de paiement. Ci-dessous sont présentées les valeurs possibles.
  • Votre paiement est traité, redirection en cours...
  • Opération refusée. Vérifiez les données saisies, la suffisance des fonds sur la carte et répétez l'opération. Redirection en cours...
  • Désolé, le paiement ne peut pas être effectué. Redirection en cours...
  • Opération refusée. Contactez le magasin. Redirection en cours...
  • Opération refusée. Contactez la banque qui a émis la carte. Redirection en cours...
  • Opération impossible. L'authentification du porteur de carte s'est terminée sans succès. Redirection en cours...
  • Pas de connexion avec la banque. Répétez plus tard. Redirection en cours...
  • Délai d'attente de saisie des données expiré. Redirection en cours...
  • Aucune réponse reçue de la banque. Répétez plus tard. Redirection en cours...
FacultatifredirectString [1..512]Ce paramètre est renvoyé si le paiement a réussi et qu'aucune vérification de la carte pour l'implication dans 3-D Secure n'a été effectuée pour le paiement. Les vendeurs peuvent l'utiliser s'ils souhaitent rediriger l'utilisateur vers la page de la passerelle de paiement. Si le vendeur utilise sa propre page, cette valeur peut être ignorée.
FacultatiftermUrlString [1..512]En cas de réponse réussie lors du paiement 3D-Secure. Il s'agit de l'URL vers laquelle l'ACS redirige le porteur de carte après authentification. Pour plus de détails, voir Redirection vers ACS.
FacultatifacsUrlString [1..512]URL pour la redirection vers ACS. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Pour plus de détails, voir Redirection vers ACS.
FacultatifpaReqString [1..255]PAReq (Payment Authentication Request) — message qui doit être envoyé à ACS avec la redirection. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est nécessaire. Ce message contient des données en encodage Base64, nécessaires pour l'authentification du porteur de carte. Pour plus de détails, voir Redirection vers ACS.
ConditionorderStatusObjectContient les paramètres de statut de commande et n'est retourné que dans le cas où la passerelle de paiement a reconnu tous les paramètres de requête comme corrects. Voir description ci-dessous.

Quand l'authentification utilisant le protocole 3DS v2.0 est nécessaire, les paramètres suivants seront obtenus en réponse à la requête :

ObligatoireNomTypeDescription
Obligatoireis3DSVer2BooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient de 3DS2.
ObligatoirethreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
FacultatifthreeDSMethodUrlString [1..512]URL du serveur ACS pour la collecte des données du navigateur.
ObligatoirethreeDSMethodUrlServerString [1..512]URL du serveur 3DS pour collecter les données du navigateur qui seront incluses dans AReq (Authentication Request) du serveur 3DS vers le serveur ACS.
FacultatifthreeDSMethodDataPackedString [1..1024]Données CReq (Challenge Response) en encodage Base-64 pour l'envoi au serveur ACS.
FacultatifthreeDSMethodURLServerDirectString [1..512]Adresse URL 3dsmethod.do pour l'exécution de la méthode 3DS sur le serveur 3DS via la passerelle de paiement (en présence de l'autorisation correspondante au niveau du vendeur).

L'élément payerData contient les paramètres suivants.

ObligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Le bloc orderStatus contient les éléments suivants.

ObligatoireNomTypeDescription
FacultatifErrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre ErrorMessage.
Peut être absent si le résultat n'a pas causé d'erreurs.
FacultatifErrorMessageString [1..512]Paramètre informatif qui est une description de l'erreur en cas de survenue d'erreur. La valeur ErrorMessage peut varier, par conséquent il ne faut pas référencer explicitement ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatifOrderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatifOrderStatusIntegerLa valeur de ce paramètre indique le statut de la commande dans la passerelle de paiement. Absent si la commande n'a pas été trouvée. Ci-dessous la liste des valeurs disponibles :
  • 0 - commande enregistrée mais non payée ;
  • 1 - Montant pré-autorisé retenu (pour les paiements en deux étapes) ;
  • 2 - autorisation complète du montant de la commande effectuée ;
  • 3 - autorisation annulée ;
  • 4 - opération de remboursement effectuée sur la transaction ;
  • 5 - autorisation initiée via l'ACS de la banque émettrice ;
  • 6 - autorisation rejetée ;
  • 7 - attente de paiement des commandes ;
  • 8 - finalisation intermédiaire pour finalisation partielle multiple.
FacultatifexpirationInteger [6]Date d'expiration de la carte au format suivant : YYYYMM.
FacultatifcardholderNameString [1..26]Nom du porteur de carte (le cas échéant).
FacultatifapprovedAmountInteger [0..12]Montant en unités minimales de devise (par exemple, en centimes) qui a été bloqué sur le compte de l'acheteur. Utilisé uniquement dans les paiements en deux étapes.
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
FacultatifdepositAmountInteger [1..12]Montant du prélèvement en unités minimales de la devise (par exemple, en centimes).
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifapprovalCodeString [6]Code d'autorisation du système de paiement international. Ce champ a une longueur fixe (six caractères) et peut contenir des chiffres et des lettres latines.
FacultatifauthCodeInteger [6]Paramètre obsolète (non utilisé). Sa valeur est toujours 2 indépendamment du statut de la commande et du code d'autorisation du système de traitement.
FacultatifPanString [1..19]Numéro de carte masqué qui a été utilisé pour le paiement. Spécifié uniquement après le paiement de la commande. Lors du paiement Apple Pay, DPAN est utilisé. Il s'agit d'un numéro lié à l'appareil mobile de l'acheteur et qui remplit les fonctions du numéro de carte de paiement dans le système Apple Pay.
FacultatifamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifIpString [1..39]Adresse IP du payeur. IPv6 est pris en charge dans toutes les requêtes (jusqu'à 39 caractères).
FacultatiforiginalActionCodeString [1..15]Code de réponse reçu du processing. Pour activer la réception de ce champ, contactez le service de support technique.
FacultatifrrnInteger [1..12]Reference Retrieval Number - identifiant de transaction attribué par la banque acquéreuse.
FacultatifpaymentNetRefNumString [1..512]Original Network Reference Number - c'est un identifiant que le réseau de paiement (Mastercard, Visa, etc.) attribue lors de la première transaction (par exemple, un achat). Lors de l'exécution d'une opération inverse (remboursement, paiement répété), ce numéro :
  • est copié de la transaction originale
  • est transmis dans le champ Original Network Reference Number
  • permet au système de paiement de lier la nouvelle opération à l'opération initiale
FacultatiftokenizationInfoObjectBloc avec des paramètres pour le service Tokenizer, qui permet d'effectuer la tokenisation des cartes à l'aide des services VTS (Visa Token Service) ou MCS (Mastercard Checkout Solutions). Ce bloc est renvoyé si un paiement tokenisé a eu lieu. Voir paramètres imbriqués.

Les paramètres du bloc tokenizationInfo (données sur la tokenisation de carte) sont énumérés ci-dessous.

ObligatoireNomTypeDescription
ObligatoiretokenIdStringIdentifiant unique du token, généré par le service Tokenizer.
ObligatoiretokenizationProviderStringFournisseur de services de tokenisation. Valeurs autorisées : vts,mcs.
ObligatoirepanReferenceStringRéférence au PAN original (numéro de carte).
ObligatoiredpanStringPAN numérique.
ObligatoiretokenExpiryIntegerDate d'expiration du token au format YYYYMM.

Exemple du bloc tokenizationInfo :

"tokenizationInfo": {
	  "tokenId": "8d577a01-55f7-45d4-add5-bfe0e8e6c571",
	  "tokenizationProvider": "vts",
	  "panReference": "f441492a-5b0a-453d-af97-e897e1148dc5",
	  "dpan": "5435982500356335",
	  "tokenExpiry": "202912"
	}

Exemples

Exemple de requête

curl --request POST \
--url  https://dev.bpcbt.com/payment/rest/instantPayment.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data amount=100 \
--data currency=978 \
--data description=my_first_order \
--data orderNumber=1218637308 \
--data pan=4000001111111118  \
--data cvc=123 \
--data expiry=203012 \
--data cardHolderName="TEST CARDHOLDER" \
--data email="demo@example.com" \
--data phone="+449998887766" \
--data language=en \
--data returnUrl=https://mybestmerchantreturnurl.com \
--data failUrl=https://mybestmerchantreturnurl.com

Exemple de réponse

{
    "errorCode": "0",
    "orderId": "eee72f6e-b980-79c5-92e8-6f4200b1eae0",
    "info": "Your order is proceeded, redirecting...",
    "redirect": "https://www.test.com/payment/merchants/gateway/finish.html?orderId=eee72f6e-b980-79c5-92e8-6f4200b1eae0&lang=en",
    "orderStatus": {
        "expiration": "202412",
        "cardholderName": "TEST CARDHOLDER",
        "depositAmount": 100,
        "currency": "978",
        "approvalCode": "123456",
        "authCode": 2,
        "originalActionCode": "S1",
        "rrn": "311489272111",
        "ErrorCode": "0",
        "ErrorMessage": "Success",
        "OrderStatus": 2,
        "OrderNumber": "2011",
        "Pan": "500000**1115",
        "Amount": 100,
        "Ip": "x.x.x.x"
    }
}

Paiement MOTO

Pour effectuer des paiements MOTO, utilisez la méthode https://dev.bpcbt.com/payment/rest/motoPayment.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de requête

ObligatoireNomTypeDescription
FacultatifuserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
FacultatifpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
FacultatiftokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.
FacultatiforderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
ObligatoirereturnUrlString [1..512]Adresse vers laquelle l'utilisateur doit être redirigé en cas de paiement réussi. L'adresse doit être spécifiée complètement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatiffailUrlString [1..512]Adresse vers laquelle il faut rediriger l'utilisateur en cas de paiement échoué. L'adresse doit être spécifiée entièrement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatifmerchantLoginString [1..255]Pour effectuer un paiement MOTO au nom d'un autre marchand, spécifiez dans ce paramètre le login du compte API du vendeur.
Ne peut être utilisé que si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
FacultatifpostAddressString [1..255]Adresse de livraison.
FacultatifjsonParamsObjectEnsemble d'attributs supplémentaires de forme arbitraire, structure :
jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}
Peuvent être transmis au Centre de Traitement, pour un traitement ultérieur (configuration supplémentaire requise - contactez le support).
Certains attributs prédéfinis de jsonParams :
  • backToShopUrl - ajoute un bouton à la page de paiement qui ramènera le porteur de carte à l'URL transmise dans ce paramètre
  • backToShopName - configure l'étiquette textuelle du bouton Retour à la boutique par défaut, si elle est utilisée avec backToShopUrl
  • installments - nombre maximum d'autorisations autorisées pour les paiements échelonnés. Requis pour créer des données de paiement sauvegardées d'échelonnement
  • totalInstallmentAmount - montant total de tous les paiements échelonnés. La valeur est nécessaire pour sauvegarder les données de paiement pour effectuer l'échelonnement
  • recurringFrequency - nombre minimum de jours entre les autorisations. Requis pour créer des données de paiement sauvegardées récurrentes, recommandé pour créer des données de paiement sauvegardées d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • recurringExpiry - date après laquelle les autorisations ne sont pas autorisées, au format AAAAMMJJ. Requis pour créer des données de paiement sauvegardées récurrentes, recommandé pour créer des données de paiement sauvegardées d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • paymentWay - méthode de paiement. Pour forcer l'exécution d'un paiement MOTO, il faut transmettre la valeur CARD_MOTO.
FacultatiffeaturesStringFonctions de commande. Pour spécifier plusieurs fonctions, utilisez ce paramètre plusieurs fois dans une seule requête. Voici les valeurs possibles.
  • VERIFY - si cette valeur est transmise dans la requête de création de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la requête, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lire plus en détail ici.
  • FORCE_TDS - Traitement forcé du paiement en utilisant 3-D Secure. Si la carte ne supporte pas 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Traitement forcé du paiement via SSL (sans utilisation de 3-D Secure).
  • FORCE_FULL_TDS - Après l'authentification avec 3-D Secure le statut PaRes doit être seulement Y, ce qui garantit l'authentification réussie de l'utilisateur. Sinon la transaction n'aboutira pas.
  • FORCE_CREATE_BINDING - la transmission de cette valeur dans la requête de création de commande crée forcément une liaison. Cette fonctionnalité doit être activée au niveau du vendeur dans la passerelle. Cette valeur ne peut pas être transmise dans une requête avec un bindingId existant ou bindingNotNeeded = true (causera une erreur de validation). Quand cette fonction est transmise, le paramètre clientId doit également être transmis. Si dans le bloc features les deux valeurs FORCE_CREATE_BINDING et VERIFY sont transmises, alors la commande sera créée SEULEMENT pour créer une liaison (sans paiement).
  • PARTIAL_AUTHORIZATION - l'autorisation partielle est disponible pour la commande. Voir plus en détail ici.
  • FORCE_PAYMENT_WAY - traitement forcé du paiement par le moyen de paiement spécifié dans jsonParams dans le paramètre paymentWay. Pour effectuer de tels paiements le marchand doit avoir les autorisations correspondantes.
    À l'heure actuelle utilisé pour le traitement forcé du paiement MOTO. Pour cela il est nécessaire de transmettre également dans jsonParams le paramètre paymentWay avec la valeur CARD_MOTO.
FacultatifdynamicCallbackUrlString [1..512]Paramètre pour transmettre l'adresse dynamique pour recevoir les notifications callback "de paiement" pour la commande, activées pour le marchand (autorisation réussie, débit réussi, remboursement, annulation, rejet du paiement par timeout, rejet du paiement card present).
Les notifications callback "non liées au paiement" (activation/désactivation de liaison, création de liaison), seront envoyées à l'adresse callback statique.
ConditionnelemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de Paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de précommande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
ObligatoirepanString [1..19]Numéro de carte masqué qui a été utilisé pour le paiement. Ce paramètre n'est spécifié qu'après le paiement de la commande. Lors du paiement via Apple Pay, le DPAN est utilisé comme numéro de carte - c'est un numéro lié à l'appareil mobile du client, qui fonctionne comme un numéro de carte de paiement dans le système Apple Pay.
ObligatoireexpiryInteger [6]Date d'expiration de la carte au format suivant : YYYYMM. Obligatoire si ni seToken, ni bindingId ne sont transmis.
ObligatoirecardholderString [1..26]Nom du porteur de la carte en lettres latines. Ce paramètre n'est transmis qu'après le paiement de la commande.
FacultatifcvcString [3]La transmission du paramètre est déterminée par le type de paiement :
  • la transmission cvc n'est pas prévue pour tous les paiements tokenisés ;
  • la transmission cvc n'est pas prévue pour les paiements MIT ;
  • la transmission cvc est obligatoire par défaut pour tous les autres types de paiements ; mais si l'autorisation Peut effectuer le paiement sans confirmation CVC est sélectionnée pour le marchand, alors dans ce cas la transmission cvc devient facultative.

Seuls les chiffres sont autorisés.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoiresuccessBooleanParamètre principal qui indique que la demande a été traitée avec succès. Les valeurs suivantes sont disponibles :
  • true - demande traitée avec succès ;
  • false - demande échouée.

Notez que la valeur true signifie que la demande a été traitée, et non que la commande a été payée.
Des informations plus détaillées sur la façon de savoir si le paiement a réussi ou non sont disponibles ici.
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
ObligatoireerrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
ObligatoiremdOrderString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatifuserMessageString [1..512]Message à l'utilisateur avec description du code de résultat.

L'élément payerData contient les paramètres suivants.

ObligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/payment/rest/motoPayment.do \
--header 'content-type: application/x-www-form-urlencoded' \
  --data amount=2000 \
  --data currency=978 \
  --data userName=test_user \
  --data password=test_user_password \
  --data returnUrl=https://mybestmerchantreturnurl.com \
  --data description=my_first_order \
  --data pan=4000001111111118 \
  --data expiry=203012 \
  --data cvc=123 \
  --data cardholder="TEST CARDHOLDER" \
  --data language=en

Exemple de réponse - paiement réussi

{
   "errorCode":"0",
   "success":true,
   "mdOrder":"088433e9-e34d-769e-9366-696200a7d8c0",
   "orderNumber":"62001"
}

Redirection vers ACS (simplifiée)

Si 3-D Secure est requis, alors après avoir reçu la réponse à la demande de paiement, le client doit être redirigé vers ACS. Dans ce cas, la réponse à la demande de paiement contient le paramètre acsUrl, qui sera utilisé pour la redirection.

La requête https://dev.bpcbt.com/payment/acsRedirect.do?orderId={orderId} permet de rediriger le client vers la page d'authentification ACS de manière simplifiée - en utilisant simplement le paramètre orderId, obtenu après l'enregistrement de la commande.

Il est également possible de rediriger le client vers ACS à l'aide d'une requête POST (redirection habituelle). La description de cette méthode est disponible ici.

Sans aucune autre action requise de la part du client, la passerelle de paiement le redirige vers la page ACS, où le client s'authentifie.

Ensuite, selon le résultat de l'authentification, le client est redirigé vers l'URL suivante :

Pour rediriger le client vers ACS, utilisez l'URL suivante :

https://dev.bpcbt.com/payment/acsRedirect.do?orderId={Numéro de commande dans la passerelle de paiement}

Paramètres de requête

ObligatoireNomTypeDescription
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.

Paramètres de réponse

Exemple

Exemple de requête

curl -X GET https://dev.bpcbt.com/payment/acsRedirect.do?orderId=85eb9a84-2a47-7cca-b0ae-662c000016d1

Exemple d'URL de redirection

https://mybestmerchantreturnurl.com/?orderId=85eb9a84-2a47-7cca-b0ae-662c000016d1

Portefeuilles

Enregistrement de commande Apple Pay

Pour l'enregistrement et le paiement de commande, la méthode https://dev.bpcbt.com/payment/applepay/payment.do est utilisée.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de requête

ObligatoireNomTypeDescription
ObligatoiremerchantString [1..255]Pour enregistrer et payer une commande au nom d'un autre marchand, spécifiez son identifiant (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de visualiser les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifadditionalParametersObjectParamètres supplémentaires de la commande, qui sont stockés dans le compte personnel du vendeur pour consultation ultérieure. Chaque nouvelle paire de nom de paramètre et sa valeur doit être séparée par une virgule. Ci-dessous un exemple d'utilisation.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
Lors de la création d'une liaison dans cette balise, des paramètres définissant le type de liaison créée peuvent être transmis. Voir liste des paramètres.
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
ObligatoirepaymentTokenString [1..8192]Le paramètre paymentToken doit contenir la valeur déchiffrée et encodée en Base64 de la propriété paymentData, obtenue de l'objet PKPaymentToken Object du système Apple Pay (voir plus de détails dans la documentation Apple Pay). Ainsi, pour faire une demande de paiement à la passerelle de paiement, le vendeur doit :
  1. obtenir PKPaymentToken Object, contenant paymentData d'Apple Pay ;
  2. extraire la valeur paymentData et l'encoder en Base64 ;
  3. inclure la valeur encodée de la propriété paymentData comme valeur du paramètre paymentToken dans la demande de paiement, que le vendeur adressera à la passerelle de paiement.
FacultatiftiiStringIdentifiant de l'initiateur de la transaction. Paramètre indiquant quel type d'opération sera effectuée par l'initiateur (Client ou Marchand). Valeurs possibles.
ConditionclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
ConditionemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec des informations sur le facilitateur de paiement, c'est-à-dire sur le marchand qui permet à plusieurs sous-marchands d'accepter des paiements sous son compte.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
ConditionphoneString [7..15]Numéro de téléphone du propriétaire de la carte. Il est nécessaire de toujours indiquer le code pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du propriétaire de la carte.
FacultatifthreeDSProtocolVersionStringVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la requête, alors pour l'autorisation 3D Secure, la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
FacultatifmarketplaceObjectBloc avec les paramètres de la marketplace, c'est-à-dire du vendeur qui propose des produits ou services de différents vendeurs au détail (retailers).
Ce paramètre est utilisé si un paramétrage spécial est activé (contactez le service support). Voir paramètres imbriqués.
FacultatifexternalScaExemptionIndicatorStringType d'exemption SCA (Strong Customer Authentication). Si ce paramètre est spécifié, la transaction sera traitée en fonction de vos paramètres dans la passerelle de paiement : soit une opération SSL forcée sera effectuée, soit la banque émettrice recevra des informations sur l'exemption SCA et prendra une décision de mener l'opération avec authentification 3DS ou sans elle (pour obtenir des informations détaillées, contactez notre service de support). Valeurs autorisées :
  • LVP – transaction de type Low Value Payments. La transaction peut être classée comme transactions à faible niveau de risque sur la base du montant de la transaction, du nombre de transactions du client par jour ou du montant quotidien total des paiements du client.
  • TRA – transaction de type Transaction Risk Analysis, c'est-à-dire transaction ayant passé avec succès la vérification antifraude.

Pour transmettre ce paramètre, vous devez avoir des droits suffisants dans la passerelle de paiement.

Paramètres supplémentaires définissant le type de liaison créée et transmis dans additionalParameters :

ObligatoireNomTypeDescription
ConditioninstallmentsInteger [3]Nombre maximum d'autorisations autorisées pour les paiements en plusieurs fois.
Spécifié lors de la création d'une liaison pour effectuer des paiements en plusieurs fois.
ConditionrecurringFrequencyInteger [2]Nombre minimum de jours entre les autorisations. Nombre entier positif de 1 à 28 inclus.
Spécifié en cas de création d'une liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création d'une liaison pour l'exécution de paiements en plusieurs fois lors de l'activation de 3DS2.
ConditionrecurringExpiryString [8]Date après laquelle les autorisations ultérieures ne doivent pas être exécutées. Format : YYYYMMDD.
Indiqué en cas de création de liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création de liaison pour l'exécution de paiements à tempérament avec 3DS2 activé.

Valeurs possibles tii (Pour en savoir plus sur les types de liaisons pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour transactionSauvegarde des données de carte après transactionRemarque
VideOrdinaireAcheteurSaisie par l'acheteurNonTransaction de commerce électronique sans sauvegarde de liaison.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison. Cette valeur ne peut être transmise qu'en présence de l'autorisation "Création autorisée de liaisons vendor pays common".
RIInitiateur - Récurrentes (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoiresuccessBooleanParamètre principal qui indique que la demande a été traitée avec succès. Les valeurs suivantes sont disponibles :
  • true - demande traitée avec succès ;
  • false - demande échouée.

Notez que la valeur true signifie que la demande a été traitée, et non que la commande a été payée.
Des informations plus détaillées sur la façon de savoir si le paiement a réussi ou non sont disponibles ici.
ConditiondataObjectCe paramètre est retourné uniquement en cas de traitement réussi du paiement. Voir description ci-dessous.
ConditionerrorObjectCe paramètre est retourné uniquement en cas d'erreur de paiement. Voir description ci-dessous.
ConditionorderStatusObjectContient les paramètres de statut de la commande et est retourné uniquement dans le cas où la passerelle de paiement a reconnu tous les paramètres de requête comme corrects. Voir description ci-dessous.

Le bloc data contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.

Le bloc error contient les éléments suivants.

ObligatoireNomTypeDescription
codeString [1..3]Code comme paramètre informatif, signalant une erreur.
descriptionString [1..598]Explication technique détaillée de l'erreur - le contenu de ce paramètre n'est pas destiné à être affiché à l'utilisateur.
messageString [1..512]Paramètre informatif constituant la description de l'erreur pour l'affichage à l'utilisateur. Le paramètre peut varier, il ne faut donc pas se référer explicitement à ses valeurs dans le code.

Le bloc orderStatus contient les éléments suivants.

ObligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatiforderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatiforderStatusIntegerLa valeur de ce paramètre indique le statut de la commande dans la passerelle de paiement. Absent si la commande n'a pas été trouvée. Ci-dessous la liste des valeurs disponibles :
  • 0 - commande enregistrée mais non payée ;
  • 1 - commande seulement autorisée et pas encore finalisée (pour les paiements en deux étapes) ;
  • 2 - commande autorisée et finalisée ;
  • 3 - autorisation annulée ;
  • 4 - une opération de remboursement a été effectuée sur la transaction ;
  • 5 - autorisation initiée via ACS de la banque émettrice ;
  • 6 - autorisation refusée ;
  • 7 - attente de paiement de la commande ;
  • 8 - finalisation intermédiaire pour finalisation partielle multiple.
FacultatifactionCodeStringCode de réponse du traitement de la banque. Contient une valeur numérique. Voir la liste des codes de réponse ici.
FacultatifactionCodeDescriptionString [1..512]Description de actionCode, retournée par le système de traitement de la banque.
FacultatifamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifdateIntegerDate d'enregistrement de la commande comme nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
ConditionmerchantOrderParamsObjectObjet avec des attributs dans lesquels sont transmis des paramètres supplémentaires du marchand. Voir description ci-dessous.
ConditionattributesObjectAttributs de la commande dans le système de paiement (numéro de commande). Voir description ci-dessous.
ConditioncardAuthInfoObjectInformations sur la carte de paiement de l'acheteur. Voir description ci-dessous.
FacultatifauthDateTimeIntegerDate et heure d'autorisation, affichées comme le nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
FacultatifterminalIdString [1..10]Identifiant du terminal dans le système qui traite le paiement.
FacultatifauthRefNumString [1..24]Numéro d'autorisation du paiement, qui lui est attribué lors de l'enregistrement du paiement.
ConditionpaymentAmountInfoObjectParamètre contenant des paramètres imbriqués avec des informations sur les montants de confirmation, de débit et de remboursement. Voir description ci-dessous.
ConditionbankInfoObjectContient le paramètre imbriqué bankCountryName. Voir description ci-dessous.

L'élément payerData contient les paramètres suivants.

ObligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Le bloc merchantOrderParams contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoirenameString [1..255]Nom du paramètre supplémentaire du marchand.
ObligatoirevalueString [1..1024]Valeur du paramètre supplémentaire du vendeur - jusqu'à 1024 caractères.

Le bloc attributes contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoirenameString [1..255]Nom du paramètre supplémentaire.
ObligatoirevalueString [1..1024]Valeur du paramètre supplémentaire - jusqu'à 1024 caractères.

Le bloc cardAuthInfo contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoireexpirationInteger [6]Date d'expiration de la carte au format suivant : YYYYMM.
ObligatoirecardholderNameString [1..26]Nom du porteur de carte en lettres latines. Caractères autorisés : lettres latines, point, espace.
ObligatoireapprovalCodeString [6]Code d'autorisation du système de paiement international. Ce champ a une longueur fixe (six caractères) et peut contenir des chiffres et des lettres latines.
ObligatoirepanString [1..19]DPAN masqué : numéro lié à l'appareil mobile de l'acheteur et remplissant les fonctions de numéro de carte de paiement dans le système Apple Pay.
FacultatifdetokenizedPanRepresentationString [1..19]Numéro de carte détokenisé (4 derniers chiffres ou sous forme masquée).
FacultatifdetokenizedPanExpiryDateStringDate d'expiration de la carte détokénisée au format suivant : YYYYMM.

Le bloc paymentAmountInfo contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoirepaymentStateStringÉtat de la commande, le paramètre peut prendre les valeurs suivantes :
  • CREATED - commande créée (mais non payée) ;
  • APPROVED - commande approuvée (les fonds sur le compte de l'acheteur sont bloqués) ;
  • DEPOSITED - commande terminée (l'argent est débité du compte de l'acheteur) ;
  • DECLINED - commande rejetée ;
  • REVERSED - commande rejetée ;
  • REFUNDED - remboursement des fonds.
ObligatoireapprovedAmountInteger [0..12]Montant en unités minimales de devise (par exemple, en centimes) qui a été bloqué sur le compte de l'acheteur. Utilisé uniquement dans les paiements en deux étapes.
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
ObligatoiredepositedAmountInteger [1..12]Montant du débit en unités minimales de devise (par exemple, en centimes).
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
ObligatoirerefundedAmountInteger [1..12]Montant du remboursement dans les unités minimales de la devise.

Le bloc bankInfo contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoirebankCountryNameString [1..160]Pays de la banque émettrice.

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/payment/applepay/payment.do \
--header 'Content-Type: application/json' \
--data-raw '{
  "additionalParameters" : {
    "phone" : "9521235847",
    "order-pain" : "111",
    "email" : "apple@pay.com"
  },
  "language" : "en",
  "clientId" : "259753456",
  "orderNumber" : "281477871",
  "paymentToken" : "eyJkYXRhIjoiYPhK3M1bEtm...YjM2NWMzZWNmYjE5fIkVDX3YxIn0=",
  "preAuth" : false
}'

Réponse en cas de paiement réussi

{
    "success": true,
    "data": {
        "orderId": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
    },
    "orderStatus": {
        "errorCode": "0",
        "orderNumber": "229",
        "orderStatus": 1,
        "actionCode": 0,
        "actionCodeDescription": "",
        "amount": 960000,
        "currency": "978",
        "date": 1478682458102,
        "ip": "x.x.x.x",
        "merchantOrderParams": [
            {
                "name": "param2",
                "value": "param2"
            },
            {
                "name": "param1",
                "value": "param1"
            }
        ],
        "attributes": [
            {
                "name": "mdOrder",
                "value": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
            }
        ],
        "cardAuthInfo": {
            "expiration": "203012",
            "cardholderName": "TEST CARDHOLDER",
            "approvalCode": "123456",
            "pan": "500000**1115"
        },
        "authDateTime": 1478682459082,
        "terminalId": "12345678",
        "authRefNum": "111111111111",
        "paymentAmountInfo": {
            "paymentState": "APPROVED",
            "approvedAmount": 960000,
            "depositedAmount": 0,
            "refundedAmount": 0
        },
        "bankInfo": {
            "bankCountryName": "<UNKNOWN>"
        }
    }
}

Réponse en cas de paiement échoué

{
  "error": {
    "code": 10,
    "description": "Processing Error",
    "message": "Auth is invalid"
  },
  "success": false
}

Apple Pay Direct

Requête utilisée pour effectuer un paiement direct via Apple Pay - https://dev.bpcbt.com/payment/applepay/paymentDirect.do. Elle est utilisée pour l'enregistrement et le paiement d'une commande.

Cette requête peut être utilisée pour des intégrations impliquant le déchiffrement des données de paiement côté marchand.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de requête

ObligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec informations sur le facilitateur de paiement, c'est-à-dire sur le marchand qui permet à plusieurs sous-marchands d'accepter des paiements sous son compte.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
FacultatiffeeInputInteger [0..8]Taille de la commission en unités minimales de la devise. La fonctionnalité doit être activée au niveau du vendeur dans la passerelle.
FacultatifmarketplaceObjectBloc avec paramètres de marketplace, c'est-à-dire vendeur qui propose des biens ou services de différents vendeurs au détail (retailers).
Ce paramètre est utilisé si un paramétrage spécial est activé (contactez le service support). Voir paramètres imbriqués.
FacultatifadditionalParametersObjectParamètres supplémentaires de la commande qui sont stockés dans l'espace personnel du vendeur pour consultation ultérieure. Chaque nouvelle paire de nom de paramètre et sa valeur doit être séparée par une virgule. Ci-dessous un exemple d'utilisation.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
Lors de la création d'une liaison dans ce tag peuvent être transmis des paramètres définissant le type de liaison créée. Voir liste des paramètres.
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
ObligatoirepaymentTokenString [1..8192]Données de paiement obtenues d'Apple Pay et déchiffrées par le marchand. Séquence d'actions :
  1. Obtenez PKPaymentToken Object d'Apple Pay (Payment Token Format Reference) avec les données de paiement chiffrées ;
  2. Déchiffrez (ECC/RSA) paymentData pour obtenir la représentation textuelle de l'objet : {"applicationPrimaryAccountNumber":"4111111111111111","deviceManufacturerIdentifier":"050110030273","currencyCode":"840","applicationExpirationDate" :"220430","paymentData":{"onlinePaymentCryptogram":"AM32yL0vuOOmAAGG0iQUAoABFA=="}," paymentDataType":"3DSecure","transactionAmount":1010} ;
  3. Encodez en BASE64 le texte en clair de l'objet paymentData et envoyez-le comme paymentToken.
FacultatifmerchantString [1..255]Pour enregistrer et payer une commande au nom d'un autre marchand, spécifiez son identifiant (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de visualiser les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
FacultatiffeaturesStringDans ce paramètre, il est possible de transmettre la valeur VERIFY. Dans ce cas, le paiement ne sera pas effectué, à la place une liaison sera créée (la carte du client sera sauvegardée).
Si features est transmis, paymentToken.transactionAmount doit être 0. Dans le cas contraire, une erreur sera retournée.
ConditionnelclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatiftiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera exécuté par l'initiateur (Client ou Marchand). Valeurs possibles.
ConditionneloriginalPaymentNetRefNumStringIdentifiant de la transaction originale ou précédente réussie dans le système de paiement par rapport à l'opération effectuée par liaison - TRN ID. Transmis si la valeur du paramètre tii = R,U ou F.
Obligatoire lors de l'utilisation des liaisons du marchand dans les transferts par liaison.
ConditionneloriginalPaymentDateStringDate de la transaction initiale. Valeur au format Unix timestamp en millisecondes. Transmise si la valeur du paramètre tii = R,U ou F.
FacultatifthreeDSProtocolVersionStringVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la requête, alors pour l'autorisation 3D Secure, la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
FacultatifexternalScaExemptionIndicatorStringType d'exemption SCA (Strong Customer Authentication). Si ce paramètre est spécifié, la transaction sera traitée en fonction de vos paramètres dans la passerelle de paiement : soit une opération SSL forcée sera effectuée, soit la banque émettrice recevra des informations sur l'exemption SCA et prendra une décision de mener l'opération avec authentification 3DS ou sans elle (pour obtenir des informations détaillées, contactez notre service de support). Valeurs autorisées :
  • LVP – transaction de type Low Value Payments. La transaction peut être classée comme transactions à faible niveau de risque sur la base du montant de la transaction, du nombre de transactions du client par jour ou du montant quotidien total des paiements du client.
  • TRA – transaction de type Transaction Risk Analysis, c'est-à-dire transaction ayant passé avec succès la vérification antifraude.

Pour transmettre ce paramètre, vous devez avoir des droits suffisants dans la passerelle de paiement.
ConditionnelemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifbillingPayerDataObjectBloc avec données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le marchand côté Passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de pré-commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.

Valeurs possibles tii (Pour en savoir plus sur les types de liaisons pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour transactionSauvegarde des données de carte après transactionRemarque
VideOrdinaireAcheteurSaisie par l'acheteurNonTransaction de commerce électronique sans sauvegarde de liaison.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison. Cette valeur ne peut être transmise qu'en présence de l'autorisation "Création autorisée de liaisons vendor pays common".
RIInitiateur - Récurrentes (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.

Paramètres supplémentaires définissant le type de liaison créée et transmis dans additionalParameters :

ObligatoireNomTypeDescription
ConditioninstallmentsInteger [3]Nombre maximum d'autorisations autorisées pour les paiements en plusieurs fois.
Spécifié lors de la création d'une liaison pour effectuer des paiements en plusieurs fois.
ConditionrecurringFrequencyInteger [2]Nombre minimum de jours entre les autorisations. Nombre entier positif de 1 à 28 inclus.
Spécifié en cas de création d'une liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création d'une liaison pour l'exécution de paiements en plusieurs fois lors de l'activation de 3DS2.
ConditionrecurringExpiryString [8]Date après laquelle les autorisations ultérieures ne doivent pas être exécutées. Format : YYYYMMDD.
Indiqué en cas de création de liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création de liaison pour l'exécution de paiements à tempérament avec 3DS2 activé.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoiresuccessBooleanParamètre principal qui indique que la demande a été traitée avec succès. Les valeurs suivantes sont disponibles :
  • true - demande traitée avec succès ;
  • false - demande échouée.

Notez que la valeur true signifie que la demande a été traitée, et non que la commande a été payée.
Des informations plus détaillées sur la façon de savoir si le paiement a réussi ou non sont disponibles ici.
ObligatoiredataObjectRetourné uniquement en cas de paiement réussi.
ObligatoireerrorObjectCe paramètre n'est retourné qu'en cas d'erreur de paiement.
FacultatiforderStatusIntegerLa valeur de ce paramètre indique le statut de la commande dans la passerelle de paiement. Absent si la commande n'a pas été trouvée. Ci-dessous la liste des valeurs disponibles :
  • 0 - commande enregistrée mais non payée ;
  • 1 - commande seulement autorisée et pas encore finalisée (pour les paiements en deux étapes) ;
  • 2 - commande autorisée et finalisée ;
  • 3 - autorisation annulée ;
  • 4 - une opération de remboursement a été effectuée sur la transaction ;
  • 5 - autorisation initiée via ACS de la banque émettrice ;
  • 6 - autorisation refusée ;
  • 7 - attente de paiement de la commande ;
  • 8 - finalisation intermédiaire pour finalisation partielle multiple.

Paramètres dans le bloc data :

ObligatoireNomTypeDescription
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.

Paramètres dans le bloc error :

ObligatoireNomTypeDescription
ObligatoirecodeString [1..3]Code comme paramètre informatif, signalant une erreur.
ObligatoiremessageString [1..512]Paramètre informatif constituant la description de l'erreur pour l'affichage à l'utilisateur. Le paramètre peut varier, il ne faut donc pas se référer explicitement à ses valeurs dans le code.
ObligatoiredescriptionString [1..598]Explication technique détaillée de l'erreur - le contenu de ce paramètre n'est pas destiné à être affiché à l'utilisateur.

Paramètres dans le bloc orderStatus :

ObligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatiforderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatiforderStatusIntegerLa valeur de ce paramètre indique le statut de la commande dans la passerelle de paiement. Absent si la commande n'a pas été trouvée. Ci-dessous la liste des valeurs disponibles :
  • 0 - commande enregistrée mais non payée ;
  • 1 - Montant pré-autorisé mis en attente (pour les paiements en deux étapes) ;
  • 2 - autorisation complète du montant de la commande effectuée ;
  • 3 - autorisation annulée ;
  • 4 - opération de remboursement effectuée sur la transaction ;
  • 5 - autorisation initiée via ACS de la banque émettrice ;
  • 6 - autorisation rejetée.
FacultatifactionCodeStringCode de réponse du traitement de la banque. Contient une valeur numérique. Voir la liste des codes de réponse ici.
FacultatifactionCodeDescriptionString [1..512]Description de actionCode, retournée par le système de traitement de la banque.
FacultatifamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifdateIntegerDate d'enregistrement de la commande comme nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatifmerchantOrderParamsObjectSection avec attributs dans laquelle sont transmis les paramètres supplémentaires du marchand.
FacultatifcardAuthInfoObjectBloc avec les données sur la carte du payeur voir paramètres imbriqués.
FacultatifauthDateTimeIntegerDate et heure d'autorisation, affichées comme le nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
FacultatifterminalIdString [1..10]Identifiant du terminal dans le système qui traite le paiement.
FacultatifauthRefNumString [1..24]Numéro d'autorisation du paiement, qui lui est attribué lors de l'enregistrement du paiement.
FacultatifpaymentAmountInfoObjectObjet avec des informations sur les montants de confirmation, de débit, de remboursement. Voir la liste des paramètres imbriqués ci-dessous.
FacultatifbankInfoObjectObjet contenant le paramètre imbriqué bankCountryName, dans lequel est transmis le nom du pays de la banque émettrice (le cas échéant). La langue utilisée correspond à la langue transmise dans le paramètre de requête language. Si la langue n'est pas transmise, la langue de l'utilisateur appelant la méthode sera utilisée.

Le bloc orderStatus peut encore inclure l'élément payerData, qui contient les paramètres suivants.

ObligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Paramètres dans le bloc cardAuthInfo :

ObligatoireNomTypeDescription
FacultatifexpirationIntegerAnnée et mois d'expiration de la carte.
FacultatifcardholderNameString [1..26]Nom du porteur de carte (le cas échéant).
FacultatifapprovalCodeString [6]Code d'autorisation du système de paiement international. Ce champ a une longueur fixe (six caractères) et peut contenir des chiffres et des lettres latines.
FacultatifpanString [1..19]DPAN masqué : numéro lié à l'appareil mobile de l'acheteur et remplissant les fonctions de numéro de carte de paiement dans le système Apple Pay.
FacultatifdetokenizedPanRepresentationString [1..19]Numéro de carte détokenisé (4 derniers chiffres ou sous forme masquée).
FacultatifdetokenizedPanExpiryDateStringDate d'expiration de la carte détokénisée au format suivant : YYYYMM.

Paramètres dans le bloc paymentAmountInfo :

ObligatoireNomTypeDescription
FacultatifpaymentStateStringÉtat de la commande, le paramètre peut prendre les valeurs suivantes :
  • CREATED - commande créée (mais non payée) ;
  • APPROVED - commande approuvée (les fonds sur le compte de l'acheteur sont bloqués) ;
  • DEPOSITED - commande terminée (l'argent est débité du compte de l'acheteur) ;
  • DECLINED - commande rejetée ;
  • REVERSED - commande rejetée ;
  • REFUNDED - remboursement des fonds.
FacultatifapprovedAmountInteger [0..12]Montant en unités minimales de devise (par exemple, en centimes) qui a été bloqué sur le compte de l'acheteur. Utilisé uniquement dans les paiements en deux étapes.
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
FacultatifdepositedAmountInteger [1..12]Montant du débit en unités minimales de devise (par exemple, en centimes).
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
FacultatifrefundedAmountInteger [1..12]Montant du remboursement dans les unités minimales de la devise.
FacultatiftotalAmountInteger [1..20]Montant de la commande plus commission, si elle existe.

Exemples

Exemple de requête

curl --location --request POST 'https://dev.bpcbt.com/payment/applepay/paymentDirect.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "username": "test_user",
    "password": "test_user_password",
    "orderNumber": "947664b3-4a42-4cdf-9f8c-2e9679bad9e4",
    "description": "description of the order",
    "language": "en",
    "paymentToken": "eyJhcHBsaWNhPT...0ifX0="
}'

Exemples de réponse - paiement réussi

{
    "success": true,
    "data": {
        "orderId": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
    },
    "orderStatus": {
        "errorCode": "0",
        "orderNumber": "229",
        "orderStatus": 1,
        "actionCode": 0,
        "actionCodeDescription": "",
        "amount": 960000,
        "currency": "978",
        "date": 1478682458102,
        "ip": "x.x.x.x",
        "merchantOrderParams": [
            {
                "name": "param2",
                "value": "param2"
            },
            {
                "name": "param1",
                "value": "param1"
            }
        ],
        "attributes": [
            {
                "name": "mdOrder",
                "value": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
            }
        ],
        "cardAuthInfo": {
            "expiration": "203012",
            "cardholderName": "TEST CARDHOLDER",
            "approvalCode": "123456",
            "pan": "500000**1115"
        },
        "authDateTime": 1478682459082,
        "terminalId": "12345678",
        "authRefNum": "111111111111",
        "paymentAmountInfo": {
            "paymentState": "APPROVED",
            "approvedAmount": 960000,
            "depositedAmount": 0,
            "refundedAmount": 0
        },
        "bankInfo": {
            "bankCountryName": "<UNKNOWN>"
        }
    }
}

Exemple de réponse - erreur de paiement

{
  "error": {
    "code": 1,
    "description": "Processing Error",
    "message": "Insufficient amount on card"
  },
  "success": false
}

Enregistrement de commande Google Pay

Pour l'enregistrement et le paiement de commande, la requête https://dev.bpcbt.com/payment/google/payment.do est utilisée.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de requête

Caractère obligatoireNomTypeDescription
ObligatoiremerchantString [1..255]Pour enregistrer et payer une commande au nom d'un autre marchand, spécifiez son identifiant (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de visualiser les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifadditionalParametersObjectParamètres supplémentaires de la commande qui sont stockés dans l'espace personnel du vendeur pour consultation ultérieure. Chaque nouvelle paire de nom de paramètre et sa valeur doit être séparée par une virgule. Ci-dessous un exemple d'utilisation.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
Lors de la création d'une liaison dans ce tag peuvent être transmis des paramètres définissant le type de liaison créée. Voir liste des paramètres.
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
ObligatoireclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatiftiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera effectué par l'initiateur (Client ou Marchand). Valeurs possibles.
ObligatoirepaymentTokenString [1..8192]Jeton obtenu de Google Pay et encodé en Base64.
ObligatoireipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyCodeString [3]Code numérique de la devise de paiement ISO 4217. Si non spécifié, la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
ObligatoirereturnUrlString [1..512]Adresse vers laquelle l'utilisateur doit être redirigé en cas de paiement réussi. L'adresse doit être spécifiée complètement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatiffailUrlString [1..512]Adresse vers laquelle il faut rediriger l'utilisateur en cas de paiement échoué. L'adresse doit être spécifiée entièrement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatifdynamicCallbackUrlString [1..512]Paramètre pour transmettre l'adresse dynamique pour recevoir les notifications callback "de paiement" pour la commande, activées pour le marchand (autorisation réussie, débit réussi, remboursement, annulation, rejet du paiement par timeout, rejet du paiement card present).
Les notifications callback "non liées au paiement" (activation/désactivation de liaison, création de liaison), seront envoyées à l'adresse callback statique.
ConditionemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifmarketplaceObjectBloc avec les paramètres de marketplace, c'est-à-dire le vendeur qui propose des biens ou services de différents détaillants.
Ce paramètre est utilisé si un paramètre spécial est activé (contactez le service de support). Voir paramètres imbriqués.
FacultatifpaymentFacilitatorObjectBloc avec les informations sur le facilitateur de paiement, c'est-à-dire le marchand qui permet à plusieurs sous-marchands d'accepter des paiements sous son compte.
Pour transmettre ce paramètre, un paramètre spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de pré-commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.
FacultatifclientBrowserInfoObjectBloc de données sur le navigateur du client, qui est envoyé vers ACS durant l'authentification 3DS. Ce bloc peut être transmis uniquement si un paramétrage spécial est activé (contactez l'équipe de support). Voir paramètres imbriqués.

Lors de l'authentification par protocole 3DS2, les paramètres suivants sont également transmis :

Caractère obligatoireNomTypeDescription
ConditionthreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
FacultatifthreeDSVer2FinishUrlString [1..512]URL vers laquelle le client doit être redirigé après l'authentification sur le serveur ACS.
FacultatifthreeDSMethodNotificationUrlString [1..512]URL pour l'envoi de la notification de passage de la vérification sur ACS.

Valeurs possibles tii (Pour en savoir plus sur les types de liaisons pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour transactionSauvegarde des données de carte après transactionRemarque
VideOrdinaireAcheteurSaisie par l'acheteurNonTransaction de commerce électronique sans sauvegarde de liaison.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison. Cette valeur ne peut être transmise qu'en présence de l'autorisation "Création autorisée de liaisons vendor pays common".
RIInitiateur - Récurrentes (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.

Paramètres supplémentaires définissant le type de liaison créée et transmis dans additionalParameters :

ObligatoireNomTypeDescription
ConditioninstallmentsInteger [3]Nombre maximum d'autorisations autorisées pour les paiements en plusieurs fois.
Spécifié lors de la création d'une liaison pour effectuer des paiements en plusieurs fois.
ConditionrecurringFrequencyInteger [2]Nombre minimum de jours entre les autorisations. Nombre entier positif de 1 à 28 inclus.
Spécifié en cas de création d'une liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création d'une liaison pour l'exécution de paiements en plusieurs fois lors de l'activation de 3DS2.
ConditionrecurringExpiryString [8]Date après laquelle les autorisations ultérieures ne doivent pas être exécutées. Format : YYYYMMDD.
Indiqué en cas de création de liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création de liaison pour l'exécution de paiements à tempérament avec 3DS2 activé.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Ci-dessous sont présentés les paramètres du bloc clientBrowserInfo (données sur le navigateur du client).

ObligatoireNomTypeDescription
FacultatifuserAgentString [1..2048]Agent du navigateur.
FacultatifOSStringSystème d'exploitation.
FacultatifOSVersionStringVersion du système d'exploitation.
FacultatifbrowserAcceptHeaderString [1..2048]En-tête Accept, qui informe le serveur des formats (ou types MIME) pris en charge par le navigateur.
FacultatifbrowserIpAddressString [1..45]Adresse IP du navigateur.
FacultatifbrowserLanguageString [1..8]Langue du navigateur.
FacultatifbrowserTimeZoneStringFuseau horaire du navigateur.
FacultatifbrowserTimeZoneOffsetString [1..5]Décalage du fuseau horaire en minutes entre l'heure locale de l'utilisateur et UTC.
FacultatifcolorDepthString [1..2]Profondeur de couleur de l'écran, en bits.
FacultatiffingerprintStringEmpreinte du navigateur - identifiant numérique unique du navigateur.
FacultatifisMobileBooleanValeurs possibles : true ou false. Indicateur signalant qu'un appareil mobile est utilisé.
FacultatifjavaEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge java est activée dans le navigateur.
FacultatifjavascriptEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge javascript est activée dans le navigateur.
FacultatifpluginsStringListe des plugins utilisés dans le navigateur, séparés par des virgules.
FacultatifscreenHeightInteger [1..6]Hauteur de l'écran en pixels.
FacultatifscreenWidthInteger [1..6]Largeur de l'écran en pixels.
FacultatifscreenPrintStringDonnées sur les paramètres d'impression du navigateur, incluant la résolution, la profondeur de couleur, la densité de pixels.

Exemple du bloc clientBrowserInfo :

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Paramètres de réponse

Caractère obligatoireNomTypeDescription
ObligatoiresuccessBooleanParamètre principal qui indique que la demande a été traitée avec succès. Les valeurs suivantes sont disponibles :
  • true - demande traitée avec succès ;
  • false - demande échouée.

Notez que la valeur true signifie que la demande a été traitée, et non que la commande a été payée.
Des informations plus détaillées sur la façon de savoir si le paiement a réussi ou non sont disponibles ici.
ConditiondataObjectCe paramètre est retourné uniquement en cas de traitement réussi du paiement. Voir description ci-dessous.
ConditionerrorObjectCe paramètre est retourné uniquement en cas d'erreur de paiement. Voir description ci-dessous.

Le bloc data contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
FacultatiftermUrlString [1..512]En cas de réponse réussie lors du paiement 3D-Secure. Il s'agit de l'URL vers laquelle l'ACS redirige le porteur de carte après authentification. Pour plus de détails, voir Redirection vers ACS.
FacultatifacsUrlString [1..512]URL pour la redirection vers ACS. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Pour plus de détails, voir Redirection vers ACS.
FacultatifpaReqString [1..255]PAReq (Payment Authentication Request) — message qui doit être envoyé à ACS avec la redirection. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est nécessaire. Ce message contient des données en encodage Base64, nécessaires pour l'authentification du porteur de carte. Pour plus de détails, voir Redirection vers ACS.
FacultatifbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
FacultatifdetokenizedPanRepresentationString [1..19]Numéro de carte détokenisé (4 derniers chiffres ou sous forme masquée).
FacultatifdetokenizedPanExpiryDateStringDate d'expiration de la carte détokénisée au format suivant : YYYYMM.

Le bloc data peut inclure également l'élément payerData, qui contient les paramètres suivants.

Caractère obligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Si le protocole 3DS2 est utilisé, la réponse à la requête inclut également les paramètres suivants dans le bloc data :

Caractère obligatoireNomTypeDescription
Obligatoireis3DSVer2BooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient de 3DS2.
ObligatoirethreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
FacultatifthreeDSMethodUrlString [1..512]URL du serveur ACS pour la collecte des données du navigateur.
ObligatoirethreeDSMethodUrlServerString [1..512]URL du serveur 3DS pour collecter les données du navigateur qui seront incluses dans AReq (Authentication Request) du serveur 3DS vers le serveur ACS.
FacultatifthreeDSMethodDataPackedString [1..1024]Données CReq (Challenge Response) en encodage Base-64 pour l'envoi au serveur ACS.
FacultatifthreeDSMethodURLServerDirectString [1..512]Adresse URL 3dsmethod.do pour l'exécution de la méthode 3DS sur le serveur 3DS via la passerelle de paiement (en présence de l'autorisation correspondante au niveau du vendeur).

Le bloc error contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoirecodeString [1..3]Code comme paramètre informatif, signalant une erreur.
ObligatoiremessageString [1..512]Paramètre informatif constituant la description de l'erreur pour l'affichage à l'utilisateur. Le paramètre peut varier, il ne faut donc pas se référer explicitement à ses valeurs dans le code.
ObligatoiredescriptionString [1..598]Explication technique détaillée de l'erreur - le contenu de ce paramètre n'est pas destiné à être affiché à l'utilisateur.

Utilisez la requête getOrderStatusExtended.do, pour vérifier le statut de la transaction.

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/payment/google/payment.do \
--header 'Content-Type: application/json' \
--data-raw '{
  "merchant": "OurBestMerchantLogin",
  "orderNumber": "UAF-203974-DE",
  "language": "EN",
  "preAuth": true,
  "description" : "Test description",
  "additionalParameters":
  {
      "firstParamName": "firstParamValue",
      "secondParamName": "secondParamValue"
  },
  "paymentToken": "eyJtZXJjaGFudCI6ICJrdXBpdmlwIiwib3JkZXJOdW1iZXIiOiAyMDUxOTIzMzkxLCJwYXltZW50VG9rZW4iOiAie1wiZXBoZW1lcmFsUHVibGljS2V5XCI6XCJrZXlcIixcImVuY3J5cHRlZE1lc3NhZ2VcIjpcIm1lc3NhZ2VcIixcInRhZ1wiOlwidGFnXCJ9In0=",
  "ip" : "127.0.0.1",
  "amount" : "230000",
  "currencyCode" : 643,
  "failUrl" : "https://mybestmerchantfailurl.com"
  "returnUrl" : "https://mybestmerchantreturnurl.com"
}'

Exemple de réponse

{
"success":true,
"data": {
 "orderId": "12312312123"
 "is3DSVer2": true,
 "threeDSServerTransId": "f44d6d21-1874-45a5-aeb0-1c710dd6e134",
 "threeDSMethodURLServer": "https://test.com/3dsserver/gatherClientInfo?threeDSServerTransID=f44d6d21-1874-45a5-aeb0-1c710dd6e134"
 }
}

Google Pay Direct

Requête utilisée pour le paiement direct via Google Pay -https://dev.bpcbt.com/payment/google/paymentDirect.do. Elle est utilisée pour l'enregistrement et le paiement de commande.

Cette requête peut être utilisée pour les intégrations qui supposent le décryptage des données de paiement du côté du marchand.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de requête

ObligatoireNomTypeDescription
ObligatoireusernameString [1..30]Identifiant du compte API du vendeur.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifadditionalParametersObjectParamètres supplémentaires de la commande, qui sont stockés dans l'espace personnel du vendeur pour consultation ultérieure. Chaque nouvelle paire de nom de paramètre et sa valeur doit être séparée par une virgule. Ci-dessous un exemple d'utilisation.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
Lors de la création d'une liaison dans ce tag peuvent être transmis des paramètres définissant le type de liaison créée. Voir liste des paramètres.
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatifprotocolVersionStringVersion du protocole définie par Google pour le jeton de paiement : ECv1 (par défaut) ou ECv2
ObligatoirepaymentTokenString [1..8192]Données de paiement obtenues de Google Pay et déchiffrées par le marchand. Séquence d'actions :
  1. Obtenez PKPaymentToken Object de Google Pay (Payment Token Format Reference) avec les données de paiement chiffrées ;
  2. Déchiffrez (ECC/RSA) paymentData pour obtenir la représentation textuelle de l'objet : {"paymentMethod": "CARD","paymentMethodDetails": {"pan": "5555555555555599","expirationMonth": 12,"expirationYear": 2024},"gatewayMerchantId": "GPay-decrypted","messageId": "AH2EjtcHYs1Ye9Baqr4FAM735VNThPiP","messageExpiration": "1577862000000"} ;
  3. Encodez en BASE64 le texte clair de l'objet paymentData et envoyez-le comme paymentToken.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyCodeString [3]Code numérique de la devise de paiement ISO 4217. Si non spécifié, la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
ObligatoirereturnUrlString [1..512]Adresse vers laquelle l'utilisateur doit être redirigé en cas de paiement réussi. L'adresse doit être spécifiée complètement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatiffailUrlString [1..512]Adresse vers laquelle il faut rediriger l'utilisateur en cas de paiement échoué. L'adresse doit être spécifiée entièrement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatifmerchantString [1..255]Pour enregistrer et payer une commande au nom d'un autre marchand, spécifiez son identifiant (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de visualiser les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
FacultatiffeaturesStringFonctions de commande. Pour spécifier plusieurs fonctions, utilisez ce paramètre plusieurs fois dans une seule requête. Voici les valeurs possibles.
  • VERIFY - si cette valeur est transmise dans la requête de création de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la requête, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lire plus en détail ici.
  • FORCE_TDS - Traitement forcé du paiement en utilisant 3-D Secure. Si la carte ne supporte pas 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Traitement forcé du paiement via SSL (sans utilisation de 3-D Secure).
  • FORCE_FULL_TDS - Après l'authentification avec 3-D Secure le statut PaRes doit être seulement Y, ce qui garantit l'authentification réussie de l'utilisateur. Sinon la transaction n'aboutira pas.
  • FORCE_CREATE_BINDING - la transmission de cette valeur dans la requête de création de commande crée forcément une liaison. Cette fonctionnalité doit être activée au niveau du vendeur dans la passerelle. Cette valeur ne peut pas être transmise dans une requête avec un bindingId existant ou bindingNotNeeded = true (causera une erreur de validation). Quand cette fonction est transmise, le paramètre clientId doit également être transmis. Si dans le bloc features les deux valeurs FORCE_CREATE_BINDING et VERIFY sont transmises, alors la commande sera créée SEULEMENT pour créer une liaison (sans paiement).
  • PARTIAL_AUTHORIZATION - l'autorisation partielle est disponible pour la commande. Voir plus en détail ici.
  • FORCE_PAYMENT_WAY - traitement forcé du paiement par le moyen de paiement spécifié dans jsonParams dans le paramètre paymentWay. Pour effectuer de tels paiements le marchand doit avoir les autorisations correspondantes.
    À l'heure actuelle utilisé pour le traitement forcé du paiement MOTO. Pour cela il est nécessaire de transmettre également dans jsonParams le paramètre paymentWay avec la valeur CARD_MOTO.
FacultatifmarketplaceObjectBloc avec les paramètres de marketplace, c'est-à-dire du vendeur qui propose des biens ou services de différents vendeurs au détail (retailers).
Ce paramètre est utilisé si une configuration spéciale est activée (contactez le service support). Voir paramètres imbriqués.
FacultatiftiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera exécuté par l'initiateur (Client ou Marchand). Valeurs possibles.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec les informations sur le facilitateur de paiement, c'est-à-dire sur le marchand qui permet à plusieurs sous-marchands d'accepter les paiements sous son compte.
Pour transmettre ce paramètre, une configuration spéciale doit être activée (contactez le support technique). Voir paramètres imbriqués.
ConditionneloriginalPaymentNetRefNumStringIdentifiant de la transaction originale ou précédente réussie dans le système de paiement par rapport à l'opération effectuée par liaison - TRN ID. Transmis si la valeur du paramètre tii = R,U ou F.
Obligatoire lors de l'utilisation des liaisons du marchand dans les transferts par liaison.
ConditionneloriginalPaymentDateStringDate de la transaction initiale. Valeur au format Unix timestamp en millisecondes. Transmise si la valeur du paramètre tii = R,U ou F.
FacultatifexternalScaExemptionIndicatorStringType d'exemption SCA (Strong Customer Authentication). Si ce paramètre est spécifié, la transaction sera traitée en fonction de vos paramètres dans la passerelle de paiement : soit une opération SSL forcée sera effectuée, soit la banque émettrice recevra des informations sur l'exemption SCA et prendra une décision de mener l'opération avec authentification 3DS ou sans elle (pour obtenir des informations détaillées, contactez notre service de support). Valeurs autorisées :
  • LVP – transaction de type Low Value Payments. La transaction peut être classée comme transactions à faible niveau de risque sur la base du montant de la transaction, du nombre de transactions du client par jour ou du montant quotidien total des paiements du client.
  • TRA – transaction de type Transaction Risk Analysis, c'est-à-dire transaction ayant passé avec succès la vérification antifraude.

Pour transmettre ce paramètre, vous devez avoir des droits suffisants dans la passerelle de paiement.
FacultatifthreeDSProtocolVersionStringVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la requête, alors pour l'autorisation 3D Secure, la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
ConditionnelemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de précommande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données du payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.
FacultatifclientBrowserInfoObjectBloc de données sur le navigateur du client, qui est envoyé à ACS lors de l'authentification 3DS. Ce bloc peut être transmis uniquement si un paramètre spécial est activé (contactez l'équipe de support). Voir paramètres imbriqués.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Valeurs possibles tii (Pour en savoir plus sur les types de liaisons pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour transactionSauvegarde des données de carte après transactionRemarque
VideOrdinaireAcheteurSaisie par l'acheteurNonTransaction de commerce électronique sans sauvegarde de liaison.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison. Cette valeur ne peut être transmise qu'en présence de l'autorisation "Création autorisée de liaisons vendor pays common".
RIInitiateur - Récurrentes (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.

Paramètres supplémentaires définissant le type de liaison créée et transmis dans additionalParameters :

ObligatoireNomTypeDescription
ConditioninstallmentsInteger [3]Nombre maximum d'autorisations autorisées pour les paiements en plusieurs fois.
Spécifié lors de la création d'une liaison pour effectuer des paiements en plusieurs fois.
ConditionrecurringFrequencyInteger [2]Nombre minimum de jours entre les autorisations. Nombre entier positif de 1 à 28 inclus.
Spécifié en cas de création d'une liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création d'une liaison pour l'exécution de paiements en plusieurs fois lors de l'activation de 3DS2.
ConditionrecurringExpiryString [8]Date après laquelle les autorisations ultérieures ne doivent pas être exécutées. Format : YYYYMMDD.
Indiqué en cas de création de liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création de liaison pour l'exécution de paiements à tempérament avec 3DS2 activé.

Ci-dessous sont présentés les paramètres du bloc clientBrowserInfo (données sur le navigateur du client).

ObligatoireNomTypeDescription
FacultatifuserAgentString [1..2048]Agent du navigateur.
FacultatifOSStringSystème d'exploitation.
FacultatifOSVersionStringVersion du système d'exploitation.
FacultatifbrowserAcceptHeaderString [1..2048]En-tête Accept, qui informe le serveur des formats (ou types MIME) pris en charge par le navigateur.
FacultatifbrowserIpAddressString [1..45]Adresse IP du navigateur.
FacultatifbrowserLanguageString [1..8]Langue du navigateur.
FacultatifbrowserTimeZoneStringFuseau horaire du navigateur.
FacultatifbrowserTimeZoneOffsetString [1..5]Décalage du fuseau horaire en minutes entre l'heure locale de l'utilisateur et UTC.
FacultatifcolorDepthString [1..2]Profondeur de couleur de l'écran, en bits.
FacultatiffingerprintStringEmpreinte du navigateur - identifiant numérique unique du navigateur.
FacultatifisMobileBooleanValeurs possibles : true ou false. Indicateur signalant qu'un appareil mobile est utilisé.
FacultatifjavaEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge java est activée dans le navigateur.
FacultatifjavascriptEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge javascript est activée dans le navigateur.
FacultatifpluginsStringListe des plugins utilisés dans le navigateur, séparés par des virgules.
FacultatifscreenHeightInteger [1..6]Hauteur de l'écran en pixels.
FacultatifscreenWidthInteger [1..6]Largeur de l'écran en pixels.
FacultatifscreenPrintStringDonnées sur les paramètres d'impression du navigateur, incluant la résolution, la profondeur de couleur, la densité de pixels.

Exemple du bloc clientBrowserInfo :

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Si 3DS2 est utilisé, il est nécessaire de transmettre également les paramètres suivants :

ObligatoireNomTypeDescription
ConditionnelthreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
FacultatifthreeDSVer2FinishUrlString [1..512]URL vers laquelle le client doit être redirigé après l'authentification sur le serveur ACS.
FacultatifthreeDSSDKBooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient du 3DS SDK.
FacultatifthreeDSMethodNotificationUrlString [1..512]URL pour l'envoi de la notification de passage de la vérification sur ACS.

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoiresuccessBooleanParamètre principal qui indique que la demande a été traitée avec succès. Les valeurs suivantes sont disponibles :
  • true - demande traitée avec succès ;
  • false - demande échouée.

Notez que la valeur true signifie que la demande a été traitée, et non que la commande a été payée.
Des informations plus détaillées sur la façon de savoir si le paiement a réussi ou non sont disponibles ici.
Obligatoire*dataObjectRetourné uniquement en cas de paiement réussi.
Obligatoire*errorObjectCe paramètre n'est retourné qu'en cas d'erreur de paiement.

Le bloc data contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
Seulement si l'authentification supplémentaire sur ACS de la banque émettrice est utiliséetermUrlString [1..512]En cas de réponse réussie lors du paiement 3D-Secure. Il s'agit de l'URL vers laquelle l'ACS redirige le porteur de carte après authentification. Pour plus de détails, voir Redirection vers ACS.
Seulement si l'authentification supplémentaire sur ACS de la banque émettrice est utiliséeacsUrlString [1..512]URL pour la redirection vers ACS. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Pour plus de détails, voir Redirection vers ACS.
Seulement si l'authentification supplémentaire sur ACS de la banque émettrice est utiliséepaReqString [1..255]PAReq (Payment Authentication Request) — message qui doit être envoyé à ACS avec la redirection. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est nécessaire. Ce message contient des données en encodage Base64, nécessaires pour l'authentification du porteur de carte. Pour plus de détails, voir Redirection vers ACS.
Paramètre retourné si les données de paiement enregistrées sont utiliséesbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
FacultatifdetokenizedPanRepresentationString [1..19]Numéro de carte détokenisé (4 derniers chiffres ou sous forme masquée).
FacultatifdetokenizedPanExpiryDateStringDate d'expiration de la carte détokénisée au format suivant : YYYYMM.

Le bloc data peut encore inclure l'élément payerData, qui contient les paramètres suivants.

ObligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Si le protocole 3DS2 est utilisé, la réponse à la requête inclut également les paramètres suivants dans le bloc data :

ObligatoireNomTypeDescription
Obligatoireis3DSVer2BooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient de 3DS2.
ObligatoirethreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
FacultatifthreeDSMethodUrlString [1..512]URL du serveur ACS pour la collecte des données du navigateur.
FacultatifthreeDSMethodUrlServerString [1..512]URL du serveur 3DS pour collecter les données du navigateur qui seront incluses dans AReq (Authentication Request) du serveur 3DS vers le serveur ACS.
FacultatifthreeDSMethodDataPackedString [1..1024]Données CReq (Challenge Response) en encodage Base-64 pour l'envoi au serveur ACS.
FacultatifthreeDSMethodURLServerDirectString [1..512]Adresse URL 3dsmethod.do pour l'exécution de la méthode 3DS sur le serveur 3DS via la passerelle de paiement (en présence de l'autorisation correspondante au niveau du vendeur).

Paramètres dans le bloc error :

ObligatoireNomTypeDescription
ObligatoirecodeString [1..3]Code comme paramètre informatif, signalant une erreur.
ObligatoiremessageString [1..512]Paramètre informatif constituant la description de l'erreur pour l'affichage à l'utilisateur. Le paramètre peut varier, il ne faut donc pas se référer explicitement à ses valeurs dans le code.
ObligatoiredescriptionString [1..598]Explication technique détaillée de l'erreur - le contenu de ce paramètre n'est pas destiné à être affiché à l'utilisateur.

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/payment/google/paymentDirect.do \
--header 'Content-Type: application/json' \
--data-raw '{
  "amount": "1000",
  "orderNumber": "350467565",
  "features": [""],
  "language": "EN",
  "password": "test_user_password",
  "paymentToken": "eyJnYXRldTWVY2hRJ...b25ZZWFyyMD0fX0=",
  "preAuth": true,
  "returnUrl": "https://mybestmerchantreturnurl.com",
  "username": "test_user"
}'

Exemple de réponse

{
  "success": true,
  "data": {
    "orderId": "12312312123"
  }
}

Enregistrement de commande Samsung Pay

Pour l'enregistrement et le paiement de commande Samsung Pay, la requête https://dev.bpcbt.com/payment/samsung/payment.do est utilisée. Voir "Coordonnées de connexion". Cette requête est utilisée uniquement lors du paiement depuis l'application mobile.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Ci-dessous est présenté un exemple de requête de paiement via Samsung Pay.

Paramètres de requête

ObligatoireNomTypeDescription
ObligatoiremerchantString [1..255]Pour enregistrer et payer une commande au nom d'un autre marchand, spécifiez son identifiant (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de visualiser les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifadditionalParametersObjectParamètres supplémentaires de la commande, qui sont stockés dans l'espace personnel du vendeur pour consultation ultérieure. Chaque nouvelle paire de nom de paramètre et sa valeur doit être séparée par une virgule. Ci-dessous un exemple d'utilisation.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
Lors de la création d'une liaison dans cette balise, des paramètres peuvent être transmis définissant le type de liaison créée. Voir liste des paramètres.
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatiftiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération l'initiateur (Client ou Marchand) va exécuter. Valeurs possibles.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec les informations sur le facilitateur de paiement, c'est-à-dire le marchand qui permet à plusieurs sous-marchands d'accepter les paiements sous son compte.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
ObligatoirepaymentTokenString [1..8192]Contenu du paramètre 3ds.data de la réponse reçue de Samsung Pay.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatifcurrencyCodeString [3]Code numérique de la devise de paiement ISO 4217. Si non spécifié, la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatiffeaturesStringFonctions de commande. Pour spécifier plusieurs fonctions, utilisez ce paramètre plusieurs fois dans une seule requête. Voici les valeurs possibles.
  • VERIFY - si cette valeur est transmise dans la requête de création de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la requête, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lire plus en détail ici.
  • FORCE_TDS - Traitement forcé du paiement en utilisant 3-D Secure. Si la carte ne supporte pas 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Traitement forcé du paiement via SSL (sans utilisation de 3-D Secure).
  • FORCE_FULL_TDS - Après l'authentification avec 3-D Secure le statut PaRes doit être seulement Y, ce qui garantit l'authentification réussie de l'utilisateur. Sinon la transaction n'aboutira pas.
  • FORCE_CREATE_BINDING - la transmission de cette valeur dans la requête de création de commande crée forcément une liaison. Cette fonctionnalité doit être activée au niveau du vendeur dans la passerelle. Cette valeur ne peut pas être transmise dans une requête avec un bindingId existant ou bindingNotNeeded = true (causera une erreur de validation). Quand cette fonction est transmise, le paramètre clientId doit également être transmis. Si dans le bloc features les deux valeurs FORCE_CREATE_BINDING et VERIFY sont transmises, alors la commande sera créée SEULEMENT pour créer une liaison (sans paiement).
  • PARTIAL_AUTHORIZATION - l'autorisation partielle est disponible pour la commande. Voir plus en détail ici.
  • FORCE_PAYMENT_WAY - traitement forcé du paiement par le moyen de paiement spécifié dans jsonParams dans le paramètre paymentWay. Pour effectuer de tels paiements le marchand doit avoir les autorisations correspondantes.
    À l'heure actuelle utilisé pour le traitement forcé du paiement MOTO. Pour cela il est nécessaire de transmettre également dans jsonParams le paramètre paymentWay avec la valeur CARD_MOTO.
FacultatifthreeDSProtocolVersionStringVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la requête, alors pour l'autorisation 3D Secure, la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
FacultatifmarketplaceObjectBloc avec les paramètres de la marketplace, c'est-à-dire le vendeur qui propose des biens ou services de différents détaillants.
Ce paramètre est utilisé si un paramétrage spécial est activé (contactez le service support). Voir paramètres imbriqués.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de précommande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.

Valeurs possibles tii (Pour en savoir plus sur les types de liaisons pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour transactionSauvegarde des données de carte après transactionRemarque
VideOrdinaireAcheteurSaisie par l'acheteurNonTransaction de commerce électronique sans sauvegarde de liaison.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison. Cette valeur ne peut être transmise qu'en présence de l'autorisation "Création autorisée de liaisons vendor pays common".
RIInitiateur - Récurrentes (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.

Paramètres supplémentaires définissant le type de liaison créée et transmis dans additionalParameters :

ObligatoireNomTypeDescription
ConditioninstallmentsInteger [3]Nombre maximum d'autorisations autorisées pour les paiements en plusieurs fois.
Spécifié lors de la création d'une liaison pour effectuer des paiements en plusieurs fois.
ConditionrecurringFrequencyInteger [2]Nombre minimum de jours entre les autorisations. Nombre entier positif de 1 à 28 inclus.
Spécifié en cas de création d'une liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création d'une liaison pour l'exécution de paiements en plusieurs fois lors de l'activation de 3DS2.
ConditionrecurringExpiryString [8]Date après laquelle les autorisations ultérieures ne doivent pas être exécutées. Format : YYYYMMDD.
Indiqué en cas de création de liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création de liaison pour l'exécution de paiements à tempérament avec 3DS2 activé.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoiresuccessBooleanParamètre principal qui indique que la demande a été traitée avec succès. Les valeurs suivantes sont disponibles :
  • true - demande traitée avec succès ;
  • false - demande échouée.

Notez que la valeur true signifie que la demande a été traitée, et non que la commande a été payée.
Des informations plus détaillées sur la façon de savoir si le paiement a réussi ou non sont disponibles ici.
ConditiondataObjectCe paramètre est retourné uniquement en cas de traitement réussi du paiement. Voir description ci-dessous.
ConditionerrorObjectCe paramètre est retourné uniquement en cas d'erreur de paiement. Voir description ci-dessous.

Le bloc data contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
OptionaldetokenizedPanRepresentationString [1..19]Numéro de carte détokenisé (4 derniers chiffres ou sous forme masquée).
OptionaldetokenizedPanExpiryDateStringDate d'expiration de la carte détokénisée au format suivant : YYYYMM.

Le bloc data peut encore inclure l'élément payerData, qui contient les paramètres suivants.

ObligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Le bloc error contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoirecodeString [1..3]Code comme paramètre informatif, signalant une erreur.
ObligatoiremessageString [1..512]Paramètre informatif constituant la description de l'erreur pour l'affichage à l'utilisateur. Le paramètre peut varier, il ne faut donc pas se référer explicitement à ses valeurs dans le code.
ObligatoiredescriptionString [1..598]Explication technique détaillée de l'erreur - le contenu de ce paramètre n'est pas destiné à être affiché à l'utilisateur.

Exemples

Exemple de requête

curl --location --request POST 'https://dev.bpcbt.com/payment/samsung/payment.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "merchant": "sandbox_merchant_test",
    "orderNumber": "1218637308",
    "language": "en",
    "preAuth": true,
    "description": "Test description",
    "additionalParameters": {
        "firstParamName": "firstParamValue",
        "secondParamName": "secondParamValue"
    },
    "paymentToken": "ew0KICB7DQoJICA...0KICB9DQp9",
    "ip": "x.x.x.x"
}'

Réponse en cas de paiement réussi

{
"success":true,
"data": {
    "orderId": "12312312123"
  }
}

Réponse en cas de paiement échoué

{
  "error": {
    "code": 1,
    "description": "Processing Error",
    "message": "Not enough money"
  },
  "success": false
}

Samsung Pay Direct

Requête utilisée pour effectuer un paiement direct via Samsung Pay - https://dev.bpcbt.com/payment/samsung/paymentDirect.do. Elle est utilisée pour enregistrer et payer une commande.

Cette requête peut être utilisée pour les intégrations qui prévoient le déchiffrement des données de paiement du côté du marchand.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de la requête

Caractère obligatoireNomTypeDescription
ObligatoiremerchantString [1..255]Pour enregistrer et payer une commande au nom d'un autre marchand, spécifiez son identifiant (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de visualiser les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatiffeeInputInteger [0..8]Taille de la commission en unités minimales de la devise. La fonctionnalité doit être activée au niveau du vendeur dans la passerelle.
FacultatifadditionalParametersObjectParamètres supplémentaires de la commande, qui sont stockés dans l'espace personnel du vendeur pour consultation ultérieure. Chaque nouvelle paire de nom de paramètre et de sa valeur doit être séparée par une virgule. Ci-dessous un exemple d'utilisation.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
Lors de la création d'une liaison dans cette balise, des paramètres peuvent être transmis définissant le type de liaison créée. Voir liste des paramètres.
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
ObligatoirepaymentTokenString [1..8192]Jeton obtenu de Samsung Pay et encodé en Base64. Example:
{"amount": "100", "currency_code": "USD", "utc": "1490687350988", "eci_indicator": "07", "tokenPAN": "5599014702854883", "tokenPanExpiration": "0420", "cryptogram": "ACF9prZs2wsTAAGysReaAoACFA=="}
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatiftiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera effectuée par l'initiateur (Client ou Marchand). Valeurs possibles.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec des informations sur le facilitateur de paiement, c'est-à-dire sur le marchand qui permet à plusieurs sous-marchands d'accepter des paiements sous son compte.
Pour transmettre ce paramètre, un réglage spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
ConditionoriginalPaymentNetRefNumStringIdentifiant de la transaction originale ou précédente réussie dans le système de paiement par rapport à l'opération effectuée par liaison - TRN ID. Transmis si la valeur du paramètre tii = R,U ou F.
Obligatoire lors de l'utilisation des liaisons du marchand dans les transferts par liaison.
ConditionoriginalPaymentDateStringDate de la transaction initiale. Valeur au format Unix timestamp en millisecondes. Transmise si la valeur du paramètre tii = R,U ou F.
FacultatifthreeDSProtocolVersionStringVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la requête, alors pour l'autorisation 3D Secure, la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
FacultatifexternalScaExemptionIndicatorStringType d'exemption SCA (Strong Customer Authentication). Si ce paramètre est spécifié, la transaction sera traitée en fonction de vos paramètres dans la passerelle de paiement : soit une opération SSL forcée sera effectuée, soit la banque émettrice recevra des informations sur l'exemption SCA et prendra une décision de mener l'opération avec authentification 3DS ou sans elle (pour obtenir des informations détaillées, contactez notre service de support). Valeurs autorisées :
  • LVP – transaction de type Low Value Payments. La transaction peut être classée comme transactions à faible niveau de risque sur la base du montant de la transaction, du nombre de transactions du client par jour ou du montant quotidien total des paiements du client.
  • TRA – transaction de type Transaction Risk Analysis, c'est-à-dire transaction ayant passé avec succès la vérification antifraude.

Pour transmettre ce paramètre, vous devez avoir des droits suffisants dans la passerelle de paiement.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de pré-commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Valeurs possibles tii (Pour en savoir plus sur les types de liaisons pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour transactionSauvegarde des données de carte après transactionRemarque
VideOrdinaireAcheteurSaisie par l'acheteurNonTransaction de commerce électronique sans sauvegarde de liaison.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison. Cette valeur ne peut être transmise qu'en présence de l'autorisation "Création autorisée de liaisons vendor pays common".
RIInitiateur - Récurrentes (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisie par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de liaison.

Paramètres supplémentaires définissant le type de liaison créée et transmis dans additionalParameters :

ObligatoireNomTypeDescription
ConditioninstallmentsInteger [3]Nombre maximum d'autorisations autorisées pour les paiements en plusieurs fois.
Spécifié lors de la création d'une liaison pour effectuer des paiements en plusieurs fois.
ConditionrecurringFrequencyInteger [2]Nombre minimum de jours entre les autorisations. Nombre entier positif de 1 à 28 inclus.
Spécifié en cas de création d'une liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création d'une liaison pour l'exécution de paiements en plusieurs fois lors de l'activation de 3DS2.
ConditionrecurringExpiryString [8]Date après laquelle les autorisations ultérieures ne doivent pas être exécutées. Format : YYYYMMDD.
Indiqué en cas de création de liaison pour l'exécution de paiements récurrents.
Obligatoire à transmettre en cas de création de liaison pour l'exécution de paiements à tempérament avec 3DS2 activé.

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Paramètres de la réponse

Caractère obligatoireNomTypeDescription
ObligatoiresuccessBooleanParamètre principal qui indique que la demande a été traitée avec succès. Les valeurs suivantes sont disponibles :
  • true - demande traitée avec succès ;
  • false - demande échouée.

Notez que la valeur true signifie que la demande a été traitée, et non que la commande a été payée.
Des informations plus détaillées sur la façon de savoir si le paiement a réussi ou non sont disponibles ici.
Obligatoire*dataObjectRetourné uniquement en cas de paiement réussi.
Obligatoire*errorObjectCe paramètre n'est retourné qu'en cas d'erreur de paiement.

Le bloc data contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
Le paramètre est renvoyé si des liaisons sont utiliséesbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
FacultatifdetokenizedPanRepresentationString [1..19]Numéro de carte détokenisé (4 derniers chiffres ou sous forme masquée).
FacultatifdetokenizedPanExpiryDateStringDate d'expiration de la carte détokénisée au format suivant : YYYYMM.

Le bloc data peut également inclure l'élément payerData, qui contient les paramètres suivants.

ObligatoireNomTypeDescription
OptionnelpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Paramètres dans le bloc error :

ObligatoireNomTypeDescription
ObligatoirecodeString [1..3]Code comme paramètre informatif, signalant une erreur.
ObligatoiremessageString [1..512]Paramètre informatif constituant la description de l'erreur pour l'affichage à l'utilisateur. Le paramètre peut varier, il ne faut donc pas se référer explicitement à ses valeurs dans le code.
ObligatoiredescriptionString [1..598]Explication technique détaillée de l'erreur - le contenu de ce paramètre n'est pas destiné à être affiché à l'utilisateur.

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/payment/samsung/paymentDirect.do \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant": "OurBestMerchantLogin",
"orderNumber": "UAF-203974-DE",
"language": "EN",
"preAuth": true,
"description" : "Test description",
"additionalParameters":
{
"firstParamName": "firstParamValue",
"secondParamName": "secondParamValue"
},
"paymentToken": "ew0KICB7DQoJICA...0KICB9DQp9",
"ip" : "127.0.0.1"
}'

Exemples de réponse - paiement réussi

{
  "success": true,
  "data": {
    "orderId": "12312312123"
  }
}

Exemple de réponse - erreur de paiement

{
  "error": {
    "code": 1,
    "description": "Processing Error",
    "message": "Insufficint amount on card"
  },
  "success": false
}

Paiement tokenisé

Requête de paiement universelle pour les méthodes de paiement tokenisées – https://dev.bpcbt.com/payment/token/payment.do.

Cette requête ne peut être utilisée que si vous avez une autorisation spéciale dans la passerelle de paiement. Contactez le service de support technique pour plus de détails.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de requête

Caractère obligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
FacultatifmerchantString [1..255]Pour enregistrer et payer une commande au nom d'un autre marchand, spécifiez son identifiant (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de visualiser les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
ObligatoiretokenTypeStringValeurs possibles :
  • MDES;
  • VTS;
  • APPLE;
  • GOOGLE;
  • SAMSUNG.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatiforderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
ConditionorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement. Doit être transmis dans la demande de paiement répétée (après l'exécution de 3DS-method).
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
FacultatifpaymentFacilitatorObjectBloc avec des informations sur le facilitateur de paiement, c'est-à-dire sur le marchand qui permet à plusieurs sous-marchands d'accepter des paiements sous son compte.
Pour transmettre ce paramètre, un paramètre spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
ConditioncvcString [3]La transmission du paramètre est déterminée par le type de paiement :
  • la transmission cvc n'est pas prévue pour tous les paiements tokenisés ;
  • la transmission cvc n'est pas prévue pour les paiements MIT ;
  • la transmission cvc est obligatoire par défaut pour tous les autres types de paiements ; mais si l'autorisation Peut effectuer le paiement sans confirmation CVC est sélectionnée pour le marchand, alors dans ce cas la transmission cvc devient facultative.

Seuls les chiffres sont autorisés.
FacultatifcardHolderNameString [1..26]Nom du titulaire de la carte en lettres latines. Ce paramètre n'est transmis qu'après le paiement de la commande.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
ObligatoirereturnUrlString [1..512]Adresse vers laquelle l'utilisateur doit être redirigé en cas de paiement réussi. L'adresse doit être spécifiée complètement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatiffailUrlString [1..512]Adresse vers laquelle il faut rediriger l'utilisateur en cas de paiement échoué. L'adresse doit être spécifiée entièrement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatifjsonParamsObjectBalise supplémentaire avec des attributs pour transmettre des paramètres supplémentaires. Voir ci-dessous.
FacultatiffeaturesStringFonctions de la commande. Les valeurs possibles sont listées ci-dessous.
  • VERIFY - si cette valeur est transmise dans la demande de finalisation de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la demande, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Après un enregistrement réussi, la commande passe immédiatement au statut REVERSED (annulée). Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lisez plus en détail ici.
  • FORCE_TDS - Conduite forcée du paiement en utilisant 3-D Secure. Si la carte ne prend pas en charge 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Conduite forcée du paiement via SSL (sans utiliser 3-D Secure).
  • FORCE_FULL_TDS - Après avoir effectué l'authentification à l'aide de 3-D Secure, le statut PaRes doit être seulement Y, ce qui garantit une authentification réussie de l'utilisateur. Dans le cas contraire, la transaction n'aboutira pas.
FacultatifdynamicCallbackUrlString [1..512]Paramètre pour transmettre l'adresse dynamique pour recevoir les notifications callback "de paiement" pour la commande, activées pour le marchand (autorisation réussie, débit réussi, remboursement, annulation, rejet du paiement par timeout, rejet du paiement card present).
Les notifications callback "non liées au paiement" (activation/désactivation de liaison, création de liaison), seront envoyées à l'adresse callback statique.
FacultatiftiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera exécuté par l'initiateur (Client ou Marchand). Valeurs possibles
ConditionoriginalSchemeTransactionIdString [1..22]Identifiant de la transaction originale réussie dans Mastercard.
Obligatoire lors de l'utilisation des données de paiement sauvegardées du marchand dans les virements par données de paiement sauvegardées.
FacultatifexternalScaExemptionIndicatorStringType d'exemption SCA (Strong Customer Authentication). Si ce paramètre est spécifié, la transaction sera traitée en fonction de vos paramètres dans la passerelle de paiement : soit une opération SSL forcée sera effectuée, soit la banque émettrice recevra des informations sur l'exemption SCA et prendra une décision de mener l'opération avec authentification 3DS ou sans elle (pour obtenir des informations détaillées, contactez notre service de support). Valeurs autorisées :
  • LVP – transaction de type Low Value Payments. La transaction peut être classée comme transactions à faible niveau de risque sur la base du montant de la transaction, du nombre de transactions du client par jour ou du montant quotidien total des paiements du client.
  • TRA – transaction de type Transaction Risk Analysis, c'est-à-dire transaction ayant passé avec succès la vérification antifraude.

Pour transmettre ce paramètre, vous devez avoir des droits suffisants dans la passerelle de paiement.
FacultatiforiginalPaymentNetRefNumStringIdentifiant de la transaction originale ou précédente réussie dans le système de paiement par rapport à l'opération effectuée par liaison - TRN ID. Transmis si la valeur du paramètre tii = R,U ou F.
Obligatoire lors de l'utilisation des liaisons du marchand dans les transferts par liaison.
FacultatifmarketplaceObjectBloc avec des paramètres de marketplace, c'est-à-dire un vendeur qui propose des produits ou services de différents détaillants.
Ce paramètre est utilisé si un paramètre spécial est activé (contactez le service de support). Voir [paramètres imbriqués].
FacultatifthreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
FacultatifthreeDSVer2FinishUrlString [1..512]URL vers laquelle le client doit être redirigé après l'authentification sur le serveur ACS.
FacultatifthreeDSMethodNotificationUrlString [1..512]URL pour l'envoi de la notification de passage de la vérification sur ACS.
ObligatoirepaymentDataobjectContient les informations de paiement reçues du service de tokenisation. Voir paramètres inclus
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de précommande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.
FacultatifclientBrowserInfoObjectBloc de données sur le navigateur du client, qui est envoyé à ACS lors de l'authentification 3DS. Ce bloc ne peut être transmis que si un paramètre spécial est activé (contactez l'équipe de support). Voir paramètres imbriqués.

Le bloc jsonParams contient les champs d'informations supplémentaires pour le stockage ultérieur. Pour transmettre N paramètres, la requête doit contenir N balises jsonParams, où l'attribut name contient le nom, et l'attribut value contient la valeur (voir le tableau ci-dessous).

ObligatoireNomTypeDescription
ObligatoirenameString [1..255]Nom du paramètre supplémentaire.
ObligatoirevalueString [1..1024]Valeur du paramètre supplémentaire - jusqu'à 1024 caractères.

Ci-dessous sont énumérés les paramètres du bloc paymentData

ObligatoireNomTypeDescription
ObligatoiredpanString [1..19]Numéro de jeton.
ConditiontokenCryptogramString [1..1024]Cryptogramme obtenu du service de tokenisation. Dans certains cas, le paramètre peut être absent (par exemple, pour les transactions MIT VTS).
ObligatoireMMInteger [2]Mois d'expiration du jeton.
ObligatoireYYYYInteger [4]Année d'expiration du jeton.
FacultatifeciInteger [1..4]Indicateur de commerce électronique. Spécifié uniquement après le paiement de la commande et en cas de présence de l'autorisation correspondante. Ci-dessous se trouve le décodage des codes ECI.
  • ECI=01 ou ECI=06 - le marchand prend en charge 3-D Secure, la carte de paiement ne prend pas en charge 3-D Secure, le paiement est traité sur la base du code CVV2/CVC.
  • ECI=02 ou ECI=05 - le marchand et la carte de paiement prennent en charge 3-D Secure ;
  • ECI=07 - le marchand ne prend pas en charge 3-D Secure, le paiement est traité sur la base du code CVV2/CVC.

Valeurs possibles de tii (Pour en savoir plus sur les types de données de paiement sauvegardées pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour la transactionSauvegarde des données de carte après la transactionRemarque
VideOrdinaireAcheteurSaisi par l'acheteurNonTransaction de commerce électronique sans sauvegarde de données de paiement sauvegardées.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
FPaiement non planifié (CIT)UltérieureAcheteurLe client choisit la carte au lieu de la saisie manuelleNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées.
UPaiement non planifié (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées. Utilisé uniquement pour les paiements en une étape.
RIInitiateur - Récurrents (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
RPaiement récurrent (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération récurrente utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
IPaiement échelonné (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération d'échelonnement utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Ci-dessous sont présentés les paramètres du bloc clientBrowserInfo (données sur le navigateur du client).

ObligatoireNomTypeDescription
FacultatifuserAgentString [1..2048]Agent du navigateur.
FacultatifOSStringSystème d'exploitation.
FacultatifOSVersionStringVersion du système d'exploitation.
FacultatifbrowserAcceptHeaderString [1..2048]En-tête Accept, qui informe le serveur des formats (ou types MIME) pris en charge par le navigateur.
FacultatifbrowserIpAddressString [1..45]Adresse IP du navigateur.
FacultatifbrowserLanguageString [1..8]Langue du navigateur.
FacultatifbrowserTimeZoneStringFuseau horaire du navigateur.
FacultatifbrowserTimeZoneOffsetString [1..5]Décalage du fuseau horaire en minutes entre l'heure locale de l'utilisateur et UTC.
FacultatifcolorDepthString [1..2]Profondeur de couleur de l'écran, en bits.
FacultatiffingerprintStringEmpreinte du navigateur - identifiant numérique unique du navigateur.
FacultatifisMobileBooleanValeurs possibles : true ou false. Indicateur signalant qu'un appareil mobile est utilisé.
FacultatifjavaEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge java est activée dans le navigateur.
FacultatifjavascriptEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge javascript est activée dans le navigateur.
FacultatifpluginsStringListe des plugins utilisés dans le navigateur, séparés par des virgules.
FacultatifscreenHeightInteger [1..6]Hauteur de l'écran en pixels.
FacultatifscreenWidthInteger [1..6]Largeur de l'écran en pixels.
FacultatifscreenPrintStringDonnées sur les paramètres d'impression du navigateur, incluant la résolution, la profondeur de couleur, la densité de pixels.

Exemple du bloc clientBrowserInfo :

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Paramètres de réponse

Caractère obligatoireNomTypeDescription
ObligatoiresuccessBooleanParamètre principal qui indique que la demande a été traitée avec succès. Les valeurs suivantes sont disponibles :
  • true - demande traitée avec succès ;
  • false - demande échouée.

Notez que la valeur true signifie que la demande a été traitée, et non que la commande a été payée.
Des informations plus détaillées sur la façon de savoir si le paiement a réussi ou non sont disponibles ici.
ConditiondataObjectCe paramètre est retourné uniquement en cas de traitement réussi du paiement. Voir description ci-dessous.
ConditionerrorObjectCe paramètre est retourné uniquement en cas d'erreur de paiement. Voir description ci-dessous.
ConditionorderStatusObjectContient les paramètres de statut de la commande et est retourné uniquement dans le cas où la passerelle de paiement a reconnu tous les paramètres de requête comme corrects. Voir description ci-dessous.

Le bloc data contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
FacultatiftermUrlString [1..512]En cas de réponse réussie lors du paiement 3D-Secure. Il s'agit de l'URL vers laquelle l'ACS redirige le porteur de carte après authentification. Pour plus de détails, voir Redirection vers ACS.
FacultatifacsUrlString [1..512]URL pour la redirection vers ACS. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Pour plus de détails, voir Redirection vers ACS.
FacultatifpaReqString [1..255]PAReq (Payment Authentication Request) — message qui doit être envoyé à ACS avec la redirection. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est nécessaire. Ce message contient des données en encodage Base64, nécessaires pour l'authentification du porteur de carte. Pour plus de détails, voir Redirection vers ACS.

Si le protocole 3DS2 est utilisé, la réponse à la requête inclut également les paramètres suivants dans le bloc data :

Caractère obligatoireNomTypeDescription
Obligatoireis3DSVer2BooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient de 3DS2.
ObligatoirethreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
FacultatifthreeDSMethodUrlString [1..512]URL du serveur ACS pour la collecte des données du navigateur.
ObligatoirethreeDSMethodUrlServerString [1..512]URL du serveur 3DS pour collecter les données du navigateur qui seront incluses dans AReq (Authentication Request) du serveur 3DS vers le serveur ACS.
FacultatifthreeDSMethodDataPackedString [1..1024]Données CReq (Challenge Response) en encodage Base-64 pour l'envoi au serveur ACS.
FacultatifthreeDSMethodURLServerDirectString [1..512]Adresse URL 3dsmethod.do pour l'exécution de la méthode 3DS sur le serveur 3DS via la passerelle de paiement (en présence de l'autorisation correspondante au niveau du vendeur).
FacultatifpackedCReqStringDonnées challenge request empaquetées. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Cette valeur doit être utilisée comme valeur du paramètre creq du lien vers ACS (acsUrl), pour rediriger le client vers ACS. Pour plus de détails, voir Redirection vers ACS.
FacultatifthreeDSSDKKeyStringClé de chiffrement des données de l'appareil. Le paramètre est obligatoire pour le SDK.
FacultatifthreeDSAcsTransactionIdStringIdentifiant de transaction 3DS dans ACS. Le paramètre est obligatoire pour le SDK.
FacultatifthreeDSAcsRefNumberStringNuméro de référence sur ACS.
FacultatifthreeDSAcsSignedContentStringContenu signé pour le SDK, le contenu inclut l'adresse URL ACS. Le paramètre est obligatoire pour le SDK.
FacultatifthreeDSDsTransIDStringIdentifiant unique de la transaction à l'intérieur du MPS. Le paramètre est obligatoire pour le SDK.

Le bloc error contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoirecodeString [1..3]Code comme paramètre informatif, signalant une erreur.
ObligatoiremessageString [1..512]Paramètre informatif constituant la description de l'erreur pour l'affichage à l'utilisateur. Le paramètre peut varier, il ne faut donc pas se référer explicitement à ses valeurs dans le code.
ObligatoiredescriptionString [1..598]Explication technique détaillée de l'erreur - le contenu de ce paramètre n'est pas destiné à être affiché à l'utilisateur.

Le bloc orderStatus contient les éléments suivants.

Caractère obligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre ErrorMessage.
Peut être absent si le résultat n'a pas causé d'erreurs.
FacultatiferrorMessageString [1..512]Paramètre informatif qui est une description de l'erreur en cas d'occurrence d'erreur. La valeur ErrorMessage peut varier, par conséquent il ne faut pas faire explicitement référence à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatiforderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque marchand.
FacultatiforderStatusIntegerLa valeur de ce paramètre indique le statut de la commande dans la passerelle de paiement. Absent si la commande n'a pas été trouvée. Voici la liste des valeurs disponibles :
  • 0 - commande enregistrée mais non payée ;
  • 1 - Montant pré-autorisé bloqué (pour les paiements en deux étapes) ;
  • 2 - autorisation complète du montant de la commande effectuée ;
  • 3 - autorisation annulée ;
  • 4 - opération de remboursement effectuée sur la transaction ;
  • 5 - autorisation initiée via ACS de la banque émettrice ;
  • 6 - autorisation refusée.
  • 7 - attente de paiement de la commande ;
  • 8 - finalisation intermédiaire pour finalisation partielle multiple.
FacultatifactionCodeStringCode de réponse du traitement de la banque. Contient une valeur numérique. Voir la liste des codes de réponse ici.
FacultatifactionCodeDescriptionString [1..512]Description de actionCode, retournée par le système de traitement de la banque.
FacultatiforiginalActionCodeString [1..15]Code de réponse reçu du processing. Pour activer la réception de ce champ, contactez le service de support technique.
FacultatifamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifdateIntegerDate d'enregistrement de la commande comme nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
ConditioncardAuthInfoObjectInformations sur la carte de paiement de l'acheteur. Voir description ci-dessous.
FacultatifauthDateTimeIntegerDate et heure d'autorisation, affichées comme le nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
FacultatifterminalIdString [1..10]Identifiant du terminal dans le système qui traite le paiement.
FacultatifauthRefNumString [1..24]Numéro d'autorisation du paiement, qui lui est attribué lors de l'enregistrement du paiement.
FacultatifpaymentNetRefNumString [1..512]Original Network Reference Number - c'est un identifiant que le réseau de paiement (Mastercard, Visa, etc.) attribue lors de la réalisation de la première transaction (par exemple, un achat). Lors de l'exécution de l'opération inverse (remboursement, paiement répété), ce numéro :
  • est copié de la transaction originale
  • est transmis dans le champ Original Network Reference Number
  • permet au système de paiement de lier la nouvelle opération à l'opération initiale
Ce paramètre est présent dans la réponse uniquement si la requête getP2PStatus version 7 ou supérieure est utilisée.
ConditionpaymentAmountInfoObjectParamètre contenant des paramètres imbriqués avec des informations sur les montants de confirmation, de débit et de remboursement. Voir description ci-dessous.
ConditionbankInfoObjectContient le paramètre imbriqué bankCountryName. Voir description ci-dessous.
ConditionpayerDataObjectContient le paramètre imbriqué paymentAccountReference. Voir description ci-dessous.

Le bloc cardAuthInfo contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoireexpirationInteger [6]Date d'expiration de la carte au format suivant : YYYYMM.
ObligatoirecardholderNameString [1..26]Nom du porteur de carte en lettres latines. Caractères autorisés : lettres latines, point, espace.
ObligatoireapprovalCodeString [6]Code d'autorisation du système de paiement international. Ce champ a une longueur fixe (six caractères) et peut contenir des chiffres et des lettres latines.
ObligatoireauthCodeInteger [6]Paramètre obsolète (non utilisé). Sa valeur est toujours 2 indépendamment du statut de la commande et du code d'autorisation du système de traitement.
ObligatoirepanString [1..19]Numéro de carte de paiement
FacultatifdetokenizedPanRepresentationString [1..19]Numéro de carte détokenisé (4 derniers chiffres ou sous forme masquée).
FacultatifdetokenizedPanExpiryDateStringDate d'expiration de la carte détokénisée au format suivant : YYYYMM.

Le bloc paymentAmountInfo contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoirepaymentStateStringÉtat de la commande, le paramètre peut prendre les valeurs suivantes :
  • CREATED - commande créée (mais non payée) ;
  • APPROVED - commande approuvée (les fonds sur le compte de l'acheteur sont bloqués) ;
  • DEPOSITED - commande terminée (l'argent est débité du compte de l'acheteur) ;
  • DECLINED - commande rejetée ;
  • REVERSED - commande rejetée ;
  • REFUNDED - remboursement des fonds.
ObligatoireapprovedAmountInteger [0..12]Montant en unités minimales de devise (par exemple, en centimes) qui a été bloqué sur le compte de l'acheteur. Utilisé uniquement dans les paiements en deux étapes.
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
ObligatoiredepositedAmountInteger [1..12]Montant du débit en unités minimales de devise (par exemple, en centimes).
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
ObligatoirerefundedAmountInteger [1..12]Montant du remboursement dans les unités minimales de la devise.

Le bloc bankInfo contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoirebankCountryNameString [1..160]Pays de la banque émettrice.

Le bloc payerData contient les éléments suivants.

ObligatoireNomTypeDescription
ObligatoirepaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Exemples

Exemple de requête

curl --request POST \
--url  https://dev.bpcbt.com/payment/token/payment.do \
--header 'Content-Type: application/json' \
--data '{
    "username":"test_user",
    "password":"test_user_password",
    "merchant":"test_merch",
    "amount":"1000000",
    "tii":"CI",
    "clientId":"vtsTestClient",
    "tokenType":"VTS",
    "cvc":"123",
    "cardHolderName":"DOS TESTOS",
    "paymentData": {
        "dpan":"4572433771970368",
        "MM":"12",
        "YYYY":"2028",
        "tokenCryptogram":"Aetydhdjjdkfkndnd55gd="
    },
        "orderPayerData":{
            "mobilePhone":"+492115684962"
    },
    "returnUrl":"https://mybestmerchantreturnurl.com",
    "failUrl":"https://mybestmerchantfailurl.com",
    "dynamicCallbackUrl":"https://test.com/callback",
    "externalScaExemptionIndicator":"TRA",
    "jsonParams":{
        "email":"test@gmail.com"
    },
    "clientBrowserInfo": {
        "userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
        "fingerprint":850891523,
        "OS":"Windows",
        "OSVersion":"10",
        "isMobile":false,
        "screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
        "colorDepth":24,
        "screenHeight":"864",
        "screenWidth":"1536",
        "plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
        "javaEnabled":false,
        "javascriptEnabled":true,
        "browserLanguage":"en-US",
        "browserTimeZone":"Europe/London",
        "browserTimeZoneOffset":-180,
        "browserAcceptHeader":"*/*",
        "browserIpAddress":"10.99.50.37"
    },
}'

Exemple de réponse

{
  "success": true,
  "data": {
    "orderId": "2a2b97e0-7284-746a-998a-752f0a8246f8",
    "is3DSVer2": false
  },
  "orderStatus": {
    "errorCode": "0",
    "orderNumber": "9049",
    "orderStatus": 2,
    "actionCode": 0,
    "actionCodeDescription": "Request is processed successfully",
    "amount": 1000000,
    "currency": "978",
    "date": 1734729964138,
    "ip": "10.99.50.37",
    "cardAuthInfo": {
      "expiration": "202412",
      "cardholderName": "DOS TESTOS",
      "approvalCode": "123456",
      "authCode": 2,
      "pan": "4111111111111111"
    },
    "authDateTime": 1734729964273,
    "terminalId": "12346789",
    "authRefNum": "111111111111",
    "paymentNetRefNum": "54674915300274269950",
    "paymentAmountInfo": {
      "paymentState": "payment_deposited",
      "approvedAmount": 1000000,
      "depositedAmount": 1000000,
      "refundedAmount": 0
    },
    "bankInfo": {
      "bankCountryName": "<UNKNOWN>"
    },
    "payerData": {}
  }
}

Statut du paiement

La façon la plus simple de connaître le statut de paiement est d'utiliser l'appel API spécial :

  1. Faire l'appel getOrderStatusExtended.do;
  2. Vérifier le champ orderStatus dans la réponse : la commande est considérée comme payée, seulement si la valeur orderStatus est égale à 1 ou 2.

Une autre façon de vérifier si le paiement a réussi ou non, c'est de regarder la notification de rappel.

Statut de commande

Pour obtenir le statut de commande, utilisez la méthode https://dev.bpcbt.com/payment/rest/getOrderStatusExtended.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Des informations supplémentaires sur les raisons de refus sont disponibles ici.

Paramètres de requête

Caractère obligatoireNomTypeDescription
ConditionneluserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ConditionnelpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
ConditionneltokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.
ConditionnelorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.

ConditionnelorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque marchand.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifmerchantLoginString [1..255]Pour obtenir le statut de commande d'un marchand spécifique au lieu de l'utilisateur actuel, spécifiez le login du marchand (pour le compte API).
Ne peut être utilisé que si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.

Paramètres de réponse

Il existe plusieurs ensembles de paramètres de réponse. L'ensemble de paramètres renvoyé dans la réponse dépend de la version getOrderStatusExtended spécifiée dans les paramètres du commerçant dans la passerelle de paiement.

Description des versions

VersionParamètres ajoutés
1orderBundle
2
  • authDateTime
  • terminalId
  • authRefNum
3
  • paymentAmountInfo->approvedAmount, depositedAmount, paymentState, refundedAmount
  • bankInfo->bankCountryCode, bankCountryName, bankName
4Aucun changement
5refunds
6Aucun changement
7cardAuthInfo->secureAuthInfo->paResStatus, veResStatus, paResCheckStatus
8cardAuthInfo->paymentSystem, product
9paymentWay
10depositedDate
11Aucun changement
12
  • refundedDate
  • reversedDate
13payerData->email,phone,postAddress
14transactionAttributes
15
  • prepaymentMdOrder
  • partpaymentMdOrders
16feUtrnno
17cardAuthInfo->productCategory
18totalAmount
19avsCode
20bindingInfo->externalCreated
21refunds->externalRefundId
22Aucun changement
23efectyOrderInfo
24ofdOrderBundle
25Aucun changement
26refunds->approvalCode
27authRefNum
28pluginInfo
29Aucun changement
30cardAuthInfo->secureAuthInfo->aResTransStatus, rReqTransStatus, threeDsProtocolVersion
31Aucun changement
32Aucun changement
33displayErrorMessage
34orderBundle->cartItems->items->depostedItemAmount,itemPrice
35cardAuthInfo->corporateCard
36Aucun changement
37
  • tii
  • usedPsdIndicatorValue
38payerData ->paymentAccountReference
39cardAuthInfo -> detokenizedPanRepresentation, detokenizedPanExpiryDate
40Aucun changement
41PartialAuthorization
42cardAuthInfo->secureAuthInfo->threeDsType
43Aucun nouveau paramètre ajouté. Supprimé : cardAuthInfo->secureAuthInfo-> authTypeIndicator
44Aucun changement
45tokenizationInfo
46mcc, mvv,paymentFacilitator
47cardAuthInfo->secureAuthInfo->aResTransStatusReason, rreqTransStatusReason,rreqChallengeCancel
48payerData ->billingPayerData,shippingPayerData
49schemeTransactionId
VersionCaractère obligatoireNomTypeDescription
ToutesFacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
ToutesFacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
ToutesConditionnelorderNumberString [1..36]Numéro de commande (ID) dans le système du commerçant, doit être unique pour chaque commerçant enregistré dans la passerelle de paiement. Si le numéro de commande est généré du côté de la passerelle de paiement, ce paramètre n'est pas obligatoire à transmettre.
ToutesFacultatif orderStatusIntegerLa valeur de ce paramètre indique le statut de la commande dans la passerelle de paiement. Absent si la commande n'a pas été trouvée. Ci-dessous la liste des valeurs disponibles :
  • 0 - commande enregistrée mais non payée ;
  • 1 - commande seulement autorisée et pas encore finalisée (pour les paiements en deux étapes) ;
  • 2 - commande autorisée et finalisée ;
  • 3 - autorisation annulée ;
  • 4 - une opération de remboursement a été effectuée sur la transaction ;
  • 5 - autorisation initiée via ACS de la banque émettrice ;
  • 6 - autorisation refusée ;
  • 7 - attente de paiement de la commande ;
  • 8 - finalisation intermédiaire pour finalisation partielle multiple.
ToutesObligatoireactionCodeStringCode de réponse du traitement de la banque. Contient une valeur numérique. Voir la liste des codes de réponse ici.
ToutesObligatoireactionCodeDescriptionString [1..512]Description de actionCode, retournée par le système de traitement de la banque.
ToutesObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
ToutesFacultatifcurrencyString [3]Code de devise de paiement ISO 4217. Si non spécifié, la valeur par défaut est utilisée.
ToutesObligatoiredateIntegerDate d'enregistrement de la commande comme nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
10+FacultatifdepositedDateIntegerDate de paiement de la commande comme nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
ToutesFacultatiforderDescriptionString [1..600]Description de la commande transmise à la passerelle de paiement lors de l'enregistrement.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
ToutesObligatoireipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
27+FacultatifauthRefNumString [1..24]Numéro d'autorisation du paiement, qui lui est attribué lors de l'enregistrement du paiement.
12+, obligatoire avec 27FacultatifrefundedDateIntegerDate et heure du remboursement, affichées comme le nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps du 24 février 2025, 10:25:20 (UTC)).
12+FacultatifreversedDateIntegerDate et heure d'annulation du paiement, affichées comme le nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple: 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
09+ObligatoirepaymentWayStringMéthode d'exécution du paiement (paiement avec saisie des données de carte, paiement par liaison, etc.). Les valeurs supplémentaires possibles du paramètre sont présentées ci-dessous
19+FacultatifavsCodeStringCode de réponse de vérification AVS (vérification de l'adresse et du code postal du porteur de carte). Valeurs possibles :
  • A – le code postal et l'adresse correspondent.
  • B – l'adresse correspond, le code postal ne correspond pas.
  • C - le code postal correspond, l'adresse ne correspond pas.
  • D - le code postal et l'adresse ne correspondent pas.
  • E - vérification des données demandée, mais le résultat est non réussi.
  • F - format de demande AVS/AVV incorrect pour la vérification.
02+FacultatifauthDateTimeIntegerDate et heure d'autorisation, affichées comme le nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
02+FacultatifterminalIdString [1..10]Identifiant du terminal dans le système qui traite le paiement.
01+FacultatiforderBundleObjectObjet contenant le panier de produits. La description des éléments imbriqués est donnée ci-dessous.
03+FacultatifpaymentAmountInfoObjectObjet avec des informations sur les montants de confirmation, de débit, de remboursement. Voir la liste des paramètres imbriqués ci-dessous.
05+FacultatifrefundsObjectObjet contenant des informations sur le remboursement. Présent uniquement en cas de remboursements dans la commande. La description des éléments imbriqués est fournie ci-dessous.
ToutesFacultatifcardAuthInfoObjectBloc avec les données sur la carte du payeur. La description des éléments imbriqués est donnée ci-dessous.
14+FacultatiftransactionAttributesObjectEnsemble d'attributs supplémentaires de la transaction. Voir la liste des paramètres imbriqués ci-dessous.
15+FacultatifprepaymentMdOrderStringNuméro de la commande de prépaiement précédente dans la passerelle de paiement.
15+FacultatifpartpaymentMdOrdersArray of StringTableau des commandes suivantes pour le paiement partiel.
16+FacultatiffeUtrnnoInteger [1..18]Numéro de transaction FE.
ToutesFacultatifbindingInfoObjectObjet contenant les informations sur la liaison par laquelle le paiement est effectué. Voir le tableau avec la description de bindingInfo.
23+FacultatifefectyOrderInfoObjectBloc de paramètres liés au moyen de paiement EFECTY. La description des éléments imbriqués est donnée ci-dessous.
28+FacultatifpluginInfoObjectPrésent dans la réponse, si le paiement a été effectué via un plugin de paiement. Voir les paramètres imbriqués ci-dessous.
33+FacultatifdisplayErrorMessageStringMessage d'erreur affiché.
37+FacultatiftiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera exécuté par l'initiateur (Client ou Marchand). La description des éléments imbriqués est donnée ci-dessous.
37+FacultatifusedPsdIndicatorValueStringType d'exception SCA (Strong Customer Authentication). Contient la valeur transmise lors du paiement de la commande dans le paramètre externalScaExemptionIndicator.
Valeurs autorisées :
  • LVP – transaction de type Low Value Payments. La transaction peut être classée comme transaction à faible niveau de risque sur la base du montant de la transaction, du nombre de transactions du client par jour ou du montant quotidien total des paiements du client.
  • TRA – transaction de type Transaction Risk Analysis, c'est-à-dire transaction ayant passé avec succès la vérification antifraude.
41+ConditionnelpartialAuthorizationString [1..255]Indicateur du statut d'autorisation partielle de la commande. Obligatoire, si dans les détails de la commande le paramètre partialAuthorization est présent.
Valeurs autorisées :
  • REQUESTED - Le marchand a demandé une autorisation partielle, mais l'autorisation n'a pas encore été effectuée.
  • PARTIAL_AMOUNT - Le marchand a demandé une autorisation partielle. L'autorisation partielle a été effectuée avec succès en cas d'insuffisance du solde du client.
  • FULL_AMOUNT - Le marchand a demandé une autorisation partielle, mais le solde du client était suffisant, donc l'exécution de l'autorisation partielle n'était pas nécessaire et le montant total a été débité.
45+FacultatiftokenizationInfoObjectBloc avec les paramètres pour le service Tokenizer, qui permet d'effectuer la tokénisation des cartes à l'aide des services VTS (Visa Token Service) ou MCS (Mastercard Checkout Solutions). Ce bloc est renvoyé si un paiement tokenisé a eu lieu. Voir paramètres imbriqués.
46+FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
46+FacultatifmvvString [1..10]Confirmation du marchand de Mastercard pour les transactions tokenisées.
Pour transmettre ce paramètre, un paramétrage spécial doit être activé (contactez le support technique).
49+FacultatifschemeTransactionIdString [1..22]Identifiant de la transaction originale réussie dans Mastercard.
46+FacultatifpaymentFacilitatorObjectBloc avec des informations sur le facilitateur de paiement, c'est-à-dire sur le commerçant qui permet à plusieurs sous-commerçants d'accepter les paiements sous son compte.
Pour transmettre ce paramètre, un paramètre spécial doit être activé (contactez le support technique). Voir paramètres imbriqués.

Les paramètres du bloc tokenizationInfo (données sur la tokenisation de carte) sont énumérés ci-dessous.

ObligatoireNomTypeDescription
ObligatoiretokenIdStringIdentifiant unique du token, généré par le service Tokenizer.
ObligatoiretokenizationProviderStringFournisseur de services de tokenisation. Valeurs autorisées : vts,mcs.
ObligatoirepanReferenceStringRéférence au PAN original (numéro de carte).
ObligatoiredpanStringPAN numérique.
ObligatoiretokenExpiryIntegerDate d'expiration du token au format YYYYMM.

Exemple du bloc tokenizationInfo :

"tokenizationInfo": {
	  "tokenId": "8d577a01-55f7-45d4-add5-bfe0e8e6c571",
	  "tokenizationProvider": "vts",
	  "panReference": "f441492a-5b0a-453d-af97-e897e1148dc5",
	  "dpan": "5435982500356335",
	  "tokenExpiry": "202912"
	}

Description des paramètres de l'objet paymentFacilitator :

Caractère obligatoireNomTypeDescription
ObligatoirepfIdString [1..11]Identifiant du facilitateur de paiement.
ObligatoirenameString [1..40]Dénomination du facilitateur de paiement.
FacultatifisoIdString [1..11]Identifiant ISO.
ObligatoiresubMerchantsArray of objectsTableau d'objets avec des informations supplémentaires sur les sous-marchands. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'élément du tableau subMerchants :

Caractère obligatoireNomTypeDescription
ObligatoiresubMerchantIdString [1..20]Identifiant du sous-marchand.
ObligatoirenameString [1..40]Dénomination du sous-marchand.
ObligatoireaddressObjectBloc avec les informations sur l'adresse du sous-marchand. Voir les paramètres imbriqués ci-dessous.

Paramètres de l'objet address :

Caractère obligatoireNomTypeDescription
ObligatoirecityString [1..50]Ville du sous-marchand.
ObligatoirepostalCodeString [1..16]Code postal du sous-marchand.
ObligatoirecountryInteger [2]Code pays du sous-marchand au format ISO 3166-1.
FacultatifstreetString [1..40]Rue du sous-marchand.

Exemple d'objet paymentFacilitator :

"paymentFacilitator" :{
  "pfId": "PF123456",
  "name": "Payment Facilitator Name",
  "isoId": "ISO789",
  "subMerchants": [
    {
      "subMerchantId": "SM001",
      "name": "Sub Merchant 1",
      "address": {
        "city": "City 1",
        "postalCode": "101000",
        "country": "US",
        "street": "Street 1"
      }
    },
    {
      "subMerchantId": "SM002",
      "name": "Sub Merchant 2",
      "address": {
        "city": "City 2",
        "postalCode": "190000",
        "country": "US",
        "street": "Street 2"
      }
    }
  ]
}

Valeurs du paramètre paymentWay :

Valeurs possibles de tii (Pour en savoir plus sur les types de données de paiement sauvegardées pris en charge par la passerelle de paiement, lisez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour la transactionSauvegarde des données de carte après la transactionRemarque
VideOrdinaireAcheteurSaisi par l'acheteurNonTransaction de commerce électronique sans sauvegarde de données de paiement sauvegardées.
CIInitiateur - Ordinaire (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
FPaiement non planifié (CIT)UltérieureAcheteurLe client choisit la carte au lieu de la saisie manuelleNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées.
UPaiement non planifié (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées. Utilisé uniquement pour les paiements en une étape.
RIInitiateur - Récurrents (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
RPaiement récurrent (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération récurrente utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.
IIInitiateur - Échelonnement (CIT)InitiatriceAcheteurSaisi par l'acheteurOuiTransaction de commerce électronique avec sauvegarde de données de paiement sauvegardées.
IPaiement échelonné (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonOpération d'échelonnement utilisant des données de paiement sauvegardées sauvegardées. Utilisé uniquement pour les paiements en une étape.

Le bloc refunds contient les paramètres suivants.

VersionCaractère obligatoireNomTypeDescription
05+FacultatifdateStringDate de retour de la commande
21+FacultatifexternalRefundIdString [1..32]Identificateur de remboursement. Lors de la tentative de remboursement, externalRefundId est vérifié : s'il existe, une réponse réussie avec les données de remboursement est retournée, sinon — le remboursement est effectué.
26+ pour tous les moyens de paiementFacultatifapprovalCodeString [6]Code d'autorisation du système de paiement international. Ce champ a une longueur fixe (six caractères) et peut contenir des chiffres et des lettres latines.
05+FacultatifactionCodeStringCode de réponse du traitement de la banque. Contient une valeur numérique. Voir la liste des codes de réponse ici.
05+FacultatifreferenceNumberString [12]Numéro d'identification unique qui est attribué à l'opération lors de sa finalisation.
05+FacultatifamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).

Le bloc attributes contient des informations sur le numéro de commande dans la passerelle de paiement. Le paramètre name prend toujours la valeur mdOrder, et le paramètre value - le numéro de commande dans le système de paiement.

VersionCaractère obligatoireNomTypeDescription
ToutesFacultatifnameString [1..255]Nom du paramètre supplémentaire.
ToutesFacultatifvalueString [1..1024]Valeur du paramètre supplémentaire - jusqu'à 1024 caractères.

Le bloc transactionAttributes contient un ensemble d'attributs supplémentaires de la transaction. Utilisé pour la version 14 et supérieure. Ci-dessous est présentée la liste des paramètres inclus.

VersionCaractère obligatoireNomTypeDescription
14+FacultatifnameString [1..255]Nom d'un paramètre supplémentaire.
14+FacultatifvalueString [1..1024]Valeur du paramètre supplémentaire - jusqu'à 1024 caractères.

le bloc merchantOrderParams est transmis en réponse, si la commande contient des paramètres supplémentaires du commerçant. Chaque paramètre supplémentaire est transmis dans un élément merchantOrderParams séparé.

VersionCaractère obligatoireNomTypeDescription
ToutesFacultatifnameString [1..255]Nom du paramètre supplémentaire.
ToutesFacultatifvalueString [1..1024]Valeur du paramètre supplémentaire - jusqu'à 1024 caractères.

Dans l'élément cardAuthInfo se trouve une structure, composée d'une liste d'éléments secureAuthInfo et des paramètres suivants.

VersionCaractère obligatoireNomTypeDescription
01+FacultatifmaskedPanString [1..19]Numéro de carte masqué utilisé pour le paiement. Contient les 6 premiers et les 4 derniers chiffres réels du numéro de carte au format XXXXXX**XXXX.
01+FacultatifexpirationInteger [6]Date d'expiration de la carte au format suivant : YYYYMM.
01+FacultatifcardholderNameString [1..26]Nom du porteur de carte en lettres latines. Caractères autorisés : lettres latines, point, espace.
01+FacultatifapprovalCodeString [6]Code d'autorisation du système de paiement international. Ce champ a une longueur fixe (six caractères) et peut contenir des chiffres et des lettres latines.
08+ObligatoirepaymentSystemStringNom du système de paiement international. Les valeurs suivantes sont possibles :
  • VISA
  • MASTERCARD
  • AMEX
  • JCB
  • CUP
08+ObligatoireproductString [1..255]Informations supplémentaires sur les cartes d'entreprise. Ces informations sont remplies par le service de support technique. Si de telles informations sont absentes, une valeur vide est retournée.
17+ObligatoireproductCategoryStringInformations supplémentaires sur la catégorie des cartes d'entreprise. Ces informations sont remplies par le service de support technique. Si de telles informations sont absentes, une valeur vide est retournée. Valeurs possibles : DEBIT, CREDIT, PREPAID, NON_MASTERCARD, CHARGE, DIFFERED_DEBIT.
35+FacultatifcorporateCardString [1..5]Indique si cette carte est une carte d'entreprise. Valeurs possibles : false - n'est pas une carte d'entreprise, true - est une carte d'entreprise. Peut retourner une valeur vide, signifie que la valeur n'a pas été trouvée.
39+FacultatifdetokenizedPanRepresentationString [1..19]Numéro de carte détokenisé (4 derniers chiffres ou sous forme masquée).
39+FacultatifdetokenizedPanExpiryDateStringDate d'expiration de la carte détokénisée au format suivant : YYYYMM.

L'élément secureAuthInfo se compose des éléments suivants (les paramètres cavv et xid sont inclus dans l'élément threeDSInfo).

VersionCaractère obligatoireNomTypeDescription
01+FacultatifeciInteger [1..4]Indicateur de commerce électronique. Spécifié uniquement après le paiement de la commande et en cas de présence de l'autorisation correspondante. Ci-dessous se trouve le décodage des codes ECI.
  • ECI=01 ou ECI=06 - le marchand prend en charge 3-D Secure, la carte de paiement ne prend pas en charge 3-D Secure, le paiement est traité sur la base du code CVV2/CVC.
  • ECI=02 ou ECI=05 - le marchand et la carte de paiement prennent en charge 3-D Secure ;
  • ECI=07 - le marchand ne prend pas en charge 3-D Secure, le paiement est traité sur la base du code CVV2/CVC.
01 - 42FacultatifauthTypeIndicatorStringType d'authentification 3DS (disponible jusqu'à la version 42). Ce paramètre est obligatoire pour le paiement via votre serveur 3DS avec 3DS 2. Pour les paiements SSL ce paramètre est facultatif et déterminé en fonction de la valeur ECI. Valeurs admissibles :
  • 0 - Authentification SSL
  • 1 - Authentification 3DS 1
  • 2 - Tentative d'authentification 3DS 1
  • 3 - Authentification forte du client (SCA) avec 3DS 2
  • 4 - Authentification basée sur les risques (RBA) avec 3DS 2
  • 5 - Tentative d'authentification 3DS 2
42+FacultatifthreeDsTypeStringType d'authentification 3DS. Ce paramètre est obligatoire pour le paiement via votre serveur 3DS avec 3DS 2. Pour les paiements SSL, ce paramètre est facultatif et est déterminé en fonction de la valeur ECI. Valeurs autorisées :
  • 0 - Authentification SSL
  • 3 - Authentification forte du client (SCA) avec 3DS 2
  • 4 - Authentification basée sur les risques (RBA) avec 3DS 2
  • 5 - Tentative d'authentification 3DS 2
  • 7 - Authentification 3RI avec 3DS 2
  • 8 - Tentative d'authentification 3RI avec 3DS 2
01+FacultatifcavvString [0..200]Valeur de vérification d'authentification du titulaire de la carte. Spécifiée uniquement après le paiement de la commande et en cas de présence de l'autorisation correspondante.
01+FacultatifxidString [1..80]Identifiant commercial électronique de la transaction. Spécifié uniquement après le paiement de la commande et en cas de présence de l'autorisation correspondante.
30+FacultatifthreeDSProtocolVersionStringVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la requête, alors pour l'autorisation 3D Secure, la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
30+FacultatifrreqTransStatusString [1]Statut de la transaction de la demande de transmission des résultats d'authentification utilisateur depuis ACS (RReq). Transmis lors de l'utilisation de 3DS2.
30+FacultatifaresTransStatusStringÉtat de la transaction de la réponse ACS à la demande d'authentification (ARes). Transmis lors de l'utilisation de 3DS2.
47+FacultatifaResTransStatusReasonStringRaison du statut de transaction dans le message ARes. Transmis lors de l'utilisation de 3DS2. Le paramètre fournit des informations supplémentaires sur la raison du statut d'authentification spécifique. Accepte des valeurs de 2 chiffres, par exemple, 01, 02. Voir la liste complète des valeurs ci-dessous.
47+FacultatifrreqTransStatusReasonStringRaison du statut de transaction dans le message RReq. Transmis lors de l'utilisation de 3DS2. Le paramètre fournit des informations supplémentaires sur la raison d'un résultat spécifique d'authentification du porteur de carte. Accepte des valeurs de 2 chiffres, par exemple, 01, 02. Voir la liste complète des valeurs ci-dessous.
47+FacultatifrreqChallengeCancelStringIndicateur d'annulation du processus Challenge dans le message RReq. Transmis lors de l'utilisation de 3DS2. Le paramètre indique qui a initié l'annulation de l'authentification : le porteur de carte, le marchand ou l'émetteur. Accepte des valeurs de 2 chiffres, par exemple, 01, 03. Voir la liste complète des valeurs ci-dessous.

Valeurs autorisées aResTransStatusReason et rreqTransStatusReason:

Valeurs autorisées rreqChallengeCancel :

L'élément bindingInfo contient les paramètres suivants.

VersionCaractère obligatoireNomTypeDescription
ToutesFacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
ToutesFacultatifbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
02+FacultatifauthDateTimeIntegerDate et heure d'autorisation, affichées comme le nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
02+FacultatifauthRefNumString [1..24]Numéro d'autorisation du paiement, qui lui est attribué lors de l'enregistrement du paiement.
02+FacultatifterminalIdString [1..10]Identifiant du terminal dans le système qui traite le paiement.
20+FacultatifexternalCreatedBooleanAttribut indiquant si la liaison a été créée dans le service externe.

L'élément paymentAmountInfo contient les paramètres suivants.

VersionCaractère obligatoireNomTypeDescription
03+FacultatifapprovedAmountInteger [0..12]Montant en unités minimales de devise (par exemple, en centimes) qui a été bloqué sur le compte de l'acheteur. Utilisé uniquement dans les paiements en deux étapes.
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
03+FacultatifdepositedAmountInteger [1..12]Montant du débit en unités minimales de devise (par exemple, en centimes).
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
03+FacultatifrefundedAmountInteger [1..12]Montant du remboursement dans les unités minimales de la devise.
03+FacultatifpaymentStateStringÉtat de la commande, le paramètre peut prendre les valeurs suivantes :
  • CREATED - commande créée (mais non payée) ;
  • APPROVED - commande approuvée (les fonds sur le compte de l'acheteur sont bloqués) ;
  • DEPOSITED - commande terminée (l'argent est débité du compte de l'acheteur) ;
  • DECLINED - commande rejetée ;
  • REVERSED - commande rejetée ;
  • REFUNDED - remboursement des fonds.
18+FacultatiftotalAmountInteger [1..20]Montant de la commande plus commission, si elle existe.

L'élément bankInfo contient les paramètres suivants.

VersionCaractère obligatoireNomTypeDescription
03+FacultatifbankNameString [1..50]Nom de la banque émettrice.
03+FacultatifbankCountryCodeString [1..4]Code du pays de la banque émettrice.
03+FacultatifbankCountryNameString [1..160]Pays de la banque émettrice.

L'élément payerData contient les paramètres suivants.

VersionCaractère obligatoireNomTypeDescription
13+FacultatifemailString [1..40]Adresse électronique du payeur.
13+FacultatifphoneString [7..15]Numéro de téléphone du propriétaire de la carte. Il est nécessaire de toujours indiquer le code pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du propriétaire de la carte.
13+FacultatifpostAddressString [1..255]Adresse de livraison.
38+FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).
48+FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire, si la fonction est activée pour le vendeur du côté de la Passerelle de paiement. Voir paramètres imbriqués.
48+FacultatifshippingPayerDataObjectObjet, contenant les données sur la livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Le bloc efectyOrderInfo contient les paramètres suivants.

VersionObligatoireNomTypeDescription
23+FacultatifreferenceNumberIntegerNuméro de référence Efecty de la commande, généré du côté Efecty
23+FacultatifreferenceDateIntegerDate/heure de création de la référence
23+FacultatifreferenceStatusStringÉtat de la commande Efecty
23+FacultatifreferenceTermIntegerDurée de vie de la commande Efecty (en heures)
23+FacultatifnetworkIDIntegerIdentifiant du réseau d'acceptation de paiement en espèces (pour Efecty valeur constante - 1)
23+FacultatifnetworkNameStringDénomination du réseau d'acceptation de paiement en espèces (pour Efecty valeur constante - efecty)

L'élément pluginInfo (objet JSON) est présent dans la réponse, si le paiement a été effectué via un plugin de paiement. Contient les paramètres suivants.

VersionCaractère obligatoireNomTypeDescription
28+FacultatifnameString [1..32]Nom unique du plugin de paiement.
28+FacultatifparamsObjectLes paramètres pour le mode de paiement spécifique doivent être transmis de la manière suivante {"param":"value","param2":"value2"}.

Description des paramètres dans l'objet orderBundle :

ObligatoireNomTypeDescription
FacultatiforderCreationDateString [19]Date de création de la commande au format YYYY-MM-DDTHH:MM:SS.
FacultatifcustomerDetailsObjectBloc contenant les attributs du client. La description des attributs de la balise est donnée ci-dessous.
ObligatoirecartItemsObjectObjet contenant les attributs des produits dans le panier. La description des éléments imbriqués est fournie ci-dessous.

Description des paramètres dans l'objet loyalties :

ObligatoireNomTypeDescription
FacultatifbonusAmountForCreditString [0..18]Montant total des bonus pour tous les produits de ce positionId pour le crédit sur le compte bonus du client dans les unités minimales de devise.
FacultatifbonusAmountForDebitString [0..18]Montant total des bonus pour tous les produits de ce positionId pour débit du compte bonus du client en unités monétaires minimales.
ObligatoirebonusAmountRefundedString [0..18]Montant total des bonus remboursés pour ce positionId en unités monétaires minimales.

Description des paramètres dans l'objet customerDetails :

ObligatoireNomTypeDescription
FacultatifcontactString [0..40]Méthode de contact préférée par le client.
FacultatiffullNameString [1..100]Nom complet du payeur.
FacultatifpassportString [1..100]Série et numéro du passeport du payeur au format suivant : 2222888888
FacultatifdeliveryInfoObjectObjet contenant les attributs de l'adresse de livraison. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet deliveryInfo :

Caractère obligatoireNomTypeDescription
FacultatifdeliveryTypeString [1..20]Mode de livraison.
ObligatoirecountryString [2]Code de pays de livraison à deux lettres.
ObligatoirecityString [0..40]Ville de destination.
ObligatoirepostAddressString [1..255]Adresse de livraison.

Description des paramètres dans l'objet cartItems :

ObligatoireNomTypeDescription
ObligatoireitemsObjectÉlément du tableau avec les attributs de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet items :

ObligatoireNomTypeDescription
ObligatoirepositionIdInteger [1..12]Identifiant unique de la position de marchandise dans le panier.
ObligatoirenameString [1..255]Désignation ou description de la position tarifaire sous forme libre.
FacultatifitemDetailsObjectObjet avec les paramètres de description de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.
ObligatoirequantityObjectÉlément décrivant la quantité totale des positions de marchandises d'un même positionId et ses unités de mesure. La description des éléments imbriqués est donnée ci-dessous.
FacultatifitemAmountInteger [1..12]Montant du coût de toutes les positions de marchandises d'un positionId dans les unités minimales de la devise. itemAmount est obligatoire à transmettre, seulement si le paramètre itemPrice n'a pas été transmis. Dans le cas contraire, la transmission d'itemAmount n'est pas requise. Si dans la requête les deux paramètres sont transmis : itemPrice et itemAmount, alors itemAmount doit être égal à itemPrice * quantity, dans le cas contraire la requête se terminera avec une erreur.
FacultatifitemPriceInteger [1..18]Montant du coût de la position de marchandise d'un positionId en argent dans les unités minimales de devise.
FacultatifdepositedItemAmountString [1..18]Montant de débit pour un positionId en unités minimales de devise (par exemple, en centimes).
FacultatifitemCurrencyInteger [3]Code de devise ISO 4217. Si non spécifié, considéré comme égal à la devise de la commande.
ObligatoireitemCodeString [1..100]Numéro (identifiant) de la position de marchandise dans le système du magasin.

Description des paramètres dans l'objet quantity :

ObligatoireNomTypeDescription
ObligatoirevalueNumber [1..18]Quantité de positions de marchandises de ce positionId. Pour indiquer les nombres fractionnaires, utilisez le point décimal. Maximum 3 chiffres après le point sont autorisés.
ObligatoiremeasureString [1..20]Unité de mesure de la quantité par position.

Description des paramètres dans l'objet itemDetails :

ObligatoireNomTypeDescription
FacultatifitemDetailsParamsObjectParamètre décrivant les informations supplémentaires sur la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/getOrderStatusExtended.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
  --data language=en

Exemple de réponse

{
  "errorCode": "0",
  "errorMessage": "Success",
  "orderNumber": "7005",
  "orderStatus": 2,
  "actionCode": 0,
  "actionCodeDescription": "",
  "amount": 2000,
  "currency": "978",
  "date": 1617972915659,
  "orderDescription": "",
  "merchantOrderParams": [],
  "transactionAttributes": [],
  "attributes": [
    {
      "name": "mdOrder",
      "value": "01491d0b-c848-7dd6-a20d-e96900a7d8c0"
    }
  ],
  "cardAuthInfo": {
    "maskedPan": "411111**1111",
    "expiration": "203412",
    "cardholderName": "TEST CARDHOLDER",
    "approvalCode": "12345678",
    "pan": "411111**1111"
  },
  "bindingInfo": {
    "clientId": "259753456",
    "bindingId": "01491394-63a6-7d45-a88f-7bce00a7d8c0"
  },
  "authDateTime": 1617973059029,
  "terminalId": "123456",
  "authRefNum": "714105591198",
  "paymentAmountInfo": {
    "paymentState": "DEPOSITED",
    "approvedAmount": 2000,
    "depositedAmount": 2000,
    "refundedAmount": 0
  },
  "bankInfo": {
    "bankCountryCode": "UNKNOWN",
    "bankCountryName": "Unknown"
  }
}

Gestion de commande

Finalisation de commande

Pour finaliser une commande préalablement autorisée, utilisez la requête https://dev.bpcbt.com/payment/rest/deposit.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de requête

Caractère obligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ConditionorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
Il est nécessaire de transmettre orderId ou orderNumber+merchantLogin.
ConditionorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
Il est nécessaire de transmettre orderId ou orderNumber+merchantLogin.
ConditionmerchantLoginString [1..255]Pour effectuer certaines actions avec le paiement de la commande au nom d'un autre marchand, indiquez son login (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
Il est nécessaire de transmettre orderId ou orderNumber+merchantLogin.
ObligatoireamountString [0..12]Montant de finalisation dans les unités monétaires minimales (par exemple, en centimes). Le montant de finalisation doit correspondre au montant total de tous les articles pour lesquels la finalisation est effectuée. Si amount=0 est spécifié dans la requête, une finalisation sera générée pour le montant total de la commande.
FacultatifdepositItemsObjectObjet contenant les attributs des produits dans le panier. La description des attributs inclus est fournie ci-dessous.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifjsonParamsObjectEnsemble d'attributs supplémentaires de forme arbitraire, structure :
jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}
Peuvent être transmis au Centre de Traitement, pour un traitement ultérieur (configuration supplémentaire requise - contactez le support).
Certains attributs prédéfinis de jsonParams :
  • backToShopUrl - ajoute un bouton à la page de paiement qui ramènera le porteur de carte à l'URL transmise dans ce paramètre
  • backToShopName - configure l'étiquette textuelle du bouton Retour à la boutique par défaut, si elle est utilisée avec backToShopUrl
  • installments - nombre maximum d'autorisations autorisées pour les paiements échelonnés. Requis pour créer des données de paiement sauvegardées d'échelonnement
  • totalInstallmentAmount - montant total de tous les paiements échelonnés. La valeur est nécessaire pour sauvegarder les données de paiement pour effectuer l'échelonnement
  • recurringFrequency - nombre minimum de jours entre les autorisations. Requis pour créer des données de paiement sauvegardées récurrentes, recommandé pour créer des données de paiement sauvegardées d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • recurringExpiry - date après laquelle les autorisations ne sont pas autorisées, au format AAAAMMJJ. Requis pour créer des données de paiement sauvegardées récurrentes, recommandé pour créer des données de paiement sauvegardées d'échelonnement (si 3DS2 est utilisé, le paramètre est obligatoire).
  • paymentWay - méthode de paiement. Pour forcer l'exécution d'un paiement MOTO, il faut transmettre la valeur CARD_MOTO.

Description des paramètres dans l'objet deposititems :

ObligatoireNomTypeDescription
ObligatoireitemsObjectÉlément du tableau avec les attributs de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet items :

ObligatoireNomTypeDescription
ObligatoirepositionIdInteger [1..12]Identifiant unique de la position de marchandise dans le panier.
ObligatoirenameString [1..255]Désignation ou description de la position tarifaire sous forme libre.
FacultatifitemDetailsObjectObjet avec les paramètres de description de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.
ObligatoirequantityObjectÉlément décrivant la quantité totale des positions de marchandises d'un même positionId et ses unités de mesure. La description des éléments imbriqués est donnée ci-dessous.
FacultatifitemAmountInteger [1..12]Montant du coût de toutes les positions de marchandises d'un positionId dans les unités minimales de la devise. itemAmount est obligatoire à transmettre, seulement si le paramètre itemPrice n'a pas été transmis. Dans le cas contraire, la transmission d'itemAmount n'est pas requise. Si dans la requête les deux paramètres sont transmis : itemPrice et itemAmount, alors itemAmount doit être égal à itemPrice * quantity, dans le cas contraire la requête se terminera avec une erreur.
FacultatifitemPriceInteger [1..18]Montant du coût de la position de marchandise d'un positionId en argent dans les unités minimales de devise.
FacultatifdepositedItemAmountString [1..18]Montant de débit pour un positionId en unités minimales de devise (par exemple, en centimes).
FacultatifitemCurrencyInteger [3]Code de devise ISO 4217. Si non spécifié, considéré comme égal à la devise de la commande.
ObligatoireitemCodeString [1..100]Numéro (identifiant) de la position de marchandise dans le système du magasin.

Description des paramètres dans l'objet itemDetails :

ObligatoireNomTypeDescription
FacultatifitemDetailsParamsObjectParamètre décrivant les informations supplémentaires sur la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet itemDetailsParams :

ObligatoireNomTypeDescription
ObligatoirevalueString [1..2000]Informations supplémentaires sur la position de marchandise.
ObligatoirenameString [1..255]Dénomination du paramètre de description de la détaillisation de la position de marchandise

Description des paramètres dans l'objet quantity :

ObligatoireNomTypeDescription
ObligatoirevalueNumber [1..18]Quantité de positions de marchandises de ce positionId. Pour indiquer les nombres fractionnaires, utilisez le point décimal. Maximum 3 chiffres après le point sont autorisés.
ObligatoiremeasureString [1..20]Unité de mesure de la quantité par position.

Paramètres de réponse

Caractère obligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/deposit.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data currency=978 \
  --data amount=2000 \
  --data orderId=01492437-d2fb-77fa-8db7-9e2900a7d8c0 \
  --data language=en

Exemple de réponse

{
  "errorCode": 0,
  "errorMessage":"Success"
}

Annulation de paiement

Pour annuler un paiement, utilisez la requête https://dev.bpcbt.com/payment/rest/reverse.do. L'annulation n'est possible que pendant une certaine période après le paiement. Contactez le Support pour connaître la période exacte, car elle varie.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Le paiement ne peut être annulé qu'une seule fois. S'il se termine par une erreur, les opérations d'annulation de paiement ultérieures ne fonctionneront pas.

La disponibilité de cette fonction est possible en accord avec la banque. L'annulation ne peut être effectuée que par des utilisateurs auxquels ont été accordées les autorisations système correspondantes.

Paramètres de requête

ObligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ConditionorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
Il est nécessaire de transmettre orderId ou orderNumber+merchantLogin.
ConditionorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
Il est nécessaire de transmettre orderId ou orderNumber+merchantLogin.
ConditionmerchantLoginString [1..255]Pour annuler une commande au nom d'un autre marchand, spécifiez son identifiant (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur subsidiaire.
Il est nécessaire de transmettre orderId ou orderNumber+merchantLogin.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifjsonParamsStringLes champs pour stocker des données supplémentaires doivent être transmis de la manière suivante : {"param":"value","param2":"value2"}.
FacultatifamountString [0..12]Montant d'annulation en unités minimales de devise (par exemple, en centimes). Le montant d'annulation doit être inférieur ou égal au montant autorisé de la commande (pour les commandes à deux étapes - montant total pré-autorisé de la commande).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.

Paramètres de réponse

ObligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/reverse.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data currency=978 \
  --data orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
  --data language=en

Exemple de réponse

{
  "errorCode": 0,
  "errorMessage":"Success"
}

Remboursement de fonds

Utilisez https://dev.bpcbt.com/payment/rest/refund.do pour envoyer des demandes de remboursement de fonds.


Lors de l'exécution de la demande, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Il n'est pas possible d'effectuer un remboursement de fonds pour les commandes qui initient des paiements réguliers, car dans ce cas il n'y a pas de débit de fonds.

Par cette demande, les fonds de la commande spécifiée seront remboursés au payeur. La demande se terminera par une erreur si les fonds de cette commande n'ont pas été débités. Le système permet de rembourser des fonds plus d'une fois, mais au total pas plus que le montant initial du débit.

Paramètres de la demande

Caractère obligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ConditionorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
Il est nécessaire de transmettre orderId ou orderNumber+merchantLogin.
ConditionorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
Il est nécessaire de transmettre orderId ou orderNumber+merchantLogin.
ConditionmerchantLoginString [1..255]Pour effectuer certaines actions avec le paiement de la commande au nom d'un autre marchand, indiquez son login (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
Il est nécessaire de transmettre orderId ou orderNumber+merchantLogin.
ObligatoireamountString [0..12]Montant du remboursement en unités minimales de la devise (par exemple, en centimes). Le montant du remboursement doit être inférieur ou égal au montant de la commande (pour les commandes en deux étapes - le montant total de finalisation de la commande). Si dans la demande on indique amount=0, alors tout le montant de la commande sera remboursé.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifjsonParamsStringLes champs pour stocker des données supplémentaires doivent être transmis de la manière suivante : {"param":"value","param2":"value2"}.
FacultatifexpectedDepositedAmountInteger [1..12]Le paramètre sert à déterminer que la demande est répétée. Si le paramètre est transmis, sa valeur est comparée avec la valeur actuelle de depositedAmount dans la commande. L'opération ne sera exécutée que si les valeurs correspondent. Si deux retours arrivent avec le même expectedDepositedAmount, un seul retour sera exécuté. Ce retour modifiera la valeur de depositedAmount, puis le second retour sera rejeté.
FacultatifexternalRefundIdString [1..32]Identificateur de remboursement. Lors de la tentative de remboursement, externalRefundId est vérifié : s'il existe, une réponse réussie avec les données de remboursement est retournée, sinon — le remboursement est effectué.
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifrefundItemsObjectObjet pour transmettre les informations sur les marchandises retournées - numéro de position de la marchandise dans la demande, nom, détails, unité de mesure, quantité, devise, code de marchandise, profit de l'agent.

Le paramètre refundItems comprend :

Caractère obligatoireNomTypeDescription
FacultatifitemsObjectÉlément du tableau avec les attributs de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet items :

ObligatoireNomTypeDescription
ObligatoirepositionIdInteger [1..12]Identifiant unique de la position de marchandise dans le panier.
ObligatoirenameString [1..255]Désignation ou description de la position tarifaire sous forme libre.
FacultatifitemDetailsObjectObjet avec les paramètres de description de la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.
ObligatoirequantityObjectÉlément décrivant la quantité totale des positions de marchandises d'un même positionId et ses unités de mesure. La description des éléments imbriqués est donnée ci-dessous.
FacultatifitemAmountInteger [1..12]Montant du coût de toutes les positions de marchandises d'un positionId dans les unités minimales de la devise. itemAmount est obligatoire à transmettre, seulement si le paramètre itemPrice n'a pas été transmis. Dans le cas contraire, la transmission d'itemAmount n'est pas requise. Si dans la requête les deux paramètres sont transmis : itemPrice et itemAmount, alors itemAmount doit être égal à itemPrice * quantity, dans le cas contraire la requête se terminera avec une erreur.
FacultatifitemPriceInteger [1..18]Montant du coût de la position de marchandise d'un positionId en argent dans les unités minimales de devise.
FacultatifdepositedItemAmountString [1..18]Montant de débit pour un positionId en unités minimales de devise (par exemple, en centimes).
FacultatifitemCurrencyInteger [3]Code de devise ISO 4217. Si non spécifié, considéré comme égal à la devise de la commande.
ObligatoireitemCodeString [1..100]Numéro (identifiant) de la position de marchandise dans le système du magasin.

Description des paramètres dans l'objet itemAttributes :

Le paramètre itemAttributes doit contenir un tableau attributes, et déjà dans ce tableau sont situés les attributs de la position marchandise (voir exemple et tableau ci-dessous).

"itemAttributes":{"attributes":[{"name":"paymentMethod","value":"1"},{"name":"paymentObject","value":"1"}]}
Caractère obligatoireNomTypeDescription
ObligatoirepaymentMethodInteger [1..2]Type de paiement, valeurs disponibles :
  • 1 - prépaiement complet ;
  • 2 - prépaiement partiel ;
  • 3 - acompte ;
  • 4 - paiement complet ;
  • 5 - paiement partiel avec paiement ultérieur à crédit ;
  • 6 - sans paiement avec paiement ultérieur à crédit ;
  • 7 - paiement avec paiement ultérieur à crédit.
ConditionnomenclatureString [1..95]Code de la nomenclature de marchandises en représentation hexadécimale avec espaces. Longueur maximale – 32 octets. Obligatoire, si markQuantity est transmis.
FacultatifmarkQuantityObjectQuantité fractionnelle du produit marqué.
FacultatifuserDataString [1..64]Valeur de la réquisition de l'utilisateur. Ne peut être transmise qu'après accord avec le Service fiscal fédéral.
Facultatifagent_infoObjectObjet avec les données sur l'agent de paiement pour la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.
Facultatifsupplier_infoObjectObjet avec les données sur le fournisseur pour la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet agent_info :

ObligatoireNomTypeDescription
ObligatoiretypeIntegerType d'agent, valeurs disponibles :
  • 1 - agent de paiement bancaire ;
  • 2 - sous-agent de paiement bancaire ;
  • 3 - agent de paiement ;
  • 4 - sous-agent de paiement ;
  • 5 - mandataire ;
  • 6 - commissionnaire ;
  • 7 - autre agent.
FacultatifpayingObjectObjet avec les données sur l'agent de paiement. La description des éléments imbriqués est donnée ci-dessous.
FacultatifpaymentsOperatorObjectObjet avec des informations sur l'opérateur de réception des paiements. La description des éléments imbriqués est donnée ci-dessous.
FacultatifMTOperatorObjectObjet avec les données sur l'Opérateur de traduction. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet paying :

ObligatoireNomTypeDescription
FacultatifoperationString [1..24]Nom de la transaction de l'agent de paiement.
FacultatifphonesArray of stringsTableau des numéros de téléphone de l'agent de paiement au format +N.

Description des paramètres dans l'objet paymentsOperator :

ObligatoireNomTypeDescription
FacultatifphonesArray of stringsTableau des numéros de téléphone de l'agent de paiement au format +N.

Description des paramètres dans l'objet MTOperator :

ObligatoireNomTypeDescription
FacultatifphonesArray of stringsTableau des numéros de téléphone de l'opérateur de traduction au format +N.
FacultatifnameString [1..256]Nom de l'opérateur de transfert.
FacultatifaddressString [1..256]Adresse de l'opérateur de transfert.
FacultatifinnString [10..12]INN de l'opérateur de transfert.

Description des paramètres dans l'objet supplier_info :

ObligatoireNomTypeDescription
OptionnelphonesArray of stringsTableau des numéros de téléphone du fournisseur au format +N.
OptionnelnameString [1..256]Nom du fournisseur.
OptionnelinnInteger [10..12]INN du fournisseur

Description des paramètres de l'objet markQuantity.

Caractère obligatoireNomTypeDescription
ObligatoirenumeratorInteger [1..12]Numérateur de la partie fractionnaire de l'objet de paiement.
ObligatoiredenominatorInteger [1..12]Dénominateur de la partie fractionnaire de l'objet de paiement.

Description des paramètres dans l'objet quantity :

ObligatoireNomTypeDescription
ObligatoirevalueNumber [1..18]Quantité de positions de marchandises de ce positionId. Pour indiquer les nombres fractionnaires, utilisez le point décimal. Maximum 3 chiffres après le point sont autorisés.
ObligatoiremeasureString [1..20]Unité de mesure de la quantité par position.

Valeurs possibles du paramètre measure :

ValeurDescription
0S'applique aux positions qui peuvent être réalisées individuellement ou par unités séparées, ainsi que si l'objet de paiement est un sujet soumis au marquage d'identification obligatoire.
10Gramme
11Kilogramme
12Tonne
20Centimètre
21Décimètre
22Mètre
30Centimètre carré
31Décimètre carré
32Mètre carré
40Millilitre
41Litre
42Mètre cube
50Kilowatt heure
51Gigacalorie
70Jour
71Heure
72Minute
73Seconde
80Kilooctet
81Mégaoctet
82Gigaoctet
83Téraoctet
255S'applique aux autres unités de mesure

Description des paramètres dans l'objet itemDetails :

ObligatoireNomTypeDescription
FacultatifitemDetailsParamsObjectParamètre décrivant les informations supplémentaires sur la position de marchandise. La description des éléments imbriqués est donnée ci-dessous.

Description des paramètres dans l'objet itemDetailsParams :

ObligatoireNomTypeDescription
ObligatoirevalueString [1..2000]Informations supplémentaires sur la position de marchandise.
ObligatoirenameString [1..255]Dénomination du paramètre de description de la détaillisation de la position de marchandise

Paramètres de réponse

Caractère obligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.

Exemples

Exemple de demande

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/refund.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data currency=978 \
  --data orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
  --data amount=2000 \
  --data language=en

Exemple de réponse

{
  "errorCode": 0,
  "errorMessage":"Success"
}

Remboursement instantané

Utilisez la requête https://dev.bpcbt.com/payment/rest/instantRefund.do pour rembourser les fonds d'une commande. Avec cette requête, les fonds de la commande seront remboursés au payeur.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de la requête

ObligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoireamountInteger [0..12]Montant du remboursement dans les unités minimales de devise (par exemple, en centimes).
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
ConditionorderNumberString [1..36]Le numéro de commande (ID) dans le système du vendeur doit être unique pour chaque vendeur enregistré dans la Passerelle de paiement.
Si le numéro de commande est généré du côté du marchand, ce paramètre est facultatif.
FacultatifbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
ConditionseTokenString [1..8192]Données de carte chiffrées saisies par le client du côté du marchand. Doivent être transmises si utilisées à la place des données de carte : pan, cvc, expiry et cardHolderName.
Combinaisons autorisées de seToken :
  • timestamp/uuid/PAN/CVV/EXPDATE
  • timestamp/uuid/PAN//EXPDATE
  • timestamp/uuid//CVV///bindingId
  • timestamp/uuid/////bindingId

MdOrder ne doit pas être présent dans seToken. Si bindingId est spécifié, alors au lieu de mdOrder une valeur vide //bindingId est indiquée.
Pour plus de détails sur la génération de seToken voir ici.
ConditionpanString [1..19]Numéro de carte masqué. Obligatoire si ni seToken ni bindingId ne sont transmis.
ConditioncvcString [3]Code CVC/CVV2 au verso de la carte. Est obligatoire si le marchand n'a pas l'autorisation de paiement sans CVC. Obligatoire si ni seToken, ni bindingId ne sont transmis.
Seuls les chiffres sont autorisés.
ConditionexpiryInteger [6]Date d'expiration de la carte au format suivant : YYYYMM. Obligatoire si ni seToken, ni bindingId ne sont transmis.
ConditioncardHolderNameString [1..26]Nom du porteur de la carte en lettres latines. Obligatoire si ni seToken ni bindingId ne sont transmis.
FacultatifjsonParamsStringLes champs pour stocker des données supplémentaires doivent être transmis de la manière suivante : {"param":"value","param2":"value2"}.

Paramètres de la réponse

ObligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
ObligatoireNomTypeDescription
FacultatiforderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
FacultatiforderStatusObjectBloc avec les informations sur le statut de la commande. Voir paramètres imbriqués.

Ci-dessous sont présentés les paramètres du bloc orderStatus.

ObligationNomTypeDescription
FacultatifapprovalCodeString [6]Code d'autorisation du système de paiement international. Ce champ a une longueur fixe (six caractères) et peut contenir des chiffres et des lettres latines.
FacultatifrrnInteger [1..12]Reference Retrieval Number - identifiant de transaction attribué par la banque acquéreuse.
FacultatifErrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreurs.
FacultatifErrorMessageString [1..512]Paramètre informatif qui est une description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, il ne faut donc pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/instantRefund.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data amount=2000 \
  --data userName=test_user \
  --data password=test_user_password \
  --data orderNumber=1218637308 \
  --data pan=4000001111111118 \
  --data cvc=123 \
  --data expiry=203012 \
  --data cardHolderName=TEST CARDHOLDER \
  --data language=en

Exemple de réponse - Remboursement instantané réussi et obtention réussie du statut de la commande

{
  "errorCode": "0",
  "errorMessage": "Success",
  "orderId": "04899a8a-3bfd-7ceb-ac10-9e6909017350",
  "orderStatus": {
    "ErrorCode": "7",
    "ErrorMessage": "System error",
  }
}

Exemple de réponse - Remboursement instantané réussi et obtention NON réussie du statut de la commande

{
  "errorCode": "0",
  "errorMessage": "Success",
  "orderId": "04899a8a-3bfd-7ceb-ac10-9e6909017350",
  "orderStatus": {
    "ErrorCode": "7",
    "ErrorMessage": "System error",
  }
}

Exemple de réponse - Remboursement instantané non réussi (par exemple, erreur de validation)

{
  "errorCode": "5",
  "errorMessage": "Access denied"
}

Annulation de commande

Pour annuler une commande pas encore payée, utilisez la requête https://dev.bpcbt.com/payment/rest/decline.do. Il est possible de refuser seulement une commande qui n'a pas été finalisée. Après l'exécution réussie de cette requête, la commande passe au statut DECLINED.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de requête

Caractère obligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
FacultatifmerchantLoginString [1..255]Pour enregistrer une commande au nom d'un autre marchand, indiquez son login (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.

Paramètres de réponse

Caractère obligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
ObligatoireerrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/decline.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data orderId=8cf0409e-857e-7f95-8ab1-b6810009d884 \
  --data orderNumber=12345678 \
  --data merchantLogin=merch_test418 \
  --data language=en

Exemple de réponse

{
  "errorCode": 0,
  "errorMessage":"Success"
}

Identifiants stockés

Les requêtes API présentées ci-dessous permettent de gérer les transactions par identifiants stockés. La transaction par identifiant stocké est utilisée lorsque le porteur de carte autorise le vendeur à stocker les données de paiement pour les paiements futurs. En savoir plus sur les identifiants stockés ici.

Paiement par identifiant stocké

Pour le paiement d'une commande par identifiant stocké, la requête https://dev.bpcbt.com/payment/rest/paymentOrderBinding.do est utilisée.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de requête

Caractère obligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoiremdOrderString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
ObligatoirebindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatifcvcString [3]La transmission du paramètre est déterminée par le type de paiement :
  • la transmission cvc n'est pas prévue pour tous les paiements tokenisés ;
  • la transmission cvc n'est pas prévue pour les paiements MIT ;
  • la transmission cvc est obligatoire par défaut pour tous les autres types de paiements ; mais si l'autorisation Peut effectuer le paiement sans confirmation CVC est sélectionnée pour le marchand, alors dans ce cas la transmission cvc devient facultative.

Seuls les chiffres sont autorisés.
FacultatifthreeDSSDKBooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient du 3DS SDK.
ObligatoiretiiStringIdentifiant de l'initiateur de transaction. Paramètre indiquant quel type d'opération sera exécuté par l'initiateur (Client ou Merchant). Valeurs possibles : F, U. Voir la description des valeurs.
ConditionnelemailString [1..40]Adresse électronique à afficher sur la page de paiement. Si les notifications client sont configurées pour le marchand, l'adresse électronique doit être spécifiée. Exemple : client_mail@email.com.
Pour les paiements VISA avec autorisation 3DS, il est nécessaire de spécifier soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte.
FacultatifmccInteger [4]Merchant Category Code (code de catégorie du marchand).
Pour transmettre ce paramètre, une autorisation spéciale est nécessaire. Seules les valeurs de la liste MCC autorisée peuvent être utilisées. Pour obtenir des informations plus détaillées, contactez le support technique.
FacultatifthreeDSProtocolVersionStringVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la requête, alors pour l'autorisation 3D Secure, la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
FacultatifexternalScaExemptionIndicatorStringType d'exemption SCA (Strong Customer Authentication). Si ce paramètre est spécifié, la transaction sera traitée en fonction de vos paramètres dans la passerelle de paiement : soit une opération SSL forcée sera effectuée, soit la banque émettrice recevra des informations sur l'exemption SCA et prendra une décision de mener l'opération avec authentification 3DS ou sans elle (pour obtenir des informations détaillées, contactez notre service de support). Valeurs autorisées :
  • LVP – transaction de type Low Value Payments. La transaction peut être classée comme transactions à faible niveau de risque sur la base du montant de la transaction, du nombre de transactions du client par jour ou du montant quotidien total des paiements du client.
  • TRA – transaction de type Transaction Risk Analysis, c'est-à-dire transaction ayant passé avec succès la vérification antifraude.

Pour transmettre ce paramètre, vous devez avoir des droits suffisants dans la passerelle de paiement.
ConditionnelseTokenString [1..8192]Données de carte chiffrées. Obligatoire si utilisé à la place des données de carte.
Paramètres obligatoires pour la chaîne seToken : timestamp, UUID, bindingId, MDORDER. Plus de détails sur la génération seToken voir ici.
FacultatifmarketplaceObjectBloc avec les paramètres de la marketplace, c'est-à-dire du vendeur qui propose des produits ou services de différents vendeurs au détail (détaillants).
Ce paramètre est utilisé si un paramètre spécial est activé (contactez le service d'assistance). Voir paramètres imbriqués.
OptionalclientBrowserInfoObjectBloc de données sur le navigateur du client, qui est envoyé à ACS pendant l'authentification 3DS. Ce bloc peut être transmis uniquement si un paramètre spécial est activé (contactez l'équipe de support). Voir paramètres imbriqués.
FacultatifacsInIFrameBooleanDrapeau indiquant que pour l'URL finale une version iFrame sera retournée. Valeurs possibles true ou false. Pour activer cette fonctionnalité, contactez le service de support.

Valeurs possibles tii (Pour plus d'informations sur les types de données de paiement sauvegardées pris en charge par la passerelle de paiement, consultez ici).

Valeur tiiDescriptionType de transactionInitiateur de transactionDonnées de carte pour la transactionSauvegarde des données de carte après la transactionRemarque
FPaiement imprévu (CIT)UltérieureAcheteurLe client choisit la carte au lieu de la saisie manuelleNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées.
UPaiement imprévu (MIT)UltérieureVendeurPas de saisie manuelle, le vendeur transmet les donnéesNonTransaction de commerce électronique utilisant des données de paiement sauvegardées ordinaires précédemment sauvegardées. Utilisé uniquement pour les paiements en une étape.

Ci-dessous sont présentés les paramètres du bloc clientBrowserInfo (données sur le navigateur du client).

ObligatoireNomTypeDescription
FacultatifuserAgentString [1..2048]Agent du navigateur.
FacultatifOSStringSystème d'exploitation.
FacultatifOSVersionStringVersion du système d'exploitation.
FacultatifbrowserAcceptHeaderString [1..2048]En-tête Accept, qui informe le serveur des formats (ou types MIME) pris en charge par le navigateur.
FacultatifbrowserIpAddressString [1..45]Adresse IP du navigateur.
FacultatifbrowserLanguageString [1..8]Langue du navigateur.
FacultatifbrowserTimeZoneStringFuseau horaire du navigateur.
FacultatifbrowserTimeZoneOffsetString [1..5]Décalage du fuseau horaire en minutes entre l'heure locale de l'utilisateur et UTC.
FacultatifcolorDepthString [1..2]Profondeur de couleur de l'écran, en bits.
FacultatiffingerprintStringEmpreinte du navigateur - identifiant numérique unique du navigateur.
FacultatifisMobileBooleanValeurs possibles : true ou false. Indicateur signalant qu'un appareil mobile est utilisé.
FacultatifjavaEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge java est activée dans le navigateur.
FacultatifjavascriptEnabledBooleanValeurs possibles : true ou false. Indicateur signalant que la prise en charge javascript est activée dans le navigateur.
FacultatifpluginsStringListe des plugins utilisés dans le navigateur, séparés par des virgules.
FacultatifscreenHeightInteger [1..6]Hauteur de l'écran en pixels.
FacultatifscreenWidthInteger [1..6]Largeur de l'écran en pixels.
FacultatifscreenPrintStringDonnées sur les paramètres d'impression du navigateur, incluant la résolution, la profondeur de couleur, la densité de pixels.

Exemple du bloc clientBrowserInfo :

"clientBrowserInfo":
    {
		"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
		"fingerprint":850891523,
		"OS":"Windows",
		"OSVersion":"10",
		"isMobile":false,
		"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
		"colorDepth":24,
		"screenHeight":"864",
		"screenWidth":"1536",
		"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
		"javaEnabled":false,
		"javascriptEnabled":true,
		"browserLanguage":"it-IT",
		"browserTimeZone":"Europe/Rome",
		"browserTimeZoneOffset":-120,
		"browserAcceptHeader":"gzip",
        "browserIpAddress":"x.x.x.x"
	}

Description des paramètres de l'objet marketplace :

ObligatoireNomTypeDescription
ObligatoiremarketplaceIdString [1..11]Identifiant de la marketplace dans la banque acquéreur.
ConditionforeignRetailerIndicatorBooleanIndique si la marketplace a des détaillants étrangers (marchands filiales). Si le bloc retailers est transmis dans l'objet marketplace, ce paramètre n'est pas obligatoire à transmettre, sinon – obligatoire.
FacultatifretailersArray of objectsTableau des détaillants (vendeurs enfants de la marketplace). Contient seulement 1 élément. Les éléments imbriqués sont décrits ci-dessous.

Description des paramètres de l'objet qui est un élément du tableau retailers.

Caractère obligatoireNomTypeDescription
ObligatoireforeignRetailerIndicatorBooleanDétermine si le détaillant est étranger.

Exemple d'objet marketplace :

"marketplace": {
    "marketplaceId": "MKT12345678",
    "foreignRetailerIndicator": true,
    "retailers": [
        {
            "foreignRetailerIndicator": false
        }
    ]
}

Paramètres de réponse

Caractère obligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatifredirectString [1..512]Ce paramètre est renvoyé si le paiement a réussi et qu'aucune vérification de la carte pour l'implication dans 3-D Secure n'a été effectuée pour le paiement. Les vendeurs peuvent l'utiliser s'ils souhaitent rediriger l'utilisateur vers la page de la passerelle de paiement. Si le vendeur utilise sa propre page, cette valeur peut être ignorée.
FacultatifinfoStringEn cas de réponse réussie. Résultat de la tentative de paiement. Ci-dessous sont présentées les valeurs possibles.
  • Votre paiement est traité, redirection en cours...
  • Opération refusée. Vérifiez les données saisies, la suffisance des fonds sur la carte et répétez l'opération. Redirection en cours...
  • Désolé, le paiement ne peut pas être effectué. Redirection en cours...
  • Opération refusée. Contactez le magasin. Redirection en cours...
  • Opération refusée. Contactez la banque qui a émis la carte. Redirection en cours...
  • Opération impossible. L'authentification du porteur de carte s'est terminée sans succès. Redirection en cours...
  • Pas de connexion avec la banque. Répétez plus tard. Redirection en cours...
  • Délai d'attente de saisie des données expiré. Redirection en cours...
  • Aucune réponse reçue de la banque. Répétez plus tard. Redirection en cours...
FacultatiferrorString [1..512]Message d'erreur (si une erreur a été retournée dans la réponse) dans la langue transmise dans la requête.
FacultatifprocessingErrorTypeStringType d'erreur de processing. Transmis si l'erreur se produit du côté du processing et non dans la passerelle de paiement, tandis que le nombre de tentatives de paiement n'est pas dépassé et qu'il n'y a pas encore eu de redirection vers la page finale.
FacultatifdisplayErrorMessageStringMessage d'erreur affiché.
Facultatif*errorTypeNameStringParamètre nécessaire à la page frontend pour déterminer le type d'erreur. Obligatoire pour les paiements échoués.
FacultatifacsUrlString [1..512]URL pour la redirection vers ACS. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Pour plus de détails, voir Redirection vers ACS.
FacultatifpaReqString [1..255]PAReq (Payment Authentication Request) — message qui doit être envoyé à ACS avec la redirection. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est nécessaire. Ce message contient des données en encodage Base64, nécessaires pour l'authentification du porteur de carte. Pour plus de détails, voir Redirection vers ACS.
FacultatiftermUrlString [1..512]En cas de réponse réussie lors du paiement 3D-Secure. Il s'agit de l'URL vers laquelle l'ACS redirige le porteur de carte après authentification. Pour plus de détails, voir Redirection vers ACS.
FacultatifbindingIdString [1..255]Identifiant de liaison créé lors du paiement de la commande ou utilisé pour le paiement. Présent uniquement si le marchand a l'autorisation de travailler avec les liaisons.

L'élément payerData contient les paramètres suivants.

Caractère obligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/paymentOrderBinding.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data mdOrder=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
  --data bindingId=01491394-63a6-7d45-a88f-7bce00a7d8c0 \
  --data cvc=123 \
  --data tii=F \
  --data language=en

Exemple de réponse réussie pour un paiement SSL (sans 3-D Secure)

{
  "redirect": "https://dev.bpcbt.com/payment/merchants/temp/finish.html?orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0&lang=en",
  "info": "Your order is proceeded, redirecting...",
  "errorCode": 0
}

Exemple de réponse réussie pour un paiement 3D-Secure

{
  "info": "Your order is proceeded, redirecting...",
  "errorCode": 0,
  "acsUrl": "https://theacsserver.com/acs/auth/start.do",
  "paReq": "eJxVUu9vgjAQ/...4BaHYvAI=",
  "termUrl": "https://dev.bpcbt.com/payment/rest/finish3ds.do?lang=en"
}

Exemple de réponse avec erreur

{
  "error": "[clientId] is empty",
  "errorCode": 5,
  "is3DSVer2": false,
  "errorMessage": "[clientId] is empty"
}

Obtention des liaisons

Pour obtenir la liste des liaisons client, utilisez la requête https://dev.bpcbt.com/payment/rest/getBindings.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de la requête

ObligatoireNomTypeDescription
ObligatoireclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
ObligatoireuserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
FacultatifbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
FacultatifbindingTypeStringType de liaison attendu dans la réponse (s'il n'est pas spécifié, tous les types sont retournés). Valeurs possibles :
  • C – liaison normale.
  • R – liaison récurrente.
  • I - liaison pour paiement échelonné.
FacultatifshowExpiredBooleanParamètre true/false déterminant s'il faut afficher les liaisons avec les cartes expirées. Valeur par défaut : false.
FacultatifmerchantLoginString [1..255]Pour obtenir la liste des identifiants sauvegardés par le client d'un autre marchand, indiquez dans ce paramètre le login du marchand (pour le compte API).
Peut être utilisé seulement si vous avez l'autorisation de consulter les transactions d'autres vendeurs ou si le vendeur indiqué est votre vendeur filial. Vous et le vendeur indiqué devez avoir l'autorisation de travailler avec les identifiants sauvegardés (liaisons).

Paramètres de la réponse

ObligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatifbindingsObjectÉlément avec des blocs contenant les paramètres de liaisons. Voir la description ci-dessous.

L'élément bindings contient les paramètres suivants.

ObligatoireNomTypeDescription
FacultatifmaskedPanString [1..19]Numéro de carte masqué utilisé pour le paiement. Contient les 6 premiers et les 4 derniers chiffres réels du numéro de carte au format XXXXXX**XXXX.
FacultatifpaymentWayStringMéthode d'exécution du paiement (paiement avec saisie des données de carte, paiement par liaison, etc.). Les valeurs supplémentaires possibles du paramètre sont présentées ci-dessous
ObligatoirebindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
ObligatoireexpiryDateString [6]Date d'expiration de la carte dans le format suivant : YYYYMM.
FacultatifbindingCategoryStringDestination de la liaison attendue en réponse. Valeurs possibles : COMMON, INSTALLMENT, RECURRENT.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatifdisplayLabelString [1..16]Les 4 derniers chiffres du PAN original avant tokenisation.
FacultatifpaymentSystemStringNom du système de paiement international. Les valeurs suivantes sont possibles :
  • VISA
  • MASTERCARD
  • AMEX
  • JCB
  • CUP

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/getBindings.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data clientId=dos-clientos \
  --data bindingType=C

Exemple de réponse réussie

{
"errorCode":"0",
"errorMessage":"Success",
"bindings": [
    {
            "bindingId": "44779116-41a5-7798-b072-c0a30760e2b0",
            "maskedPan": "411111**1111",
            "expiryDate": "203412",
            "paymentWay": "TOKEN_PAY",
            "paymentSystem": "CARD",
            "displayLabel": "XXXXXXXXXXXX1111",
            "bindingCategory": "COMMON"
        }
    ]
 }

Obtention des liaisons par numéro de carte

Pour obtenir la liste de toutes les liaisons de carte bancaire, la requête https://dev.bpcbt.com/payment/rest/getBindingsByCardOrId.do est utilisée.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de requête

ObligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ConditionpanString [1..19]Numéro de carte de paiement (obligatoire, si bindinId n'est pas transmis). La valeur pan remplace la valeur bindingId.
ConditionbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
FacultatifshowExpiredBooleanParamètre true/false déterminant s'il faut afficher les liaisons avec les cartes expirées. Valeur par défaut : false.

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatifbindingsObjectÉlément avec des blocs contenant les paramètres des liaisons : bindingId, maskedPan, expiryDate, clientId
FacultatifbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
FacultatifmaskedPanString [1..19]Numéro de carte masqué utilisé pour le paiement. Contient les 6 premiers et les 4 derniers chiffres réels du numéro de carte au format XXXXXX**XXXX.
FacultatifexpiryDateString [6]Date d'expiration de la carte dans le format suivant : YYYYMM.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/getBindingsByCardOrId.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data pan=4000001111111118

Exemple de requête réussie

{
"errorCode":"0",
"errorMessage":"Success",
"bindings": [
    {
        "bindingId":"69d6a793-afb5-79be-8ce7-63ff00a8656a",
        "maskedPan":"400000**1118",
        "expiryDate":"203012",
        "clientId":"12"
        }
    {
        "bindingId":"6a8c0738-cc88-4200-acf6-afc264d66cb0",
        "maskedPan":"400000**1118",
        "expiryDate":"203012",
        "clientId":"13"
        }
    ]
 }

Désactivation de la liaison

Pour désactiver une liaison existante, utilisez la requête https://dev.bpcbt.com/payment/rest/unBindCard.do.


Lors de l'exécution de la requête, il faut utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de la requête

ObligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoirebindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.

Paramètres de la réponse

ObligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/unBindCard.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data bindingId=fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc

Exemple de réponse (erreur)

{
"errorCode":"2",
"errorMessage":"La liaison n'est pas active",
}

Activation de la liaison

La requête utilisée pour activer une liaison existante qui a été désactivée s'appelle https://dev.bpcbt.com/payment/rest/bindCard.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de la requête

ObligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoirebindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.

Paramètres de la réponse

ObligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/bindCard.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data bindingId=fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc

Exemple de réponse (erreur)

{
  "errorCode":"2",
  "errorMessage":"Binging is active",
}

Prolongation de la durée de validité des données de paiement sauvegardées

La requête utilisée pour prolonger la durée de validité d'une liaison existante s'appelle https://dev.bpcbt.com/payment/rest/extendBinding.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de la requête

ObligationNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoirebindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
ObligatoirenewExpiryInteger [6]Nouvelle date (année et mois) d'expiration au format YYYYMM.
ObligatoirelanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.

Paramètres de la réponse

ObligationNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/extendBinding.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data bindingId=fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc
  --data newExpiry=202212
  --data language=en

Exemple de réponse

{
"errorCode":"0",
"errorMessage":"Success",
}

Paiement récurrent

Pour effectuer un paiement récurrent, utilisez la requête https://dev.bpcbt.com/payment/recurrentPayment.do. La requête est utilisée pour l'enregistrement et le paiement de la commande.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de la requête

Caractère obligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatiffeeInputInteger [0..8]Taille de la commission en unités minimales de la devise. La fonctionnalité doit être activée au niveau du vendeur dans la passerelle.
ObligatoirebindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatifpreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
FacultatiffeaturesStringFonctions de commande. Pour spécifier plusieurs fonctions, utilisez ce paramètre plusieurs fois dans une seule requête. Voici les valeurs possibles.
  • VERIFY - si cette valeur est transmise dans la requête de création de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la requête, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lire plus en détail ici.
  • FORCE_TDS - Traitement forcé du paiement en utilisant 3-D Secure. Si la carte ne supporte pas 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Traitement forcé du paiement via SSL (sans utilisation de 3-D Secure).
  • FORCE_FULL_TDS - Après l'authentification avec 3-D Secure le statut PaRes doit être seulement Y, ce qui garantit l'authentification réussie de l'utilisateur. Sinon la transaction n'aboutira pas.
  • FORCE_CREATE_BINDING - la transmission de cette valeur dans la requête de création de commande crée forcément une liaison. Cette fonctionnalité doit être activée au niveau du vendeur dans la passerelle. Cette valeur ne peut pas être transmise dans une requête avec un bindingId existant ou bindingNotNeeded = true (causera une erreur de validation). Quand cette fonction est transmise, le paramètre clientId doit également être transmis. Si dans le bloc features les deux valeurs FORCE_CREATE_BINDING et VERIFY sont transmises, alors la commande sera créée SEULEMENT pour créer une liaison (sans paiement).
  • PARTIAL_AUTHORIZATION - l'autorisation partielle est disponible pour la commande. Voir plus en détail ici.
  • FORCE_PAYMENT_WAY - traitement forcé du paiement par le moyen de paiement spécifié dans jsonParams dans le paramètre paymentWay. Pour effectuer de tels paiements le marchand doit avoir les autorisations correspondantes.
    À l'heure actuelle utilisé pour le traitement forcé du paiement MOTO. Pour cela il est nécessaire de transmettre également dans jsonParams le paramètre paymentWay avec la valeur CARD_MOTO.
FacultatifadditionalParametersObjectParamètres supplémentaires de la commande, qui sont stockés dans l'espace personnel du vendeur pour consultation ultérieure. Chaque nouvelle paire de nom de paramètre et sa valeur doit être séparée par une virgule. Ci-dessous un exemple d'utilisation.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de pré-commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Paramètres de réponse

Caractère obligatoireNomTypeDescription
ObligatoiresuccessBooleanParamètre principal qui indique que la demande a été traitée avec succès. Les valeurs suivantes sont disponibles :
  • true - demande traitée avec succès ;
  • false - demande échouée.

Notez que la valeur true signifie que la demande a été traitée, et non que la commande a été payée.
Des informations plus détaillées sur la façon de savoir si le paiement a réussi ou non sont disponibles ici.
ConditionneldataN/ACe paramètre est retourné uniquement en cas de traitement réussi du paiement. Voir description ci-dessous.
ConditionnelerrorN/ACe paramètre est retourné uniquement en cas d'erreur de paiement. Voir description ci-dessous.

L'élément payerData contient les paramètres suivants.

Caractère obligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Le bloc data contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoireorderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.

Le bloc error contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoirecodeString [1..3]Code comme paramètre informatif, signalant une erreur.
ObligatoiredescriptionString [1..598]Explication technique détaillée de l'erreur - le contenu de ce paramètre n'est pas destiné à être affiché à l'utilisateur.
ObligatoiremessageString [1..512]Paramètre informatif constituant la description de l'erreur pour l'affichage à l'utilisateur. Le paramètre peut varier, il ne faut donc pas se référer explicitement à ses valeurs dans le code.

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/payment/recurrentPayment.do \
--header 'Content-Type: application/json' \
--data-raw '{
  "userName" : "test_user",
  "password" : "test_user_password",
  "orderNumber" : "UAF-203974-DE-12",
  "language" : "EN",
  "bindingId": "bindingId",
  "amount" : 1200,
  "currency" : "978",
  "description" : "Test description",
  "additionalParameters" : {
    "firstParamName" : "firstParamValue",
    "secondParamName" : "secondParamValue"
    "email" : "email@email.com"
  }
}'

Exemple de réponse - Succès

{
    "success": true,
    "data": {
        "orderId": "f7beebe4-7c9a-43cf-8e26-67ab741f9b9e"
    },
    "orderStatus": {
        "errorCode": "0",
        "orderNumber": "UAF-203974-DE-12",
        "orderStatus": 2,
        "actionCode": 0,
        "actionCodeDescription": "",
        "amount": 12300,
        "currency": "978",
        "date": 1491333938243,
        "orderDescription": "Test description",
        "merchantOrderParams": [
            {
                "name": "firstParamName",
                "value": "firstParamValue"
            },
            {
                "name": "secondParamName",
                "value": "secondParamValue"
            }
        ],
        "attributes": [],
        "cardAuthInfo": {
            "expiration": "203012",
            "cardholderName": "TEST CARDHOLDER",
            "approvalCode": "12345678",
            "paymentSystem": "VISA",
            "pan": "6777770000**0006"
        },
        "authDateTime": 1491333939454,
        "terminalId": "11111",
        "authRefNum": "111111111111",
        "paymentAmountInfo": {
            "paymentState": "DEPOSITED",
            "approvedAmount": 12300,
            "depositedAmount": 12300,
            "refundedAmount": 0
        },
        "bankInfo": {
            "bankCountryName": "<unknown>"
        },
        "operations": [
            {
                "amount": 12300,
                "cardHolder": "TEST CARDHOLDER",
                "authCode": "123456"
            }
        ]
    }
}

Erreur

{
  "error": {
    "code": "10",
    "description": "Order with this number is already registered in the system.",
    "message": "Order with this number is already registered in the system."
  },
  "success": false
}

Paiement par acomptes

Pour effectuer un paiement par acomptes, utilisez la requête https://dev.bpcbt.com/payment/installmentPayment.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de la requête

Caractère obligatoireNomTypeDescription
ConditionneluserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ConditionnelpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
ObligatoireorderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
ObligatoirebindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatifadditionalParametersObjectParamètres supplémentaires de la commande, qui sont stockés dans l'espace personnel du vendeur pour consultation ultérieure. Chaque nouvelle paire de nom de paramètre et sa valeur doit être séparée par une virgule. Ci-dessous un exemple d'utilisation.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
ObligatoirepreAuthBooleanParamètre déterminant la nécessité d'une autorisation préalable (blocage des fonds sur le compte client avant leur débit). Les valeurs suivantes sont disponibles :
  • true - paiement en deux étapes activé ;
  • false - paiement en une étape activé (l'argent est débité immédiatement).
Si le paramètre est absent, un paiement en une étape est effectué.
FacultatifautocompletionDateString [19]Date et heure de l'achèvement automatique du paiement en deux étapes dans le format suivant : 2025-12-29T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service d'assistance technique.
FacultatifautoReverseDateString [19]Date et heure d'annulation automatique du paiement en deux étapes dans le format suivant : 2025-06-23T13:02:51. Fuseau horaire utilisé : UTC+0. Pour activer l'envoi de ce champ vers le système de traitement, contactez le service de support technique.
FacultatiffeaturesStringFonctions de commande. Pour spécifier plusieurs fonctions, utilisez ce paramètre plusieurs fois dans une seule requête. Voici les valeurs possibles.
  • VERIFY - si cette valeur est transmise dans la requête de création de commande, le propriétaire de la carte sera vérifié, cependant aucun débit de fonds n'aura lieu, donc dans ce cas le paramètre amount peut avoir la valeur 0. La vérification permet de s'assurer que la carte est entre les mains du propriétaire, et par la suite de débiter des fonds de cette carte, sans recourir à la vérification des données d'authentification (CVC, 3D-Secure) lors des paiements ultérieurs. Même si le montant du paiement est transmis dans la requête, il ne sera pas débité du compte client lors de la transmission de la valeur VERIFY. Cette valeur peut également être utilisée pour créer une liaison — dans ce cas le paramètre clientId doit également être transmis. Lire plus en détail ici.
  • FORCE_TDS - Traitement forcé du paiement en utilisant 3-D Secure. Si la carte ne supporte pas 3-D Secure, la transaction n'aboutira pas.
  • FORCE_SSL - Traitement forcé du paiement via SSL (sans utilisation de 3-D Secure).
  • FORCE_FULL_TDS - Après l'authentification avec 3-D Secure le statut PaRes doit être seulement Y, ce qui garantit l'authentification réussie de l'utilisateur. Sinon la transaction n'aboutira pas.
  • FORCE_CREATE_BINDING - la transmission de cette valeur dans la requête de création de commande crée forcément une liaison. Cette fonctionnalité doit être activée au niveau du vendeur dans la passerelle. Cette valeur ne peut pas être transmise dans une requête avec un bindingId existant ou bindingNotNeeded = true (causera une erreur de validation). Quand cette fonction est transmise, le paramètre clientId doit également être transmis. Si dans le bloc features les deux valeurs FORCE_CREATE_BINDING et VERIFY sont transmises, alors la commande sera créée SEULEMENT pour créer une liaison (sans paiement).
  • PARTIAL_AUTHORIZATION - l'autorisation partielle est disponible pour la commande. Voir plus en détail ici.
  • FORCE_PAYMENT_WAY - traitement forcé du paiement par le moyen de paiement spécifié dans jsonParams dans le paramètre paymentWay. Pour effectuer de tels paiements le marchand doit avoir les autorisations correspondantes.
    À l'heure actuelle utilisé pour le traitement forcé du paiement MOTO. Pour cela il est nécessaire de transmettre également dans jsonParams le paramètre paymentWay avec la valeur CARD_MOTO.
ConditionneltokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de pré-commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Paramètres de réponse

Caractère obligatoireNomTypeDescription
FacultatiforderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
ObligatoireerrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
ConditionnelorderStatusObjectContient les paramètres de statut de la commande et n'est renvoyé que si la passerelle de paiement a reconnu tous les paramètres de la requête comme corrects. Voir la description ci-dessous.

Le bloc orderStatus contient les éléments suivants.

Caractère obligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatiforderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatiforderStatusIntegerLa valeur de ce paramètre indique le statut de la commande dans la passerelle de paiement. Absent si la commande n'a pas été trouvée. Ci-dessous la liste des valeurs disponibles :
  • 0 - commande enregistrée mais non payée ;
  • 1 - commande seulement autorisée et pas encore finalisée (pour les paiements en deux étapes) ;
  • 2 - commande autorisée et finalisée ;
  • 3 - autorisation annulée ;
  • 4 - une opération de remboursement a été effectuée sur la transaction ;
  • 5 - autorisation initiée via ACS de la banque émettrice ;
  • 6 - autorisation refusée ;
  • 7 - attente de paiement de la commande ;
  • 8 - finalisation intermédiaire pour finalisation partielle multiple.
FacultatifactionCodeStringCode de réponse du traitement de la banque. Contient une valeur numérique. Voir la liste des codes de réponse ici.
FacultatifactionCodeDescriptionString [1..512]Description de actionCode, retournée par le système de traitement de la banque.
FacultatifamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifdateIntegerDate d'enregistrement de la commande comme nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
FacultatifipString [1..39]Adresse IP du payeur. IPv6 est supporté dans toutes les requêtes (jusqu'à 39 caractères).
FacultatifmerchantOrderParamsN/ASection avec des attributs dans laquelle sont transmis des paramètres supplémentaires du marchand. Voir la description ci-dessous.
FacultatifattributesObjectAttributs de la commande dans le système de paiement (numéro de commande). Voir la description ci-dessous.
FacultatifcardAuthInfoObjectInformations sur la carte de paiement de l'acheteur. Voir la description ci-dessous.
FacultatifauthDateTimeIntegerDate et heure d'autorisation, affichées comme le nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps 24 février 2025, 10:25:20 (UTC)).
FacultatifterminalIdString [1..10]Identifiant du terminal dans le système qui traite le paiement.
FacultatifauthRefNumString [1..24]Numéro d'autorisation du paiement, qui lui est attribué lors de l'enregistrement du paiement.
FacultatifpaymentAmountInfoObjectParamètre contenant des paramètres imbriqués avec des informations sur les montants de confirmation, de débit et de remboursement. Voir la description ci-dessous.
FacultatifbankInfoObjectContient le paramètre imbriqué bankCountryName. Voir la description ci-dessous.
FacultatifbindingInfoObjectObjet contenant les informations sur les données de paiement sauvegardées utilisées pour effectuer le paiement. Voir la description ci-dessous.
FacultatifoperationsObjectObjet contenant les informations sur les opérations. Voir la description ci-dessous.

L'élément payerData contient les paramètres suivants.

Caractère obligatoireNomTypeDescription
FacultatifpaymentAccountReferenceString [1..29]Numéro unique du compte client, reliant tous ses moyens de paiement dans le cadre du SPI (cartes et jetons).

Le bloc merchantOrderParams contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoirenameString [1..255]Nom du paramètre supplémentaire du marchand.
ObligatoirevalueString [1..1024]Valeur du paramètre supplémentaire du vendeur - jusqu'à 1024 caractères.

Le bloc attributes contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoirenameString [1..255]Nom du paramètre supplémentaire.
ObligatoirevalueString [1..1024]Valeur du paramètre supplémentaire - jusqu'à 1024 caractères.

Le bloc cardAuthInfo contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoireexpirationInteger [6]Date d'expiration de la carte au format suivant : YYYYMM.
ObligatoirecardholderNameString [1..26]Nom du porteur de carte en lettres latines. Caractères autorisés : lettres latines, point, espace.
ObligatoireapprovalCodeString [6]Code d'autorisation du système de paiement international. Ce champ a une longueur fixe (six caractères) et peut contenir des chiffres et des lettres latines.
ObligatoirepanString [1..19]DPAN masqué : numéro lié à l'appareil mobile de l'acheteur et remplissant les fonctions de numéro de carte de paiement dans le système Apple Pay.
ObligatoiremaskedPanString [1..19]Numéro de carte masqué utilisé pour le paiement. Contient les 6 premiers et les 4 derniers chiffres réels du numéro de carte au format XXXXXX**XXXX.
ObligatoirepaymentSystemStringNom du système de paiement international. Les valeurs suivantes sont possibles :
  • VISA
  • MASTERCARD
  • AMEX
  • JCB
  • CUP

Le bloc paymentAmountInfo contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoirepaymentStateStringÉtat de la commande, le paramètre peut prendre les valeurs suivantes :
  • CREATED - commande créée (mais non payée) ;
  • APPROVED - commande approuvée (les fonds sur le compte de l'acheteur sont bloqués) ;
  • DEPOSITED - commande terminée (l'argent est débité du compte de l'acheteur) ;
  • DECLINED - commande rejetée ;
  • REVERSED - commande rejetée ;
  • REFUNDED - remboursement des fonds.
ObligatoireapprovedAmountInteger [0..12]Montant en unités minimales de devise (par exemple, en centimes) qui a été bloqué sur le compte de l'acheteur. Utilisé uniquement dans les paiements en deux étapes.
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
ObligatoiredepositedAmountInteger [1..12]Montant du débit en unités minimales de devise (par exemple, en centimes).
En cas d'autorisation partielle, ce montant peut être inférieur au montant demandé lors de l'enregistrement de la commande.
ObligatoirerefundedAmountInteger [1..12]Montant du remboursement dans les unités minimales de la devise.
ObligatoiretotalAmountInteger [1..20]Montant de la commande plus commission, si elle existe.

Le bloc bankInfo contient les éléments suivants.

Caractère obligatoireNomTypeDescription
ObligatoirebankCountryNameString [1..160]Pays de la banque émettrice.

L'élément bindingInfo contient les paramètres suivants.

NomTypeObligatoireDescription
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatifbindingIdString [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. Si ce paramètre est transmis dans cette requête, cela signifie que :
  • Cette commande ne peut être payée qu'à l'aide de la liaison ;
  • Le payeur sera redirigé vers la page de paiement où seule la saisie du CVC est requise.

L'élément operations contient les paramètres suivants.

NomTypeObligatoireDescription
FacultatifamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcardHolderString [1..26]Nom du titulaire de la carte en lettres latines. Ce paramètre n'est transmis qu'après le paiement de la commande.
FacultatifauthCodeInteger [6]Paramètre obsolète (non utilisé). Sa valeur est toujours 2 indépendamment du statut de la commande et du code d'autorisation du système de traitement.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/installmentPayment.do \
  --header 'Content-Type: application/json' \
  --data '{
  "userName": "test_user",
  "password": "test_user_password",
  "orderNumber": "UAF-203974-DE-12",
  "language": "EN",
  "bindingId": "8aa4fa8b-4d8a-76ca-b314-7bcc00b4f820",
  "amount": 12300,
  "currency": "978",
  "description" : "Test description",
  "additionalParameters": {
    "firstParamName": "firstParamValue",
    "secondParamName": "secondParamValue"
  }
 }'

Exemples de réponse

{
  "errorCode": 0,
  "errorMessage": "Success",
  "orderId": "0e441115-f3bc-711c-8827-2fdc00b4f820",
  "orderStatus": {
    "errorCode": "0",
    "orderNumber": "7033",
    "orderStatus": 2,
    "actionCode": 0,
    "actionCodeDescription": "",
    "amount": 12300,
    "currency": "978",
    "date": 1618340470944,
    "orderDescription": "Test description",
    "merchantOrderParams": [
      {
        "name": "firstParamName",
        "value": "firstParamValue"
      },
      {
        "name": "secondParamName",
        "value": "secondParamValue"
      }
    ],
    "transactionAttributes": [],
    "attributes": [
      {
        "name": "mdOrder",
        "value": "0e441115-f3bc-711c-8827-2fdc00b4f820"
      }
    ],
    "cardAuthInfo": {
      "maskedPan": "400000**1118",
      "expiration": "203012",
      "cardholderName": "TEST CARDHOLDER",
      "approvalCode": "123456",
      "paymentSystem": "VISA",
      "product": "visa-product",
      "secureAuthInfo": {
        "eci": 7
      },
      "pan": "400000**1118"
    },
    "bindingInfo": {
      "clientId": "TEST CARDHOLDER",
      "bindingId": "8aa4fa8b-4d8a-76ca-b314-7bcc00b4f820"
    },
    "authDateTime": 1618340471076,
    "authRefNum": "111111111111",
    "paymentAmountInfo": {
      "paymentState": "DEPOSITED",
      "approvedAmount": 12300,
      "depositedAmount": 12300,
      "refundedAmount": 0,
      "totalAmount": 12300
    },
    "bankInfo": {
      "bankName": "ES TEST BANK",
      "bankCountryCode": "ES",
      "bankCountryName": "Spain"
    },
    "operations": [
      {
        "amount": 12300,
        "cardHolder": "TEST CARDHOLDER",
        "authCode": "123456"
      }
    ]
  },
  "error": false
}

Création de données de paiement sauvegardées sans paiement

Pour créer des données de paiement sauvegardées sans effectuer de paiement, utilisez la requête https://dev.bpcbt.com/payment/rest/createBindingNoPayment.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de la requête

ObligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoireclientIdString [0..255]Numéro du client (ID) dans le système du marchand. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons.
FacultatifbindingStrengthStringType de paiement sur la base duquel les données de paiement sauvegardées ont été créées. Utilisé pour la migration des données de paiement sauvegardées depuis le système du marchand.
Valeurs possibles :
  • TDS - données de paiement sauvegardées créées sur la base d'un paiement 3DS complet (ECI=02 ou 05)
  • SSL - données de paiement sauvegardées créées sur la base d'un paiement SSL (ECI=07)
  • TDS_SSL - données de paiement sauvegardées sur la base d'un paiement SSL avec tentative d'authentification 3DS (ECI=01 ou 06)
  • NO_PAYMENT - données de paiement sauvegardées créées sans paiement (valeur par défaut)

Pour toutes les valeurs différentes de NO_PAYMENT il est nécessaire de transmettre des paramètres supplémentaires :
  • initNetworkReferenceNumber - identifiant du paiement d'initiation pour les données de paiement sauvegardées
  • networkReferenceNumber - identifiant du dernier paiement par données de paiement sauvegardées
ObligatoirecardholderNameString [1..26]Nom du porteur de carte en lettres latines. Caractères autorisés : lettres latines, point, espace.
ObligatoireexpiryDateString [6]Date d'expiration de la carte dans le format suivant : YYYYMM.
ObligatoirepanString [1..19]Numéro de carte de paiement
FacultatifadditionalParametersObjectParamètres supplémentaires de la commande, qui sont stockés dans l'espace personnel du vendeur pour consultation ultérieure. Chaque nouvelle paire de nom de paramètre et sa valeur doit être séparée par une virgule. Ci-dessous un exemple d'utilisation.
{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
FacultatifmerchantLoginString [1..255]Pour créer des données de paiement sauvegardées pour un autre marchand, spécifiez son login (pour le compte API) dans ce paramètre.
Ne peut être utilisé que si vous avez l'autorisation de visualiser les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filiale.
FacultatifemailString [1..40]Adresse électronique du payeur.
FacultatifphoneString [7..15]Numéro de téléphone du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Paramètres de la réponse

ObligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatiferrorBooleanDrapeau indiquant qu'une erreur a été renvoyée dans la réponse. Valeurs autorisées : true ou false. Prend la valeur true si errorCode contient une valeur différente de 0.
FacultatifbindingIdString [1..255]Identifiant de liaison créé lors du paiement de la commande ou utilisé pour le paiement. Présent uniquement si le marchand a l'autorisation de travailler avec les liaisons.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
FacultatifcardholderNameString [1..26]Nom du porteur de carte en lettres latines. Caractères autorisés : lettres latines, point, espace.
FacultatifexpiryDateString [6]Date d'expiration de la carte dans le format suivant : YYYYMM.
FacultatifmaskedPanString [1..19]Numéro de carte masqué utilisé pour le paiement. Contient les 6 premiers et les 4 derniers chiffres réels du numéro de carte au format XXXXXX**XXXX.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/createBindingNoPayment.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data clientId=159753456
  --data pan=5555555555555599
  --data expiryDate=203412
  --data cardholderName=TEST CARDHOLDER

Exemple de requête pour la migration des données de paiement sauvegardées

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/createBindingNoPayment.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data merchantLogin=some_merchant \
  --data pan=5555555555555599 \
  --data expiryDate=203412 \
  --data 'cardholderName=TEST CARDHOLDER ' \
  --data clientId=client_id \
  --data bindingStrength=TDS \
  --data email=email@test.com \
  --data 'phone=+995555000000' \
  --data 'additionalParameters={
	"networkReferenceNumber": "network_reference_number",
	"initNetworkReferenceNumber": "init_network_reference_number"
}'

Exemple de réponse

{
  "maskedPan": "555555**5599",
  "expiryDate": "203412",
  "cardholderName": "TEST CARDHOLDER",
  "clientId": "159753456",
  "bindingId": "47dbe208-e531-4997-9c36-25a5707d3cb9",
  "errorCode": 0,
  "error": false
}

3DS

Finalisation du paiement 3DS2 via API

Pour finaliser la commande 3DS2 via API, la méthode https://dev.bpcbt.com/payment/rest/finish3dsVer2Payment.do est utilisée.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de la requête

Caractère obligatoireNomTypeDescription
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoirethreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
Caractère obligatoireNomTypeDescription
FacultatifthreeDSVer2MdOrderString [1..36]Numéro de commande qui a été enregistré dans la première partie de la demande dans le cadre de l'opération 3DS2. Obligatoire pour l'authentification 3DS.
Si ce paramètre est présent dans la demande, alors mdOrder est utilisé, qui est transmis dans le présent paramètre. Dans ce cas, l'enregistrement de la commande n'a pas lieu, mais le paiement de la commande se produit immédiatement.
Ce paramètre est transmis uniquement lors de l'utilisation des méthodes de paiement instantané, c'est-à-dire, lorsque la commande est enregistrée et payée dans le cadre d'une seule demande.

Paramètres de la réponse

Caractère obligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
ObligatoireerrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatifredirectString [1..512]Ce paramètre est renvoyé si le paiement a réussi et qu'aucune vérification de la carte pour l'implication dans 3-D Secure n'a été effectuée pour le paiement. Les vendeurs peuvent l'utiliser s'ils souhaitent rediriger l'utilisateur vers la page de la passerelle de paiement. Si le vendeur utilise sa propre page, cette valeur peut être ignorée.
Facultatifis3DSVer2BooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient de 3DS2.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/finish3dsVer2Payment.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data threeDSServerTransId=33b17cb5-b4a5-48ac-a3b8-bc8d6d979a46 \
  --data userName=test_user \
  --data password=test_user_password \

Exemple de réponse

{
    "redirect": "http://test.com?orderId=f61e2a41-34b9-7a2d-b4d6-83ac00c305c8&lang=en",
    "errorCode": 0,
    "is3DSVer2": true
}

Exemple de requête avec le paramètre threeDSVer2MdOrder

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/finish3dsVer2Payment.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data threeDSServerTransId=33b17cb5-b4a5-48ac-a3b8-bc8d6d979a46 \
  --data threeDSVer2MdOrder=fbcb596f-25ba-70e7-a6cf-4fb100c305c8 \
  --data userName=test_user \
  --data password=test_user_password \

Exemple de réponse

{
    "redirect": "http://test.com?orderId=f61e2a41-34b9-7a2d-b4d6-83ac00c305c8&lang=en",
    "errorCode": 0,
    "is3DSVer2": true
}

Continuation du paiement pour 3DS2

Pour continuer le paiement avec l'autorisation 3DS2, utilisez la requête https://dev.bpcbt.com/payment/rest/3ds/continue.do.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de la requête

ObligatoireNomTypeDescription
ConditionuserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
ConditionpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
ConditiontokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.
ObligatoiremdOrderString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.

Paramètres de la réponse

ObligatoireNomTypeDescription
ObligatoireerrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatifinfoStringEn cas de réponse réussie. Résultat de la tentative de paiement. Ci-dessous sont présentées les valeurs possibles.
  • Votre paiement est traité, redirection en cours...
  • Opération refusée. Vérifiez les données saisies, la suffisance des fonds sur la carte et répétez l'opération. Redirection en cours...
  • Désolé, le paiement ne peut pas être effectué. Redirection en cours...
  • Opération refusée. Contactez le magasin. Redirection en cours...
  • Opération refusée. Contactez la banque qui a émis la carte. Redirection en cours...
  • Opération impossible. L'authentification du porteur de carte s'est terminée sans succès. Redirection en cours...
  • Pas de connexion avec la banque. Répétez plus tard. Redirection en cours...
  • Délai d'attente de saisie des données expiré. Redirection en cours...
  • Aucune réponse reçue de la banque. Répétez plus tard. Redirection en cours...
FacultatifredirectString [1..512]Ce paramètre est renvoyé si le paiement a réussi et qu'aucune vérification de la carte pour l'implication dans 3-D Secure n'a été effectuée pour le paiement. Les vendeurs peuvent l'utiliser s'ils souhaitent rediriger l'utilisateur vers la page de la passerelle de paiement. Si le vendeur utilise sa propre page, cette valeur peut être ignorée.
ConditionacsUrlString [1..512]URL pour la redirection vers ACS. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Pour plus de détails, voir Redirection vers ACS.
ConditionpackedCReqStringDonnées challenge request empaquetées. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Cette valeur doit être utilisée comme valeur du paramètre creq du lien vers ACS (acsUrl), pour rediriger le client vers ACS. Pour plus de détails, voir Redirection vers ACS.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/3ds/continue.do \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data mdOrder=eb708f0a-2683-7437-b458-f80400b40dc0 \
  --data userName=test-user \
  --data password=test-password

Exemple de réponse (3DS2 complet, requête réussie)

{
	"info": "Your order is proceeded, redirecting...",
	"errorCode": 0,
	"acsUrl": "https://bestbank.com/acs2/acs/creq",
	"is3DSVer2": true,
	"packedCReq": "eyJ0aHJlZURTU...6IjA1In0"
}

Exemple de réponse (frictionless 3DS2, requête réussie)

{
	"redirect": "https://merchant.com/returnUrl?orderId=9666296c-e4f1-7285-a57c-20eb00b40dc1&lang=en",
	"info": "Your order is proceeded, redirecting...",
	"errorCode": 0,
	"is3DSVer2": true
}

Exemple de réponse (erreur - statut inconnu dans ARes)

{
	"redirect": "https://merchant.com/failUrl?orderId=b69ac21f-6cd3-7e06-931d-d90100b40dc1&lang=en",
	"error": "Error 3-D Secure authorization.",
	"errorCode": 0,
	"is3DSVer2": true,
	"errorTypeName": "TDS_UNKNOWN_ARES_STATUS",
	"processingErrorType": "MANDATORY_3DSECURE",
	"errorMessage": "Error 3-D Secure authorization."
}

Exemple de réponse (erreur d'autorisation)

{
	"redirect": "https://merchant.com/failUrl?orderId=de056d10-f91d-7c91-a3de-559800b40dc1&lang=en",
	"error": "Operation declined. Please check the data and available balance of the account.",
	"errorCode": 0,
	"is3DSVer2": true,
	"errorTypeName": "DATA_INPUT_ERROR",
	"processingErrorType": "CLIENT_ERROR",
	"errorMessage": "Operation declined. Please check the data and available balance of the account."
}

Divers

Vérification de carte

La méthode https://dev.bpcbt.com/payment/rest/verifyCard.do est utilisée pour vérifier une carte. Aucun paiement n'est effectué, et la commande passe immédiatement au statut REVERSED.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/x-www-form-urlencoded

Paramètres de requête

ObligatoireNomTypeDescription
FacultatifuserNameString [1..50]Identifiant du compte API du marchand. Si un token public (paramètre token) est utilisé pour l'authentification lors de l'enregistrement au lieu de l'identifiant et du mot de passe, il n'est pas nécessaire de transmettre le mot de passe.
FacultatifpasswordString [1..30]Mot de passe du compte API du vendeur. Si pour l'authentification lors de l'enregistrement au lieu du login et du mot de passe un token ouvert est utilisé (paramètre token), il n'est pas nécessaire de transmettre le mot de passe.
FacultatiftokenString [1..256]Valeur utilisée pour l'authentification du vendeur lors de l'envoi de requêtes à la passerelle de paiement. Si vous transmettez ce paramètre, ne transmettez pas userName et password.
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifpanString [1..19]Numéro de carte de paiement
FacultatifcvcString [3]La transmission du paramètre est déterminée par le type de paiement :
  • la transmission cvc n'est pas prévue pour tous les paiements tokenisés ;
  • la transmission cvc n'est pas prévue pour les paiements MIT ;
  • la transmission cvc est obligatoire par défaut pour tous les autres types de paiements ; mais si l'autorisation Peut effectuer le paiement sans confirmation CVC est sélectionnée pour le marchand, alors dans ce cas la transmission cvc devient facultative.

Seuls les chiffres sont autorisés.
FacultatifexpiryInteger [6]Date d'expiration de la carte au format suivant : YYYYMM. Obligatoire si ni seToken, ni bindingId ne sont transmis.
FacultatifcardholderNameString [1..26]Nom du porteur de carte en lettres latines. Caractères autorisés : lettres latines, point, espace.
FacultatifbackUrlString [1..512]Adresse URL vers laquelle l'utilisateur sera redirigé en cas de paiement réussi.
Utilisez le chemin complet en spécifiant le protocole, par exemple https://test.com (et non test.com).
Sinon, l'utilisateur sera redirigé vers une adresse URL du type suivant : http://paymentGatewayURL/merchantURL
FacultatiffailUrlString [1..512]Adresse vers laquelle il faut rediriger l'utilisateur en cas de paiement échoué. L'adresse doit être spécifiée entièrement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatifdescriptionString [1..598]Description de la commande dans n'importe quel format.
Pour activer l'envoi de ce champ vers le système de traitement, contactez le support technique.
Il est interdit de transmettre des données personnelles ou des données de paiement (numéros de cartes, etc.) dans ce champ. Cette exigence est liée au fait que la description de la commande n'est masquée nulle part.
FacultatiflanguageString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
Langues prises en charge : en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv.
FacultatifreturnUrlString [1..512]Adresse vers laquelle l'utilisateur doit être redirigé en cas de paiement réussi. L'adresse doit être spécifiée complètement, y compris le protocole utilisé (par exemple, https://mybestmerchantreturnurl.com au lieu de mybestmerchantreturnurl.com). Sinon, l'utilisateur sera redirigé vers une adresse du type suivant : https://dev.bpcbt.com/payment/<merchant_address>.
FacultatifthreeDSServerTransIdString [1..36]Identifiant de transaction créé sur le serveur 3DS. Obligatoire pour l'authentification 3DS.
FacultatifthreeDSVer2FinishUrlString [1..512]URL vers laquelle le client doit être redirigé après l'authentification sur le serveur ACS.
ConditionnelthreeDSVer2MdOrderString [1..36]Numéro de commande qui a été enregistré dans la première partie de la demande dans le cadre de l'opération 3DS2. Obligatoire pour l'authentification 3DS.
Si ce paramètre est présent dans la demande, alors mdOrder est utilisé, qui est transmis dans le présent paramètre. Dans ce cas, l'enregistrement de la commande n'a pas lieu, mais le paiement de la commande se produit immédiatement.
Ce paramètre est transmis uniquement lors de l'utilisation des méthodes de paiement instantané, c'est-à-dire, lorsque la commande est enregistrée et payée dans le cadre d'une seule demande.
FacultatifthreeDSSDKBooleanValeurs possibles : true ou false Indicateur montrant que le paiement provient du 3DS SDK.
FacultatifbillingPayerDataObjectBloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire, si la fonction est activée pour le vendeur du côté de la Passerelle de paiement. Voir paramètres imbriqués.
FacultatifshippingPayerDataObjectObjet contenant les données de livraison au client. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifpreOrderPayerDataObjectObjet contenant les données de précommande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatiforderPayerDataObjectObjet contenant les données sur le payeur de la commande. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client. Voir paramètres imbriqués.
FacultatifbillingAndShippingAddressMatchIndicatorString [1]Indicateur de correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison. Ce paramètre est utilisé pour l'authentification 3DS ultérieure du client.
Valeurs possibles :
  • Y - correspondance entre l'adresse de facturation du porteur de carte et l'adresse de livraison ;
  • N - l'adresse de facturation du porteur de carte et l'adresse de livraison ne correspondent pas.

Ci-dessous sont présentés les paramètres du bloc billingPayerData (données sur l'adresse d'enregistrement du client).

Bloc avec les données d'enregistrement du client (adresse, code postal), nécessaire pour passer la vérification d'adresse dans le cadre des services AVS/AVV. Obligatoire si la fonction est activée pour le vendeur du côté de la Passerelle de paiement.

Description des paramètres de l'objet shippingPayerData :

Caractère obligatoireNomTypeDescription
FacultatifshippingCityString [1..50]Ville du client (à partir de l'adresse de livraison)
FacultatifshippingCountryString [1..50]Pays du client
FacultatifshippingAddressLine1String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine2String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingAddressLine3String [1..50]Adresse principale du client (à partir de l'adresse de livraison)
FacultatifshippingPostalCodeString [1..16]Code postal du client pour la livraison
FacultatifshippingStateString [1..50]État/région de l'acheteur (à partir de l'adresse de livraison)
FacultatifshippingMethodIndicatorInteger [2]Indicateur du mode de livraison.
Valeurs possibles :
  • 01 - livraison à l'adresse de paiement du porteur de carte.
  • 02 - livraison à une autre adresse, vérifiée par le Marchand.
  • 03 - livraison à une adresse différente de l'adresse principale du porteur de carte.
  • 04 - envoi en magasin/retrait en magasin (l'adresse du magasin doit être indiquée dans les paramètres de livraison correspondants)
  • 05 - Distribution numérique (inclut les services en ligne et les cartes-cadeaux électroniques)
  • 06 - billets de voyage et d'événements qui ne peuvent pas être livrés.
  • 07 - Autre (par exemple, jeux, biens numériques non livrables, abonnements numériques, etc.)
FacultatifdeliveryTimeframeInteger [2]Délai de livraison de la marchandise.
Valeurs possibles :
  • 01 - distribution numérique
  • 02 - livraison le jour même
  • 03 - livraison le jour suivant
  • 04 - livraison dans les 2 jours après le paiement et plus tard.
FacultatifdeliveryEmail String [1..254]Adresse e-mail cible pour la livraison de la distribution numérique. Il est préférable de transmettre l'e-mail dans le paramètre de requête indépendant email (mais si vous le transmettez dans ce bloc, les mêmes règles s'appliqueront).

Description des paramètres de l'objet preOrderPayerData :

ObligatoireNomTypeDescription
FacultatifpreOrderDateString [10]Date de livraison attendue (pour les achats en précommande) au format AAAAMMJJ.
FacultatifpreOrderPurchaseIndInteger [2]Indicateur de placement par le client d'une commande pour une livraison disponible ou future.
Valeurs possibles :
  • 01 - livraison possible ;
  • 02 - livraison future
FacultatifreorderItemsIndInteger [2]Indicateur que le client repasse une commande d'une livraison précédemment payée dans le cadre d'une nouvelle commande.
Valeurs possibles :
  • 01 - commande passée pour la première fois ;
  • 02 - commande répétée

Description des paramètres de l'objet orderPayerData.

ObligatoireNomTypeDescription
FacultatifhomePhoneString [7..15]Téléphone fixe du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifworkPhoneString [7..15]Téléphone professionnel du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.
FacultatifmobilePhoneString [7..15]Numéro de téléphone portable du titulaire de la carte. Il est nécessaire de toujours indiquer le code du pays, mais le signe + ou 00 au début peut être indiqué ou omis. Le numéro doit avoir une longueur de 7 à 15 chiffres. Ainsi, les valeurs suivantes sont possibles :
  • +35799988877 ;
  • 0035799988877 ;
  • 35799988877.

Pour les paiements par VISA avec autorisation 3DS, il est nécessaire d'indiquer soit l'adresse électronique, soit le numéro de téléphone du titulaire de la carte. Si vous avez configuré l'affichage du numéro de téléphone sur la page de paiement et que vous avez indiqué un numéro de téléphone incorrect, le client pourra le corriger sur la page de paiement.

Paramètres de réponse

ObligatoireNomTypeDescription
FacultatiferrorCodeString [1..2]Paramètre informatif en cas d'erreur, qui peut avoir différentes valeurs de code :
  • valeur 0 - indique le succès du traitement de la requête ;
  • autre valeur numérique (1-99) - indique une erreur, pour obtenir des informations plus détaillées sur laquelle il est nécessaire de vérifier le paramètre errorMessage.
Peut être absent si le résultat n'a pas causé d'erreur.
FacultatiferrorMessageString [1..512]Paramètre informatif qui constitue la description de l'erreur en cas de survenue d'erreur. La valeur errorMessage peut varier, par conséquent il ne faut pas faire référence explicitement à ses valeurs dans le code.
La langue de description est définie dans le paramètre language de la requête.
FacultatiforderIdString [1..36]Numéro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement.
FacultatiforderNumberString [1..36]Numéro de commande (ID) dans le système du marchand ; doit être unique pour chaque commande.
FacultatifauthCodeInteger [6]Paramètre obsolète (non utilisé). Sa valeur est toujours 2 indépendamment du statut de la commande et du code d'autorisation du système de traitement.
FacultatifactionCodeStringCode de réponse du traitement de la banque. Contient une valeur numérique. Voir la liste des codes de réponse ici.
FacultatifactionCodeDescriptionString [1..512]Description de actionCode, retournée par le système de traitement de la banque.
FacultatiftimeIntegerTemps d'exécution de la transaction en nombre de millisecondes écoulées depuis 00:00 GMT le 1er janvier 1970 (temps Unix). Exemple : 1740392720718 (correspond au temps du 24 février 2025, 10:25:20 (UTC)).
FacultatifeciInteger [1..4]Indicateur de commerce électronique. Spécifié uniquement après le paiement de la commande et en cas de présence de l'autorisation correspondante. Ci-dessous se trouve le décodage des codes ECI.
  • ECI=01 ou ECI=06 - le marchand prend en charge 3-D Secure, la carte de paiement ne prend pas en charge 3-D Secure, le paiement est traité sur la base du code CVV2/CVC.
  • ECI=02 ou ECI=05 - le marchand et la carte de paiement prennent en charge 3-D Secure ;
  • ECI=07 - le marchand ne prend pas en charge 3-D Secure, le paiement est traité sur la base du code CVV2/CVC.
FacultatifamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifcurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifrrnInteger [1..12]Reference Retrieval Number - identifiant de transaction attribué par la banque acquéreuse.
FacultatifacsUrlString [1..512]URL pour la redirection vers ACS. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est requise. Pour plus de détails, voir Redirection vers ACS.
FacultatiftermUrlString [1..512]En cas de réponse réussie lors du paiement 3D-Secure. Il s'agit de l'URL vers laquelle l'ACS redirige le porteur de carte après authentification. Pour plus de détails, voir Redirection vers ACS.
FacultatifpaReqString [1..255]PAReq (Payment Authentication Request) — message qui doit être envoyé à ACS avec la redirection. Retourné lors d'une réponse réussie en cas de paiement 3D-Secure, si une redirection vers ACS est nécessaire. Ce message contient des données en encodage Base64, nécessaires pour l'authentification du porteur de carte. Pour plus de détails, voir Redirection vers ACS.

Exemples

Exemple de requête

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/verifyCard.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data pan=4000001111111118 \
  --data cvc=123 \
  --data expiry=203012

Exemple de réponse

{
  "errorCode": "0",
  "errorMessage": "Success",
  "orderId": "cfc238ca-68f9-745c-ba7e-eb9100af79e0",
  "orderNumber": "12017",
  "rrn": "111111111115",
  "authCode": "123456",
  "actionCode": 0,
  "actionCodeDescription": "",
  "time": 1595284781180,
  "eci": "07",
  "amount": 0,
  "currency": "978"
}

API des prélèvements récurrents

Les requêtes API présentées ci-dessous permettent de configurer des tâches pour les prélèvements récurrents. Par la suite, les prélèvements sont automatiquement exécutés selon le planning défini.

Création d'une tâche

Pour créer une tâche récurrente, utilisez la requête https://dev.bpcbt.com/recurrent/v1/task/create.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de la requête

ObligatoireNomTypeDescription
FacultatiflocaleString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
FacultatifmerchantLoginString [1..30]Pour créer une tâche au nom d'un autre marchand, spécifiez son login (pour le compte API) dans ce paramètre.
Peut être utilisé uniquement si vous avez la permission de consulter les transactions d'autres vendeurs ou si le vendeur spécifié est votre vendeur filial.
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoiretaskObjectInformations sur la tâche récurrente à créer. Voir paramètres imbriqués.

Ci-dessous sont énumérés les paramètres du bloc task (données sur la tâche récurrente créée).

Caractère obligatoireNomTypeDescription
ObligatoireamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
FacultatifbindingIdString [1..255]Identifiant d'une liaison déjà existante (identifiant de carte, tokenisée par la passerelle). Il peut être utilisé seulement si le marchand a l'autorisation pour travailler avec les liaisons.
FacultatifcardHolderString [1..26]Nom du porteur de carte en lettres latines.
FacultatifclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
ObligatoirecurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
FacultatifexpiryIntegerDurée de validité de la carte dans le format suivant: YYYYMM.
ObligatoiremerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand.
FacultatifpanString [1..19]Numéro masqué de la carte qui a été utilisée pour le paiement.
FacultatifattributesObjectEnsemble d'attributs de la tâche, structure:
{name1:value1,…,nameN:valueN}. L'ensemble exact d'attributs doit être convenu avec la Banque.
FacultatifparamsObjectEnsemble de paramètres supplémentaires de forme arbitraire, structure:
{name1:value1,…,nameN:valueN}
ObligatoirescheduleDataObjectEnsemble de données sur l'horaire de la tâche. Voir paramètres imbriqués.

Ci-dessous sont énumérés les paramètres du bloc scheduleData (données sur le calendrier des paiements).

ObligatoireNomTypeDescription
MandatoryscheduledSinceString [26]Date et heure auxquelles la tâche doit commencer à s'exécuter. Format : yyyy-MM-dd'T'HH:mm:ss.SSSZ
MandatoryscheduledTillString [26]Date et heure auxquelles la tâche doit se terminer. Format : yyyy-MM-dd'T'HH:mm:ss.SSSZ
MandatorytimeUnitStringUnité de temps. Valeurs admissibles : Nanos, Micros, Millis, Seconds, Minutes, Hours, HalfDays, Days, Weeks, Months, Years, Decades, Centuries, Millennia, Eras, Forever
MandatoryvalueintegerValeur de fréquence

Paramètres de la réponse

ObligatoireNomTypeDescription
ObligatoirestatusStringStatut de la réponse. Valeurs autorisées : SUCCESS, FAIL.
ObligatoiretaskObjectInformations sur la tâche récurrente créée. Voir paramètres imbriqués.

Ci-dessous sont énumérés les paramètres du bloc task (données sur la tâche récurrente créée).

Caractère obligatoireNomTypeDescription
ObligatoirecreatedStringDate et heure de création de la tâche.
ObligatoiremerchantLoginStringLogin du marchand.
ObligatoiremerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand.
ObligatoirenextPaymentDateStringDate du prochain paiement.
ObligatoirestateStringÉtat de la tâche. Valeurs admissibles :
  • CREATED - créée, mais aucun paiement n'a eu lieu
  • ACTIVE - créée, au moins un paiement effectué
  • FAILED - nombre de tentatives dépassé, tâche désactivée
  • COMPLETED - date EOL atteinte, tous les paiements terminés
  • TERMINATED - arrêtée soit par le client, soit par le marchand
  • EXPIRED - la carte a expiré
ObligatoiretaskUuidStringIdentifiant unique dans le service de débits récurrents.

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/create \
--header 'Content-Type: application/json' \
--data '{
    "username":"test_user",
    "password":"test_user_password",
    "locale":"en",
    "task":{
        "merchantTaskUuid":"c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82",
        "clientId":"TestClient",
        "bindingId": "5eb094e1-4a96-7b33-af5f-a29407a73a93",
        "scheduleData": {
            "value":"1",
            "timeUnit":"DAYS",
            "scheduledSince":"2024-01-24T00:00:00.000+0300",
            "scheduledTill":"2024-02-24T00:00:00.000+0300"
        },
        "amount":100,
        "currency":643,
        "params":{
            "description":"desc",
            "phone":"576015555556"
        }
    }
}'

Exemple de réponse

{
  "status": "SUCCESS",
  "task": {
    "created": "2024-01-24T10:23:35.434591+03:00",
    "merchantLogin": "testMerch",
    "taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
    "nextPaymentDate": "2024-01-24T00:00:00+03:00",
    "state": "CREATED",
    "merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
  }
}

Modification de la tâche

Pour modifier une tâche récurrente existante, utilisez la requête https://dev.bpcbt.com/recurrent/v1/task/modify.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de la requête

ObligatoireNomTypeDescription
FacultatiflocaleString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoiretaskObjectInformations sur la tâche récurrente à modifier. Voir paramètres imbriqués.

Ci-dessous sont énumérés les paramètres du bloc task (données sur la tâche récurrente modifiable).

ObligatoireNomTypeDescription
OptionnelbindingIdString [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.
OptionnelcardholderStringNom du titulaire de la carte en lettres latines.
OptionnelclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
OptionnelexpiryString [6]Date d'expiration de la carte au format : YYYYMM.
OptionnelpanString [1..19]Numéro masqué de la carte utilisée pour le paiement.
OptionnelattributesObjectEnsemble d'attributs de la tâche, structure :
{name1:value1,…,nameN:valueN}. L'ensemble exact d'attributs doit être convenu avec la Banque.
OptionnelparamsObjectEnsemble de paramètres supplémentaires de forme arbitraire, structure :
{name1:value1,…,nameN:valueN}
ObligatoiretaskIdentifierObjectIdentifiant unique ou ensemble d'identifiants de la tâche. Voir paramètres imbriqués.

Ci-dessous sont listés les paramètres du bloc taskIdentifier (ensemble d'identifiants de tâche récurrente).

ObligatoireNomTypeDescription
FacultatifmerchantLoginStringLogin du marchand. Doit être défini lors de la recherche par merchantTaskUuid.
FacultatifmerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand. Obligatoire si taskUuid n'est pas défini.
FacultatiftaskUuidStringIdentifiant unique dans le service de prélèvements récurrents. Obligatoire si merchantTaskUuid n'est pas défini.

Paramètres de la réponse

ObligatoireNomTypeDescription
ObligatoirestatusStringStatut de la réponse. Valeurs autorisées : SUCCESS, FAIL.
ObligatoiretaskObjectInformations sur la tâche récurrente modifiée. Voir paramètres imbriqués.

Ci-dessous sont énumérés les paramètres du bloc task (données sur la tâche récurrente modifiée).

ObligationNomTypeDescription
ObligatoireupdatedStringDate et heure de la dernière mise à jour de la tâche.
ObligatoiremerchantLoginStringLogin du marchand.
ObligatoiremerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand.
ObligatoiretaskUuidStringIdentifiant unique dans le service de prélèvements récurrents.

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/modify \
--header 'Content-Type: application/json' \
--data '{
    "username":"test_user",
    "password":"test_user_password",
    "task":{
        "taskIdentifier": {
           "taskUuid":"9ae9f36d-0ba3-4686-87c4-a5ec77c562a4"
       },
        "bindingId":"5eb094e1-4a96-7b33-af5f-a29407a73a93",
        "clientId":"TestClient",
        "params":{
            "description":"new description",
            "phone":"+576015555558"
        }
}'

Exemple de réponse

{
  "status": "SUCCESS",
  "task": {
    "updated": "2024-01-23T14:10:03.730644+03:00",
    "merchantLogin": "testMerch",
    "taskUuid": "9ae9f36d-0ba3-4686-87c4-a5ec77c562a4",
    "merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c80"
  }
}

Obtention d'informations sur la tâche

Pour obtenir des informations sur la tâche récurrente, utilisez la requête https://dev.bpcbt.com/recurrent/v1/task/get.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de requête

ObligatoireNomTypeDescription
FacultatiflocaleString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoiretaskIdentifierObjectIdentifiant unique ou ensemble d'identifiants de la tâche récurrente. Voir paramètres imbriqués.

Ci-dessous sont listés les paramètres du bloc taskIdentifier (ensemble d'identifiants de tâche récurrente).

ObligatoireNomTypeDescription
FacultatifmerchantLoginStringLogin du marchand. Doit être défini lors de la recherche par merchantTaskUuid.
FacultatifmerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand. Obligatoire si taskUuid n'est pas défini.
FacultatiftaskUuidStringIdentifiant unique dans le service de prélèvements récurrents. Obligatoire si merchantTaskUuid n'est pas défini.

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoirestatusStringStatut de la réponse. Valeurs autorisées : SUCCESS, FAIL.
ObligatoiretaskObjectInformations sur la tâche récurrente. Voir paramètres imbriqués.

Ci-dessous sont énumérés les paramètres du bloc task (données sur la tâche récurrente).

Caractère obligatoireNomTypeDescription
MandatoryamountInteger [0..12]Montant du paiement dans les unités minimales de la devise (par exemple, en kopecks).
OptionalattemptsHistoryArray of objectsToutes les tentatives de paiement dans l'ordre chronologique. Chaque tentative de paiement est représentée par un objet attemptsHistory. Voir paramètres imbriqués.
OptionalbindingIdString [1..255]Identificateur d'une liaison déjà existante (identificateur de carte tokenisée par la passerelle). Il peut être utilisé uniquement si le marchand a l'autorisation de travailler avec les liaisons.
OptionalcardHolderString [1..26]Nom du porteur de carte en lettres latines.
OptionalclientIdString [0..255]Numéro du client (ID) dans le système du marchand — jusqu'à 255 caractères. Utilisé pour la mise en œuvre de la fonctionnalité de liaisons. Peut être retourné dans la réponse, si le marchand est autorisé à créer des liaisons.
L'indication de ce paramètre lors du traitement des paiements par liaison est obligatoire. Dans le cas contraire, le paiement sera impossible.
MandatorycreatedStringDate et heure de création de la tâche.
MandatorycurrencyString [3]Code de devise du paiement ISO 4217. Si non spécifié, alors la valeur par défaut est utilisée. Seuls les chiffres sont autorisés.
OptionalexpiryInteger [6]Date d'expiration de la carte au format : YYYYMM.
MandatorylastPaymentDateStringDate du dernier paiement.
OptionalmaskedPanStringNuméro de carte masqué.
MandatorymerchantLoginString [1..30]Login du marchand.
MandatorymerchantTaskUuidStringIdentificateur unique de la tâche dans le système du marchand.
MandatorynextPaymentDateStringDate du prochain paiement.
OptionalparamsObjectEnsemble de paramètres supplémentaires de forme arbitraire, structure :
{name1:value1,…,nameN:valueN}
MandatoryscheduleDataObjectEnsemble de données sur le planning de la tâche. Voir paramètres imbriqués.
MandatorystateStringÉtat de la tâche. Valeurs autorisées :
  • CREATED - créée, mais aucun paiement effectué
  • ACTIVE - créée, au moins un paiement effectué
  • FAILED - nombre de tentatives dépassé, tâche désactivée
  • COMPLETED - date EOL atteinte, tous les paiements terminés
  • TERMINATED - interrompue soit par le client, soit par le marchand
  • EXPIRED - date d'expiration de la carte dépassée
MandatorytaskUuidStringIdentificateur unique dans le service de prélèvements récurrents.
MandatoryupdatedStringDate et heure de la dernière mise à jour de la tâche.

Ci-dessous sont énumérés les paramètres du bloc scheduleData (données sur le calendrier des paiements).

ObligatoireNomTypeDescription
MandatoryscheduledSinceString [26]Date et heure auxquelles la tâche doit commencer à s'exécuter. Format : yyyy-MM-dd'T'HH:mm:ss.SSSZ
MandatoryscheduledTillString [26]Date et heure auxquelles la tâche doit se terminer. Format : yyyy-MM-dd'T'HH:mm:ss.SSSZ
MandatorytimeUnitStringUnité de temps. Valeurs admissibles : Nanos, Micros, Millis, Seconds, Minutes, Hours, HalfDays, Days, Weeks, Months, Years, Decades, Centuries, Millennia, Eras, Forever
MandatoryvalueintegerValeur de fréquence

Ci-dessous sont énumérés les paramètres du bloc attemptsHistory (données sur la fréquence d'exécution de la tâche).

ObligatoireNomTypeDescription
ObligatoireexecutedStringDate et heure de la tentative de paiement. Format : yyyy-MM-dd'T'HH:mm:ss.SSSZ
FacultatiforderIdStringIdentifiant unique de la transaction dans la passerelle de paiement
FacultatiforderNumberStringNuméro de commande dans la passerelle de paiement
ObligatoirepaymentAttemptUuidStringIdentifiant unique de la tentative de paiement
ObligatoirepaymentUuidStringIdentifiant unique du paiement
ObligatoirestateStringÉtat de la tâche. Valeurs autorisées :
  • CREATED - créée, mais aucun paiement n'a eu lieu
  • ACTIVE - créée, au moins un paiement effectué
  • FAILED - nombre de tentatives dépassé, tâche désactivée
  • COMPLETED - date EOL atteinte, tous les paiements terminés
  • TERMINATED - interrompue soit par le client, soit par le marchand
  • EXPIRED - la carte a expiré
ObligatoiretechnicalAttemptBooleanIndicateur précisant si la tentative était technique

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/get \
--header 'Content-Type: application/json' \
--data '{
    "username":"test_user",
    "password":"test_user_password",
    "taskIdentifier": {
           "taskUuid":"8a6a5350-1be3-456e-8e81-e5c7eafbd699"
     }
}'

Exemple de réponse

{
  "status": "SUCCESS",
  "task": {
    "taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
    "state": "ACTIVE",
    "merchantLogin": "testMerch",
    "bindingId": "5eb094e1-4a96-7b33-af5f-a29407a73a93",
    "clientId": "TestClient",
    "created": "2024-01-24T10:23:35.434591+03:00",
    "updated": "2024-01-24T10:23:35.434591+03:00",
    "lastPaymentDate": "2024-01-24T00:00:00+03:00",
    "nextPaymentDate": "2024-01-25T00:00:00+03:00",
    "scheduleData": {
      "scheduledSince": "2024-01-24T00:00:00.000+0300",
      "scheduledTill": "2024-02-24T00:00:00.000+0300",
      "value": 1,
      "timeUnit": "DAYS"
    },
    "amount": 100,
    "currency": 643,
    "params": {
      "phone": "576015555556",
      "description": "description"
    },
    "attemptsHistory": [
      {
        "paymentAttemptUuid": "6873d7dc-4366-45c5-9de6-bc6e0aa05b3d",
        "paymentUuid": "1a450005-ad46-4474-8940-eb154822296c",
        "state": "SUCCEEDED",
        "executed": "2024-01-24T10:23:41.788436+03:00",
        "technicalAttempt": false,
        "orderId": "d2d56b04-124b-77ab-9034-9f2307a73a93",
        "orderNumber": "E5DFEDE990694FCFB5246AEC2612A355"
      }
    ],
    "merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
  }
}

Arrêter l'exécution de la tâche

Pour arrêter l'exécution d'une tâche récurrente, utilisez la requête https://dev.bpcbt.com/recurrent/v1/task/terminate.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de la requête

Caractère obligatoireNomTypeDescription
FacultatiflocaleString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoiretaskIdentifierObjectIdentifiant unique ou ensemble d'identifiants de la tâche récurrente. Voir paramètres imbriqués.

Ci-dessous sont listés les paramètres du bloc taskIdentifier (ensemble d'identifiants de tâche récurrente).

ObligatoireNomTypeDescription
FacultatifmerchantLoginStringLogin du marchand. Doit être défini lors de la recherche par merchantTaskUuid.
FacultatifmerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand. Obligatoire si taskUuid n'est pas défini.
FacultatiftaskUuidStringIdentifiant unique dans le service de prélèvements récurrents. Obligatoire si merchantTaskUuid n'est pas défini.

Paramètres de la réponse

Caractère obligatoireNomTypeDescription
ObligatoirestatusStringStatut de la réponse. Valeurs autorisées : SUCCESS, FAIL.
ObligatoiretaskObjectInformations sur la tâche récurrente. Voir paramètres imbriqués.

Ci-dessous sont énumérés les paramètres du bloc task (données sur la tâche interrompue).

Caractère obligatoireNomTypeDescription
ObligatoireupdatedStringDate et heure de la dernière mise à jour de la tâche.
ObligatoiremerchantLoginStringLogin du marchand.
ObligatoiremerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand.
ObligatoiretaskUuidStringIdentifiant unique dans le service de prélèvements récurrents.
ObligatoirestateStringÉtat de la tâche. Valeurs autorisées :
  • CREATED - créée, mais aucun paiement n'a eu lieu
  • ACTIVE - créée, au moins un paiement effectué
  • FAILED - nombre de tentatives dépassé, tâche désactivée
  • COMPLETED - date EOL atteinte, tous les paiements terminés
  • TERMINATED - interrompue soit par le client, soit par le marchand
  • EXPIRED - durée de validité de la carte expirée

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/terminate \
--header 'Content-Type: application/json' \
--data '{
    "username":"test_user",
    "password":"test_user_password",
    "taskIdentifier": {
        "merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82",
        "merchantLogin": "testMerch"
    }
}'

Exemple de réponse

{
  "status": "SUCCESS",
  "task": {
    "updated": "2024-01-24T10:23:35.434591+03:00",
    "merchantLogin": "testMerch",
    "taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
    "state": "TERMINATED",
    "merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
  }

Activation de tâche

Pour activer une tâche récurrente, utilisez la requête https://dev.bpcbt.com/recurrent/v1/task/activate.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de requête

ObligatoireNomTypeDescription
FacultatiflocaleString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoiretaskIdentifierObjectIdentifiant unique ou ensemble d'identifiants de la tâche récurrente. Voir paramètres imbriqués.

Ci-dessous sont listés les paramètres du bloc taskIdentifier (ensemble d'identifiants de tâche récurrente).

ObligatoireNomTypeDescription
FacultatifmerchantLoginStringLogin du marchand. Doit être défini lors de la recherche par merchantTaskUuid.
FacultatifmerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand. Obligatoire si taskUuid n'est pas défini.
FacultatiftaskUuidStringIdentifiant unique dans le service de prélèvements récurrents. Obligatoire si merchantTaskUuid n'est pas défini.

Paramètres de réponse

ObligatoireNomTypeDescription
ObligatoirestatusStringStatut de la réponse. Valeurs admissibles : SUCCESS, FAIL.
ObligatoiretaskObjectInformations sur la tâche récurrente. Voir paramètres imbriqués.

Ci-dessous sont énumérés les paramètres du bloc task (données sur la tâche activée).

Caractère obligatoireNomTypeDescription
ObligatoireupdatedStringDate et heure de la dernière mise à jour de la tâche.
ObligatoiremerchantLoginStringLogin du marchand.
ObligatoiremerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand.
ObligatoirenextPaymentDateStringDate du prochain paiement.
ObligatoiretaskUuidStringIdentifiant unique dans le service de prélèvements récurrents.
ObligatoirestateStringÉtat de la tâche. Valeurs admissibles :
  • CREATED - créée, mais aucun paiement n'a eu lieu
  • ACTIVE - créée, au moins un paiement effectué
  • FAILED - nombre de tentatives dépassé, tâche désactivée
  • COMPLETED - date EOL atteinte, tous les paiements terminés
  • TERMINATED - interrompue soit par le client, soit par le marchand
  • EXPIRED - durée de validité de la carte expirée

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/activate \
--header 'Content-Type: application/json' \
--data '{
    "username":"test_user",
    "password":"test_user_password",
    "taskIdentifier": {
        "merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82",
        "merchantLogin": "testMerch"
    }
}'

Exemple de réponse

{
  "status": "SUCCESS",
  "task": {
    "updated": "2024-01-24T10:23:35.434591+03:00",
    "merchantLogin": "testMerch",
    "taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
    "state": "ACTIVE",
    "nextPaymentDate": "2024-01-25T00:00:00+03:00",
    "merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
  }
}

Arrêt de l'exécution des tâches

Pour arrêter l'exécution de plusieurs tâches récurrentes, utilisez la requête https://dev.bpcbt.com/recurrent/v1/task/batchTerminate.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de la requête

ObligatoireNomTypeDescription
FacultatiflocaleString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut indiquée dans les paramètres du magasin est utilisée.
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoiretaskIdentifiersArray of ObjectsIdentifiants des tâches à arrêter. Chaque identifiant est représenté par un objet taskIdentifier. Voir paramètres imbriqués.

Ci-dessous sont listés les paramètres du bloc taskIdentifier (ensemble d'identifiants de tâche récurrente).

ObligatoireNomTypeDescription
FacultatifmerchantLoginStringLogin du marchand. Doit être défini lors de la recherche par merchantTaskUuid.
FacultatifmerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand. Obligatoire si taskUuid n'est pas défini.
FacultatiftaskUuidStringIdentifiant unique dans le service de prélèvements récurrents. Obligatoire si merchantTaskUuid n'est pas défini.

Paramètres de la réponse

ObligatoireNomTypeDescription
ObligatoirestatusStringStatut de la réponse. Valeurs autorisées : SUCCESS, FAIL.

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/batchTerminate \
--header 'Content-Type: application/json' \
--data '{
    "locale":"EN",
    "username":"testUser",
    "password":"testPwd",
    "tasksIdentifiers":[
        {
            "taskUuid":"0ba73819-65f8-43c4-9dc4-3870cb10416b"
        },
        {
            "taskUuid":"0ba73820-65f8-43c4-9dc4-3870cb10416b"            
        }
    ]
}'

Exemple de réponse

{   
  "status": "SUCCESS" 
}

Ignorer un paiement

Pour ignorer un paiement spécifique d'une tâche récurrente, utilisez la requête https://dev.bpcbt.com/recurrent/v1/payment/skip.


Lors de l'exécution de la requête, il est nécessaire d'utiliser l'en-tête : Content-Type: application/json

Paramètres de la requête

Caractère obligatoireNomTypeDescription
FacultatiflocaleString [2]Clé de langue selon ISO 639-1. Si la langue n'est pas spécifiée, la langue par défaut spécifiée dans les paramètres du magasin est utilisée.
ObligatoireuserNameString [1..50]Identifiant de connexion du compte API du marchand.
ObligatoirepasswordString [1..30]Mot de passe du compte API du vendeur.
ObligatoiretaskIdentifierObjectIdentifiant unique ou ensemble d'identifiants de la tâche récurrente. Voir paramètres imbriqués.
ObligatoirepaymentNumberIntegerNuméro du paiement récurrent qui doit être ignoré.

Ci-dessous sont listés les paramètres du bloc taskIdentifier (ensemble d'identifiants de tâche récurrente).

ObligatoireNomTypeDescription
FacultatifmerchantLoginStringLogin du marchand. Doit être défini lors de la recherche par merchantTaskUuid.
FacultatifmerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand. Obligatoire si taskUuid n'est pas défini.
FacultatiftaskUuidStringIdentifiant unique dans le service de prélèvements récurrents. Obligatoire si merchantTaskUuid n'est pas défini.

Paramètres de la réponse

Caractère obligatoireNomTypeDescription
ObligatoirestatusStringStatut de la réponse. Valeurs autorisées : SUCCESS, FAIL.
ObligatoiretaskObjectInformations sur la tâche récurrente. Voir paramètres imbriqués.

Ci-dessous sont énumérés les paramètres du bloc task (données sur la tâche activée).

Caractère obligatoireNomTypeDescription
ObligatoireupdatedStringDate et heure de la dernière mise à jour de la tâche.
ObligatoiremerchantLoginStringLogin du marchand.
ObligatoiremerchantTaskUuidStringIdentifiant unique de la tâche dans le système du marchand.
ObligatoirenextPaymentDateStringDate du prochain paiement.
ObligatoiretaskUuidStringIdentifiant unique dans le service de prélèvements récurrents.
ObligatoirestateStringÉtat de la tâche. Valeurs admissibles :
  • CREATED - créée, mais aucun paiement n'a eu lieu
  • ACTIVE - créée, au moins un paiement effectué
  • FAILED - nombre de tentatives dépassé, tâche désactivée
  • COMPLETED - date EOL atteinte, tous les paiements terminés
  • TERMINATED - interrompue soit par le client, soit par le marchand
  • EXPIRED - durée de validité de la carte expirée

Exemples

Exemple de requête

curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/payment/skip \
--header 'Content-Type: application/json' \
--data '{
    "locale":"EN",
    "username":"test_user",
    "password":"test_user_password",
    "taskIdentifier": {
           "taskUuid":"7ae881fb-aee0-4446-883c-8087512bd26a"
     },
    "paymentNumber": 2
}'

Exemple de réponse

{
  "status": "SUCCESS",
  "task": {
    "updated": "2024-01-24T10:23:35.434591+03:00",
    "merchantLogin": "testMerch",
    "taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
    "state": "ACTIVE",
    "nextPaymentDate": "2024-01-25T00:00:00+03:00",
    "merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
  }
}

Notifications de rappel

L'API de la passerelle de paiement permet de recevoir des notifications de rappel (notifications callback) concernant les changements de statut des paiements.

Informations générales

Événements pouvant faire l'objet de notifications

Vous pouvez recevoir des notifications concernant les changements de statut de paiement de la commande et d'autres événements dans la passerelle de paiement.

Les notifications les plus courantes décrivent les changements de statut de commande, par exemple :

Des intégrations plus complexes peuvent impliquer des déclencheurs de rappel supplémentaires, tels que :

Le type de déclencheur est transmis dans le paramètre operation de la notification de rappel (voir détails ci-dessous). Pour plus de commodité, les notifications pour les déclencheurs supplémentaires peuvent être dirigées vers une autre URL en utilisant le paramètre dynamicCallbackUrl dans les demandes d'enregistrement de commande.

Intégration via les notifications de rappel (callback)

Au lieu de la dernière étape de l'intégration via redirection vous pouvez choisir l'une des approches suivantes.

Utiliser returnUrl

Lorsque le code de votre site, situé à l'adresse returnUrl (par exemple, https://mybestmerchantreturnurl.com/?back&amp;orderId=61c33664-85a0-7d6b-af26-09ee009c4000&amp;lang=en), identifie le porteur de carte redirigé depuis la passerelle après la tentative de paiement, vous pouvez vérifier le statut de la commande à l'aide de la requête API getOrderStatusExtended.
Cette option est la plus simple, mais elle n'est pas tout à fait fiable, car la redirection du porteur de carte peut échouer (par exemple, suite à une coupure de connexion ou à la fermeture du navigateur par le porteur de carte), et returnUrl peut ne pas recevoir le déclencheur pour appeler getOrderStatusExtended.

getOrderStatusExtended.do

curl --request POST \
  --url https://dev.bpcbt.com/payment/rest/getOrderStatusExtended.do \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data userName=test_user \
  --data password=test_user_password \
  --data orderId=016b6f47-4628-7ea2-80f5-6c6e00a7d8c0 \
  --data language=en
{
  "errorCode": "0",
  "errorMessage": "Success",
  "orderNumber": "11008",
  "orderStatus": 2,
  "actionCode": 0,
  "actionCodeDescription": "",
  "amount": 2000,
  "currency": "978",
  "date": 1618577250840,
  "orderDescription": "my_first_order",
  "merchantOrderParams": [
    {
      "name": "browser_language_param",
      "value": "en"
    },
    {
      "name": "browser_os_param",
      "value": "UNKNOWN"
    },
    {
      "name": "user_agent",
      "value": "curl/7.75.0"
    },
    {
      "name": "browser_name_param",
      "value": "DOWNLOAD"
    }
  ],
  "transactionAttributes": [],
  "attributes": [
    {
      "name": "mdOrder",
      "value": "016b7747-c4ed-70b3-bc36-fdd400a7d8c0"
    }
  ],
  "cardAuthInfo": {
    "maskedPan": "555555**5599",
    "expiration": "202412",
    "cardholderName": "TEST CARDHOLDER",
    "approvalCode": "123456",
    "pan": "555555**5599"
  },
  "authDateTime": 1618577288377,
  "terminalId": "123456",
  "authRefNum": "931793605827",
  "paymentAmountInfo": {
    "paymentState": "DEPOSITED",
    "approvedAmount": 2000,
    "depositedAmount": 2000,
    "refundedAmount": 0
  },
  "bankInfo": {
    "bankCountryCode": "UNKNOWN",
    "bankCountryName": "&ltUnknown&gt"
  }
}

Utiliser le callback signé de la passerelle

Si vous savez comment traiter les certificats numériques et les signatures, vous pouvez utiliser un callback avec signature numérique et somme de contrôle (la passerelle permet de configurer l'envoi de telles notifications). La somme de contrôle est utilisée pour la vérification et la sécurité. Après que la signature de la notification a été vérifiée, il n'est plus nécessaire d'envoyer getOrderStatusExtended, car la notification contient en elle-même les informations sur le statut de la commande.

https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&operation=deposited&status=1

Types de notifications

Notifications sans somme de contrôle

Ces notifications contiennent uniquement des informations sur la commande, par conséquent le vendeur risque potentiellement d'accepter une notification envoyée par un attaquant comme authentique.

Notifications avec somme de contrôle

Ces notifications contiennent, en plus des informations sur la commande, un code d'authentification. Le code d'authentification représente une somme de contrôle des informations sur la commande. Cette somme de contrôle permet de s'assurer que la notification callback a bien été envoyée par la passerelle de paiement.
Il existe deux façons d'implémenter les notifications callback avec somme de contrôle :


La clé publique peut être téléchargée depuis l'espace personnel de la passerelle de paiement si l'on dispose des autorisations correspondantes. Pour plus de sécurité, il est recommandé d'utiliser la cryptographie asymétrique.
Pour activer les notifications avec sommes de contrôle, ainsi que pour obtenir la clé cryptographique correspondante, contactez notre service de support technique.

Exigences pour les certificats SSL sur le site du vendeur

Si la notification sur l'état de la commande arrive via une connexion HTTPS, il faut authentifier le site à l'aide d'un certificat SSL émis et signé par une autorité de certification de confiance (voir tableau ci-dessous). L'utilisation de certificats auto-signés n'est pas autorisée.

ExigenceDescription
Algorithme de signature.Pas inférieur à SHA-256.
Autorités de certification supportées.Ci-dessous sont présentés des exemples d'organisations qui enregistrent des certificats numériques :

Format des URL de notifications

Les demandes POST et GET sont supportées.

Ci-dessous est présenté un exemple de demande GET par défaut, sans paramètres supplémentaires. Les paramètres sont obtenus dans la demande.

Notification sans somme de contrôle (GET)

https://mybestmerchantreturnurl.com/callback/?mdOrder=
1234567890-098776-234-522&orderNumber=0987&operation=deposited&
callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0

Notification avec somme de contrôle (GET)

https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&
orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&
operation=deposited&callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0

Pour les callbacks POST, vous recevrez les mêmes paramètres dans le corps HTTP (au lieu des paramètres de demande).

Notification sans somme de contrôle (POST)

https://mybestmerchantreturnurl.com/callback/
mdOrder=
1234567890-098776-234-522&orderNumber=0987&operation=deposited&
callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0

Notification avec somme de contrôle (POST)

https://mybestmerchantreturnurl.com/callback/
mdOrder=1234567890-098776-234-522&
orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&operation=deposited&callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0

Les paramètres transmis sont présentés dans le tableau ci-dessous.

Le tableau indique uniquement les paramètres principaux. Vous pouvez également utiliser des paramètres supplémentaires, s'ils sont configurés dans la passerelle de paiement.

ParamètreDescription
mdOrderNuméro unique de commande, stocké dans la passerelle de paiement.
orderNumberNuméro unique de commande (identifiant) dans le système du commerçant.
checksumCode d'authentification ou somme de contrôle, obtenue à partir d'un ensemble de paramètres.
operationType d'événement ayant déclenché la notification :
  • approved - blocage (rétention) des fonds sur le compte de l'acheteur ;
  • deposited - opération de finalisation ;
  • reversed - le paiement a été annulé ;
  • refunded - l'argent de la commande a été remboursé ;
  • bindingCreated - la carte du payeur a été sauvegardée (identifiant stocké créé) ;
  • bindingActivityChanged - un identifiant stocké existant a été désactivé/activé.
  • declinedByTimeout - le paiement a été rejeté à cause d'un dépassement de délai ;
  • declinedCardPresent - transaction rejetée avec présentation de carte (paiement par carte physique).
statusIndicateur de succès de l'opération, spécifiée dans le paramètre operation :
  • 1 - succès ;
  • 0 - erreur.

En-têtes personnalisés des notifications callback

Les en-têtes personnalisés des notifications callback peuvent être définis en contactant le service de support technique. Par exemple :

'http://mybestmerchantreturnurl.com/callback.php', headers={Authorization=token, Content-type=plain
/text}, params={orderNumber=349002, mdOrder=5ffb1899-cd1e-7c1e-8750-e98500093c43, operation=deposited, status=1}

{Authorization=token, Content-type=plain/text} – c'est l'en-tête configurable.

Exemples

Exemple d'URL de notification sans somme de contrôle

https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&operation=deposited&status=0

Exemple d'URL de notification avec somme de contrôle

https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&operation=deposited&status=0

Algorithme de traitement des notifications d'état de commandes

Les sections ci-dessous présentent l'algorithme de traitement des notifications d'état de commandes selon le type de ces notifications.

Notification sans somme de contrôle

  1. La passerelle de paiement envoie la requête suivante au serveur du vendeur.
    https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&operation=deposited&status=0
  2. Le serveur du vendeur retourne le message HTTP 200 OK à la passerelle de paiement.

Notification avec somme de contrôle

  1. La passerelle de paiement envoie une requête HTTPS du type suivant au serveur du commerçant, avec :

    • lors de l'utilisation de la cryptographie symétrique, la somme de contrôle est formée à l'aide d'une clé commune à la passerelle de paiement et au vendeur ;
    • lors de l'utilisation de la cryptographie asymétrique, la somme de contrôle est formée à l'aide d'une clé privée connue uniquement de la passerelle de paiement.
      https://mybestmerchantreturnurl.com/path?amount=123456&orderNumber=10747&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&mdOrder=3ff6962a-7dcc-4283-ab50-a6d7dd3386fe&operation=deposited&status=1
      L'ordre des paramètres dans la notification peut être arbitraire.
  2. Du côté du vendeur, les paramètres checksum et sign_alias sont supprimés de la chaîne de paramètres de notification, et la valeur du paramètre checksum (somme de contrôle) est conservée pour vérifier l'authenticité de la notification ;

  3. Les paramètres restants et leurs valeurs sont utilisés pour créer la chaîne suivante.
    nom_paramètre1;valeur_paramètre1;nom_paramètre2;valeur_paramètre2;…;nom_paramètreN;valeur_paramètreN;
    Dans ce cas, les paires nom_paramètre;valeur_paramètre doivent être triées par ordre alphabétique direct (croissant) par noms de paramètres.
    Exemple de chaîne de paramètres générée :
    amount;123456;mdOrder;3ff6962a-7dcc-4283-ab50-a6d7dd3386fe;operation;deposited;orderNumber;10747;status;1;

  4. La somme de contrôle est calculée du côté du commerçant, la méthode de calcul dépend de la façon dont elle est formée :

    • lors de l'utilisation de la cryptographie symétrique - à l'aide de l'algorithme HMAC-SHA256 et de la clé privée commune avec la passerelle de paiement ;
    • lors de l'utilisation de la cryptographie asymétrique - à l'aide de l'algorithme de hachage qui dépend de la méthode de création de la paire de clés, et de la clé publique qui est liée à la clé privée se trouvant du côté de la passerelle de paiement.
  5. Dans la chaîne de somme de contrôle obtenue, toutes les lettres minuscules sont remplacées par des lettres majuscules.

  6. Une comparaison se produit entre la valeur obtenue et la somme de contrôle extraite précédemment du paramètre checksum.

  7. Si les sommes de contrôle correspondent, le serveur envoie le code HTTP 200 OK à la passerelle de paiement.

Si les sommes de contrôle correspondent, cette notification est authentique et a été envoyée par la passerelle de paiement. Dans le cas contraire, il est probable qu'un attaquant tente de faire passer sa notification pour une notification de la passerelle de paiement.

Notification du statut de paiement

Pour déterminer si le paiement s'est déroulé avec succès ou non, vous devez :

  1. Vérifier la signature (paramètre checksum dans la notification) ;
  2. Vérifier deux paramètres de la notification de rappel : operation et status.

Si la valeur du paramètre operation diffère de approved ou deposited, alors la notification de rappel concerne le statut de paiement.

Notifications non réussies

Si une réponse différente du code HTTP 200 OK est retournée à la passerelle de paiement, l'envoi de notification est considéré comme non réussi. Dans ce cas, la passerelle de paiement répète la notification avec un intervalle de 30 secondes jusqu'à ce que l'une des conditions suivantes soit remplie :

Lorsque l'une des conditions indiquées ci-dessus est atteinte, les tentatives d'envoi de notifications callback sur l'opération cessent.

Paramètres supplémentaires des notifications de rappel

Dans les notifications de rappel, vous pouvez utiliser les paramètres supplémentaires suivants s'ils sont configurés dans la passerelle de paiement. Si vous souhaitez les utiliser, contactez notre service d'assistance.

ParamètreDescriptionType d'événement
bindingIdUUIID des identifiants sauvegardés créés/mis à jour (données de paiement sauvegardées).BINDING_CREATED, BINDING_ACTIVITY_CHANGED
emailAdresse électronique du client.BINDING_CREATED
phoneTéléphone du client.BINDING_CREATED
panMaskedPAN masqué de la carte du client.BINDING_CREATED
panCountryCodeCode pays du client.BINDING_CREATED
enabledSi les données de paiement sauvegardées sont actives (true/false).BINDING_ACTIVITY_CHANGED
currentDepositAmountFormattedMontant formaté de l'opération de finalisation.DEPOSITED
currentReverseAmountFormattedMontant formaté de l'opération d'annulation.REVERSED
currentRefundAmountFormattedMontant formaté de l'opération de remboursement.REFUNDED
operationRefundedAmountFormattedMontant formaté de l'opération de remboursement.REFUNDED
operationRefundedAmountMontant de remboursement en unités monétaires minimales (par exemple, en centimes).REFUNDED
externalRefundIdIdentifiant externe de l'opération de remboursement.REFUNDED
callbackCreationDateDate de création de la notification de rappel. Nécessite une configuration spéciale du vendeur.DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED, DECLINED_CARDPRESENT
statusStatut de l'opération : 1 - succès, 0 - échec DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
operation Type de callback Valeurs possibles : deposited, approved, reversed, refunded, bindingCreated, bindingActivityChanged, declinedByTimeout, declinedCardpresent DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED
finishCheckUrlURL pour la génération de reçu DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
sign_aliasNom de la clé utilisée pour la signature. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED
checksumSomme de contrôle de la notification de rappel (utilisée pour les notifications de rappel avec somme de contrôle). DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED
cardholderNameNom du titulaire de la carte. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
amountMontant de la commande enregistrée en unités monétaires minimales. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentAmountMontant de la commande enregistrée en unités monétaires minimales. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
amountFormattedMontant formaté de la commande enregistrée. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
feeAmountMontant de la commission en unités minimales de devise. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
approvedAmountMontant pré-autorisé en unités monétaires minimales. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
depositedAmountMontant d'achèvement en unités monétaires minimales. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
refundedAmountMontant de remboursement en unités minimales de devise. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
approvedAmountFormattedMontant pré-autorisé formaté. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
depositedAmountFormattedMontant de versement formaté. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
refundedAmountFormattedMontant de remboursement formaté. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
totalAmountFormattedMontant total formaté de la commande (montant enregistré + commission). DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
depositedTotalAmountFormattedMontant total formaté de finalisation (tous les montants de finalisation + tous les montants de remboursement + commission). DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
approvalCodeCode d'autorisation du paiement, obtenu du processing. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
authCodeCode d'autorisation DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
bankNameDénomination de la banque ayant émis la carte du client. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
currencyDevise de la commande. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
depositFlagDrapeau indiquant le type d'opération.
  • 1 - achat
  • 2 - préautorisation
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
eciIndicateur de commerce électronique. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
ipAdresse IP du payeur. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
ipCountryCodeCode du pays de la banque émettrice. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
maskedPanNuméro de carte masqué du client. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
mdOrderNuméro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
mdorderNuméro de commande dans la passerelle de paiement. Unique dans les limites de la passerelle de paiement. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
merchantFullNameNom complet du vendeur. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
merchantLoginLogin du vendeur. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
orderDescriptionDescription de la commande. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
orderNumberNuméro de commande (ID) dans le système du marchand. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
threeDSTypeType de transaction (3DS). Valeurs possibles : SSL, THREE_DS1_FULL, THREE_DS1_ATTEMPT, THREE_DS2_FULL, THREE_DS2_FRICTIONLESS, THREE_DS2_ATTEMPT, THREE_DS2_EXEMPTION_GRANTED, THREE_DS2_3RI, THREE_DS2_3RI_ATTEMPT DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
dateDate de création de la commande. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
clientIdNuméro de client (ID) dans le système du marchand. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT,BINDING_CREATED, BINDING_ACTIVITY_CHANGED
actionCodeCode de résultat d'exécution de l'opération. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
actionCodeDescriptionDescription du code de résultat d'exécution de l'opération. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentRefNumReference Retrieval Number - identifiant de transaction assigné par la banque acquéreur. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentStateStatut de la commande. Possible values: started, payment_approved, payment_declined, payment_void, payment_deposited, refunded, pending, partly_deposited DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentWayMode de paiement de la commande. Valeurs possibles supplémentaires du paramètre sont indiquées ici. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
processingIdIdentifiant du client dans le traitement. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
refNumReference Retrieval Number - identifiant de transaction assigné par la banque acquéreur. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
refnumReference Retrieval Number - identifiant de transaction assigné par la banque acquéreur. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
terminalIdIdentifiant du terminal dans le système traitant le paiement. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentSystemNom du système de paiement. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
currencyNameCode ISO à trois lettres de la devise. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
transactionAttributesAttributs de la commande. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
paymentDateDate de paiement de la commande.DEPOSITED, APPROVED, REVERSED, REFUNDED
depositedDateDate de l'opération de finalisation de la commande.DEPOSITED, APPROVED, REVERSED, REFUNDED
refundedDateDate de l'opération de remboursement de la commande.REFUNDED
reversedDateDate de l'opération d'annulation de la commande.DEPOSITED, REVERSED, REFUNDED
declineDateDate d'annulation de la commande. DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
xidIndicateur de commerce électronique de la transaction, défini par le vendeur. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
cavvValeur de vérification d'authentification du porteur de carte. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
authValueValeur de vérification d'authentification du porteur de carte. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
sessionExpiredDateDate et heure d'expiration de la commande. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
tokenizeCryptogramCryptogramme tokenisé. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
creditBankNameNom de la banque ayant émis la carte pour le crédit (en P2P).DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
creditPanCountryCodeCode pays de la carte du destinataire (en P2P).DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
isInternationalP2PSi la transaction P2P est internationale.DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
recipientDataInformations sur le destinataire P2P.DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
transactionTypeIndicatorInformations sur le destinataire P2P. Valeurs possibles :
  • A - Virement de carte à carte d'un même propriétaire (de compte à compte)
  • B - Virement dans le but d'acquérir de la cryptomonnaie
  • C - Virement pour l'achat de cryptomonnaie
  • D - Versement de fonds
  • E - Virement d'argent sans changement de propriétaire de l'argent
  • F - Virement pour les paris sur les jeux de hasard
  • G - Versement dans les jeux de hasard en ligne
  • L - Virement pour le remboursement de factures de carte de crédit
  • O - Virement pour le paiement de dettes
  • P - Virement de carte à carte de propriétaires différents
  • W - Virement sur son propre compte de portefeuille numérique par étapes pour le paiement
DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
operationTypeType d'opération P2P : AFT/OCT.DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
debitBankNameNom de la banque ayant émis la carte pour le débit (en P2P).DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
debitPanCountryCodeCode pays de la carte pour le débit (en P2P).DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
p2pDebitRrnRRN (Reference Retrieval Number) de l'opération de débit P2P.DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT
aResTransStatusÉtat de la transaction de la réponse ACS à la demande d'authentification (ARes). Transmis lors de l'utilisation de 3DS2. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
aResTransStatusReasonRaison de l'état de la transaction dans le message ARes. Transmis lors de l'utilisation de 3DS2. Le paramètre fournit des informations supplémentaires sur la raison d'un état d'authentification spécifique. Accepte des valeurs de 2 chiffres, par exemple, 01, 02. Voir la liste complète des valeurs ci-dessous. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
rreqTransStatusStatut de la transaction de la demande de transmission des résultats d'authentification utilisateur depuis ACS (RReq). Transmis lors de l'utilisation de 3DS2. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
rReqTransStatusReasonRaison de l'état de la transaction dans le message RReq. Transmis lors de l'utilisation de 3DS2. Le paramètre fournit des informations supplémentaires sur la raison d'un résultat spécifique d'authentification du porteur de carte. Accepte des valeurs de 2 chiffres, par exemple, 01, 02. Voir la liste complète des valeurs ci-dessous. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
threeDSProtocolVersionVersion du protocole 3DS. Valeurs possibles : "2.1.0", "2.2.0" pour 3DS2.
Si threeDSProtocolVersion n'est pas transmis dans la demande, alors pour l'autorisation 3D Secure la valeur par défaut sera utilisée (2.1.0 - pour 3DS 2).
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
rReqChallengeCancelIndicateur d'annulation du processus Challenge dans le message RReq. Transmis lors de l'utilisation de 3DS2. Le paramètre indique qui a initié l'annulation de l'authentification : le porteur de carte, le marchand ou l'émetteur. Accepte des valeurs de 2 chiffres, par exemple, 01, 03. Voir la liste complète des valeurs ci-dessous. DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
cvvResultCodeCode de résultat de vérification CVV (Card Verification Value), qui est retourné dans la réponse à la demande d'autorisation de paiement. Valeurs admissibles :
  • M - CVV correspond;
  • N - CVV ne correspond pas;
  • P - Non traité;
  • S - CVV ne doit pas être présent sur la carte;
  • U - L'émetteur n'est pas certifié / ne participe pas à la vérification;
  • X - Pas de réponse du réseau.
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT
avsCodeCode de réponse de vérification AVS (vérification de l'adresse et du code postal du porteur de carte). Valeurs possibles:
  • -1 – le code postal et l'adresse correspondent.
  • 1 – l'adresse correspond, le code postal ne correspond pas.
  • 2 - le code postal correspond, l'adresse ne correspond pas.
  • 3 - le code postal et l'adresse ne correspondent pas.
  • 50 - vérification des données demandée, mais le résultat est infructueux.
  • 51 - format de demande AVS/AVV de vérification incorrect.
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT

Valeurs autorisées aResTransStatusReason et rreqTransStatusReason:

Valeurs autorisées rreqChallengeCancel :

Exemples de code

Cryptographie symétrique

Java
package net.payrdr.test;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collector;

public class SymmetricCryptographyExample {

    private static final String secretToken = "ooc7slpvc61k7sf7ma7p4hrefr";
    private static final Map<String, String> callbackParams = Map.of(
            "checksum", "EAF2FB72CAB99FD5067F4BA493DD84F4D79C1589FDE8ED29622F0F07215AA972",
            "mdOrder", "06cf5599-3f17-7c86-bdbc-bd7d00a8b38b",
            "operation", "approved",
            "orderNumber", "2003",
            "status", "1"
    );

    public static void main(String[] args) throws Exception {
        String signedString = callbackParams.entrySet().stream()
                .filter(entry -> !entry.getKey().equals("checksum"))
                .sorted(Map.Entry.comparingByKey(Comparator.naturalOrder()))
                .collect(Collector.of(
                        StringBuilder::new,
                        (accumulator, element) -> accumulator
                                .append(element.getKey()).append(";")
                                .append(element.getValue()).append(";"),
                        StringBuilder::append,
                        StringBuilder::toString
                ));

        byte[] mac = generateHMacSHA256(secretToken.getBytes(), signedString.getBytes());
        String signature = callbackParams.get("checksum");

        boolean verified = verifyMac(signature, mac);
        System.out.println("résultat de la vérification de la signature: " + verified);
    }

    private static boolean verifyMac(String signature, byte[] mac) {
        return signature.equals(bytesToHex(mac));
    }

    public static byte[] generateHMacSHA256(byte[] hmacKeyBytes, byte[] dataBytes) throws Exception {
        SecretKeySpec secretKey = new SecretKeySpec(hmacKeyBytes, "HmacSHA256");

        Mac hMacSHA256 = Mac.getInstance("HmacSHA256");
        hMacSHA256.init(secretKey);

        return hMacSHA256.doFinal(dataBytes);
    }

    private static String bytesToHex(byte[] bytes) {
        final byte[] HEX_ARRAY = "0123456789ABCDEF".getBytes(StandardCharsets.US_ASCII);
        byte[] hexChars = new byte[bytes.length * 2];
        for (int j = 0; j < bytes.length; j++) {
            int v = bytes[j] & 0xFF;
            hexChars[j * 2] = HEX_ARRAY[v >>> 4];
            hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
        }
        return new String(hexChars, StandardCharsets.UTF_8);
    }
}

Cryptographie asymétrique

Java
package net.payrdr.test;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.security.Signature;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Base64;
import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collector;

public class AsymmetricCryptographyExample {

    private static final Map<String, String> callbackParams = Map.of(
            "amount", "35000099",
            "sign_alias", "SHA-256 with RSA",
            "checksum", "163BD9FAE437B5DCDAAC4EB5ECEE5E533DAC7BD2C8947B0719F7A8BD17C101EBDBEACDB295C10BF041E903AF3FF1E6101FF7DB9BD024C6272912D86382090D5A7614E174DC034EBBB541435C80869CEED1F1E1710B71D6EE7F52AE354505A83A1E279FBA02572DC4661C1D75ABF5A7130B70306CAFA69DABC2F6200A698198F8",
            "mdOrder", "12b59da8-f68f-7c8d-12b5-9da8000826ea",
            "operation", "deposited",
            "status", "1");

    private static final String certificate =
            "MIICcTCCAdqgAwIBAgIGAWAnZt3aMA0GCSqGSIb3DQEBCwUAMHwxIDAeBgkqhkiG9w0BCQEWEWt6" +
                    "bnRlc3RAeWFuZGV4LnJ1MQswCQYDVQQGEwJSVTESMBAGA1UECBMJVGF0YXJzdGFuMQ4wDAYDVQQH" +
                    "EwVLYXphbjEMMAoGA1UEChMDUkJTMQswCQYDVQQLEwJRQTEMMAoGA1UEAxMDUkJTMB4XDTE3MTIw" +
                    "NTE2MDEyMFoXDTE4MTIwNTE2MDExOVowfDEgMB4GCSqGSIb3DQEJARYRa3pudGVzdEB5YW5kZXgu" +
                    "cnUxCzAJBgNVBAYTAlJVMRIwEAYDVQQIEwlUYXRhcnN0YW4xDjAMBgNVBAcTBUthemFuMQwwCgYD" +
                    "VQQKEwNSQlMxCzAJBgNVBAsTAlFBMQwwCgYDVQQDEwNSQlMwgZ8wDQYJKoZIhvcNAQEBBQADgY0A" +
                    "MIGJAoGBAJNgxgtWRFe8zhF6FE1C8s1t/dnnC8qzNN+uuUOQ3hBx1CHKQTEtZFTiCbNLMNkgWtJ/" +
                    "CRBBiFXQbyza0/Ks7FRgSD52qFYUV05zRjLLoEyzG6LAfihJwTEPddNxBNvCxqdBeVdDThG81zC0" +
                    "DiAhMeSwvcPCtejaDDSEYcQBLLhDAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAfRP54xwuGLW/Cg08" +
                    "ar6YqhdFNGq5TgXMBvQGQfRvL7W6oH67PcvzgvzN8XCL56dcpB7S8ek6NGYfPQ4K2zhgxhxpFEDH" +
                    "PcgU4vswnhhWbGVMoVgmTA0hEkwq86CA5ZXJkJm6f3E/J6lYoPQaKatKF24706T6iH2htG4Bkjre" +
                    "gUA=";

    public static void main(String[] args) throws Exception {

        String signedString = callbackParams.entrySet().stream()
                .filter(entry -> !entry.getKey().equals("checksum") && !entry.getKey().equals("sign_alias"))
                .sorted(Map.Entry.comparingByKey(Comparator.naturalOrder()))
                .collect(Collector.of(
                        StringBuilder::new,
                        (accumulator, element) -> accumulator
                                .append(element.getKey()).append(";")
                                .append(element.getValue()).append(";"),
                        StringBuilder::append,
                        StringBuilder::toString
                ));

        InputStream publicCertificate = new ByteArrayInputStream(Base64.getDecoder().decode(certificate));
        String signature = callbackParams.get("checksum");

        boolean verified = checkSignature(signedString.getBytes(), signature.getBytes(), publicCertificate);
        System.out.println("résultat de la vérification de signature: " + verified);
    }

    private static boolean checkSignature(byte[] signedString, byte[] signature, InputStream publicCertificate) throws Exception {
        CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
        X509Certificate x509Cert = (X509Certificate) certFactory.generateCertificate(publicCertificate);

        Signature signatureAlgorithm = Signature.getInstance("SHA512withRSA");
        signatureAlgorithm.initVerify(x509Cert.getPublicKey());
        signatureAlgorithm.update(signedString);

        return signatureAlgorithm.verify(decodeHex(new String(signature)));
    }

    private static byte[] decodeHex(String hex) {
        int l = hex.length();
        byte[] data = new byte[l / 2];
        for (int i = 0; i < l; i += 2) {
            data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
                    + Character.digit(hex.charAt(i + 1), 16));
        }
        return data;
    }
}

Cryptographie symétrique

PHP
<?php
  
$data = 'amount;123456;mdOrder;3ff6962a-7dcc-4283-ab50-a6d7dd3386fe;operation;deposited;orderNumber;10747;status;1;';
$key = 'yourSecretToken';
$hmac = hash_hmac ( 'sha256' , $data , $key);
  
echo "[$hmac]
";
?>
  1. Attribuez une valeur de chaîne à la variable data.
  2. Attribuez la valeur de la clé privée à la variable key.
  3. La fonction hash_hmac ( 'sha256', $data, $key) calcule la somme de contrôle de la chaîne transmise, à l'aide de la clé privée selon l'algorithme SHA-256.
  4. Enregistrez le résultat du travail de la fonction dans la variable hmac.
  5. Affichez le résultat du travail de la fonction avec la commande echo.
  6. Comparez cette valeur avec celle transmise dans la notification sur l'état de la commande.

Cryptographie asymétrique

PHP
<?php
// data from response
$data = 'amount;35000099;mdOrder;12b59da8-f68f-7c8d-12b5-9da8000826ea;operation;deposited;status;1;';
$checksum = '9524FD765FB1BABFB1F42E4BC6EF5A4B07BAA3F9C809098ACBB462618A9327539F975FEDB4CF6EC1556FF88BA74774342AF4F5B51BA63903BE9647C670EBD962467282955BD1D57B16935C956864526810870CD32967845EBABE1C6565C03F94FF66907CEDB54669A1C74AC1AD6E39B67FA7EF6D305A007A474F03B80FD6C965656BEAA74E09BB1189F4B32E622C903DC52843C454B7ACF76D6F76324C27767DE2FF6E7217716C19C530CA7551DB58268CC815638C30F3BCA3270E1FD44F63C14974B108E65C20638ECE2F2D752F32742FFC5077415102706FA5235D310D4948A780B08D1B75C8983F22F211DFCBF14435F262ADDA6A97BFEB6D332C3D51010B';

// your public key (e.g. SHA-512 with RSA)
// if you have a CERT, please see openssl_get_publickey()
$publicKey = <<<EOD
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwtuGKbQ4WmfdV1gjWWys
5jyHKTWXnxX3zVa5/Cx5aKwJpOsjrXnHh6l8bOPQ6Sgj3iSeKJ9plZ3i7rPjkfmw
qUOJ1eLU5NvGkVjOgyi11aUKgEKwS5Iq5HZvXmPLzu+U22EUCTQwjBqnE/Wf0hnI
wYABDgc0fJeJJAHYHMBcJXTuxF8DmDf4DpbLrQ2bpGaCPKcX+04POS4zVLVCHF6N
6gYtM7U2QXYcTMTGsAvmIqSj1vddGwvNGeeUVoPbo6enMBbvZgjN5p6j3ItTziMb
Vba3m/u7bU1dOG2/79UpGAGR10qEFHiOqS6WpO7CuIR2tL9EznXRc7D9JZKwGfoY
/QIDAQAB
-----END PUBLIC KEY-----
EOD;

$binarySignature = hex2bin(strtolower($checksum));
$isVerify = openssl_verify($data, $binarySignature, $publicKey, OPENSSL_ALGO_SHA512);
if ($isVerify == 1) {
    echo "signature ok
";
} elseif ($isVerify == 0) {
    echo "bad (there's something wrong)
";
} else {
    echo "error checking signature
";
}
?>
Catégories:
eCommerceAPI V1
Catégories
Résultats de recherche