OG-EP Référentiel
Raccourcis espace
OG-EP Référentiel OGEPREF

Présentation

L'index Transaction contient l'ensemble des transactions VAD et Proxy traitées par l'Etablissement de Paiement depuis sa création.

On y retrouve toutes les catégories de transactions CB (fournies par MBA) et Visa/MasterCard (fournies par BNPP) :

  • les paiements : type FAC code Z0, X0 et Y0
  • les remboursements : type AVO code Z0, X0 et Y0
  • les impayés : type FAC code Z1, X5 et X4

L'index Transaction est alimenté en temps réel à chaque dépôt de fichier CREMBA dans le Puits par les transactions qu'il contient.

Une consolidation est également planifiée en début d'après midi pour rapprocher les données CREMBA avec les Données tierces exportées quotidiennement par Payline et PayAvenue.

Cet index est aujourd'hui utilisé pour produire des reportings règlementaires (OSCAMP - Cartographie des moyens de paiement et Reporting SURFI), mais aussi pour de la Reporting interne - Data viz.

Architecture technique

Streaming layer

A chaque nouvelle ligne de CRE MBA (transactions CB VI ou MC) qui rentrent dans le Puits, un consumer Streaming est déclenché pour préparer la donnée et la pousser dans l'index Elastic Search. Les données Payline et Payavenue ne sont pas rapprochées à ce moment là car elles n'ont pas encore livrées par les fournisseurs).

Batch layer

Tous les jours (aujourd'hui à 15h pour passer après les vacations VMC), le job Batch récupère, à partir de toutes les vacations "reglement-transactions", les lignes de CRE MBA associées. Pour chacune d'elle, il va chercher sa correspondance dans les fichiers Payline et PayAvenue fournis. Les données sont ensuite préparées et poussées dans ElasticSearch. Il va donc mettre à jour les données déjà poussées par le Streaming mais avec un niveau de détails plus fins.

Sources de données

L'index Transaction est généré sur la base des fichiers CRE MBA CB VI et MC aujourd'hui déposés dans le Data Lake.

Les données pays (Refpays) et commerçants (Refcom) sont également chargées depuis les tables HBase.

Enfin, les données tierces provenant de Payline et PayAvenue sont également récupérées et certaines viendront écraser les données du CRE.

Règle écrasement de donnée

Si la donnée en entrée est nulle ou vide OU que la date de vente fournie par le CRE est comprise entre le et  

Alors on remplace la donnée avec celle fournie par Payline ou PayAvenue.

Cet intervalle de date correspond à un bug identifié sur un décalage de colonnes sur les fichiers CRE. Aucun rattrapage n'a été fait à l'époque pour ré-ingérer les données. Si on veut faire ce rattrapage aujourd'hui, il faut faire une analyse d'impact.

Rattrapage - manual job

Le dataflow de l'index Transaction est idempotent, il est donc possible d'effectuer un rattrapage de données à n'importe quelle date si jamais il y a eu une interruption de service ou s'il y a de nouveaux champs à rajouter dans l'index par exemple. La business date peut être aussi bien un jour précis qu'un intervalle de date, elle correspond au jour de vacation.

Exemple de rattrapage sur le 01/12/2021
{
	"operations" : [{
		"job":"warehouse-cre-batch-job-manual",
		"business-date":"20211201"
	}]
}
Exemple de rattrapage sur le mois de Novembre 2021
{
	"operations" : [{
		"job":"warehouse-cre-batch-job-manual",
		"business-date":"20211101,20211130"
	}]
}

Format

Field Elastick SearchTypeDescriptionMapping (aliementation source)
_idStringConcaténation du code opération, "|", et référence d'archivageCRE . operationCode + "|" + CRE . referenceArchivage
idStringConcaténation du code opération, "|", et référence d'archivageCRE . operationCode + "|" + CRE . referenceArchivage
referenceStringRéférence archivage fournie dans le fichier CRECRE . referenceArchivage
src-fileStringNom du fichier CRE dans lequel était présente la transactionCRE . filename
credit-card-numberStringNuméro de carte de crédit tokenisé (CB) ou masqué préfixé par 000 (VI et MC)CRE . creditCardNumber
operation-codeStringCode de l'opération ("Y0", "X0"...)CRE . operationCode
internal-operation-codeStringCode d'opération interne ("AVO" ou "FAC")CRE . codeOperationInterneImpaye
interbank-settlement-dateDateDate de règlement interbanqueCRE . dateReglementInterbancaire
sent-in-compensation-dateDateDate d'envoi en compensationCRE . dateEnvoiEnCompensation
sale-dateDateDate de venteCRE . dateVente
payment ?Object

clientObjectLes données du client sont chargées à partir du numéro de contrat fourni dans le CRE-
client . idStringId du commerçant en base

Refcom . rowKey

client . siretStringNuméro de Siret fourni dans le CRECRE . siret
client . nameStringNom du clientRefcom . pvad1
client . companyNameStringNom du client (le même que dans l'index Cashout)Refcom . pladr1
client . accountIdStringNuméro du compteRefcom . idcpcm
client . contract-numberStringNuméro de contratRefcom . nucm
client . distance-sellingStringVente à distance activé ("o" ou "n")Refcom . vad
client . contactless-paymentStringPaiement sans contact activéRefcom . inpmsc
client . ecommerce-paymentStringPaiement à distance activéRefcom . inpmit
client . ecommerce3-dsStringPaiement avec 3DS activé(non implémenté)
countryObject

country . idString

CRE . codePays par défaut

+ Règle d'écrasement de donnée

country . codeString

CRE . codePays par défaut

+ Règle d'écrasement de donnée

country . areaString

CRE . zoneGeoCarte par défaut

+ Règle d'écrasement de donnée

country . default-idString
CRE . codePays
country . default-codeString
CRE . codePays
country . default-areaString
CRE . zoneGeoCarte 
extra-params-payavenueObject

On tente de récupérer les données par la référence d'archivage (ou id payline)

(en hexadécimal pour Payline / en décimal pour Payavenue
en position 658-669 dans le cre_mba / en position 111-122 dans le cre_vi ou cre_mc  )

Sinon on tente de récupérer les données par numéro de carte tokenisé (+ montant + date de vente + contrat)

Si aucune correspondance n'est trouvé sur les référentiels Payline et PayAvenue, on tente de récupérer les données en mode dégradé (+ montant + date de vente)

extra-params-payavenue . natureCardString
PayAvenue . natureCard
extra-params-payavenue . typeCardString
PayAvenue . productType
extra-params-payavenue . typeApplicationString
PayAvenue . appType
extra-params-payavenue . areaCountryString
PayAvenue . countryCode
extra-params-payavenue . authorizationCodeString
PayAvenue . autorReason
extra-params-payavenue . exemptionCodeString
si PayAvenue . autorReason est vide et CRE . montant < 50 € alors "LOW_AMOUNT"
extra-params-paylineObject

On tente de récupérer les données par la référence d'archivage (ou id payline)

(en hexadécimal pour Payline / en décimal pour Payavenue
en position 658-669 dans le cre_mba / en position 111-122 dans le cre_vi ou cre_mc  )

Sinon on tente de récupérer les données par numéro de carte tokenisé (+ montant + date de vente + contrat)

Sinon on essaye par numéro de carte masqué (+ montant + date de vente)

extra-params-payline . natureCardString
Payline . natureCard
extra-params-payline . typeCardString
Payline . cardProductCode
extra-params-payline . typeApplicationString
Payline . transactionType
extra-params-payline . areaCountryString
Payline . issuerCodePays
extra-params-payline . authorizationCodeString
Payline . autorReason
extra-params-payline . exemptioncodeString
Payline . exemption
extra-params-payline . externalTransactionIdString
Payline . externalTransactionId
extra-params-payline . orderRefString
Payline . orderRef
commissionObject

commission . interchangeAmountBigDecimal

CRE . montantCommissionInterchangeViMc signé pour VMC

CRE . montantCommissionInterchange signé pour CB

commission . schemeAmountBigDecimal
CRE . montantCommissionReseauViMc signé
commission . bankAmountBigDecimal
CRE . montantCommissionBanqueViMc signé
commission . clientAmountBigDecimal
CRE . montantCommissionCommercant
grossAmountBigDecimal
CRE . montantBrutEnEuro signé
grossAmountRoundedBigDecimal
CRE . montantBrutEnEuro signé arrondi HALF_UP
netAmountBigDecimal
CRE . montantNet
degradedMatchingBoolean
True si la récupération PayAvenue est en mode dégradée sinon False
natureCardCodeString

CRE . natureCarte par défaut

+ Règle d'écrasement de donnée

natureCardCodeDefaultString
CRE . natureCarte
schemeCodeString
crembaConfig.getScheme()
archiveIdString
CRE . referenceArchivage
remittanceIdString
CRE . identifiantRemise
providerString
PAYLINE ou PAYAVENUE
typeCardString
CRE . typeCarte
secureModeBoolean

True si Payline.exemption OU Payline.autorReason est Y ou CH

Sinon False

exemptionModeString
Payline . exemption
ingestedAtDatetime
Datetime du nom de fichier
updatedAtDatetime
now()
timestampDatetime

CB : Datetime du nom de fichier

VMC : Datetime du nom de fichier - 1 jour


  • Aucune étiquette
Écrire un commentaire...
OG-EP Référentiel OGEPREF