O Microsoft Dynamics 365 tem sua própria linguagem avançada e expressiva para ajudá-lo a definir e expressar a estratégia de fraude. Essa linguagem tem muitas semelhanças com C# e SQL e foi desenvolvida para oferecer a flexibilidade necessária para tratar de fraudes em cenários de negócios exclusivos.
Uma instrução LET é usada para definir uma nova variável. O escopo da variável é a regra ou o conjunto de velocidade em que a variável é definida. Os nomes de variáveis devem ser prefixados por um sinal de dólar ($).
Qualquer número de instruções LET pode ser usado na seção Condição e nas cláusulas de todos os tipos de regra e conjuntos de velocidade.
LET $fullName = @"user.firstName" + @"user.lastName"
OBSERVE
OBSERVE <ObservationFunction>(<KeyValuePairs>) [ WHEN <BooleanExpression>
]
Uma instrução OBSERVE não encerra a execução da regra com uma decisão. Apenas registra pares chave-valor na resposta da API ou nos logs de rastreamento. As regras subsequentes e as cláusulas de regra continuarão sendo executadas até que uma instrução RETURN seja atingida.
Se uma cláusula WHEN estiver presente e for avaliada como False, a instrução OBSERVE não será registrada.
O máximo é um para usar em cada cláusula nas seguintes regras:
Regras de compra
Regras de avaliação personalizada
Regras de proteção da conta
OBSERVE Output(reason="high score")
OBSERVE TRACE(ip=@"device.ipAddress") WHEN Model.Risk(). Pontuação > 400
RETURN <DecisionFunction> [ ,<ObservationFunction>(<KeyValuePairs>) ] [ WHEN <BooleanExpression> ]
Uma instrução RETURN encerra a execução da regra com uma decisão.
A instrução deve especificar uma função de decisão válida: Approve(), Reject(), Challenge() ou Review().
A instrução também pode especificar uma ou mais funções de observação: Output() ou Trace()
Finalmente, a instrução pode incluir uma cláusula WHEN para especificar a condição na qual ela deve fazer qualquer uma das anteriores.
O máximo é um para usar por cláusula nas seguintes regras:
Regras de compra
Regras de avaliação personalizada
Regras de proteção da conta
RETURN Review() WHEN IsWatch("Device Support List", @"deviceAttributes.deviceId") || IsWatch("Payment Support List", @"paymentInstrumentList.merchantPaymentInstrumentId")
RETURN Reject(), Trace(ip=@"device.ipAddress") WHEN Model.Risk(). Pontuação > 400
ROUTETO QUEUE <QueueName> [ WHEN <BooleanExpression> ]
O comando ROUTETO é usado em regras de roteamento para as avaliações de correspondência direta para filas de gerenciamento de casos.
A cláusula WHEN opcional pode ser usada para descrever as condições nas quais o comando deve executar o roteamento.
O máximo é um para usar por cláusula nas seguintes regras de roteamento.
ROUTETO Queue("High Value Queue") WHEN @"purchase.request.totalAmount"> 500
SELECT <AggregationFunction> AS <VelocityName> FROM <AssesmentType> GROUPBY <GroupExpression> [ WHEN <BooleanExpression> ]
Uma instrução SELECT é usada em conjuntos de velocidade para definir uma velocidade. Ela deve especificar uma função de agregação.
A cláusula AS exigida é usada para criar um alias para a sua velocidade. Esse alias pode ser referenciado a partir de regras.
A cláusula FROM exigida é usada para especificar um tipo de avaliação para observar uma velocidade ativa. Os valores válidos são Purchase, AccountLogin, AccountCreation, Chargeback, BankEvent e CustomAssessment.
A cláusula GROUPBY exigida especifica uma propriedade ou uma expressão. Todos os eventos avaliados para o mesmo valor na instrução GROUPBY serão combinados para calcular a agregação solicitada na instrução SELECT.
Por exemplo, para calcular uma agregação para cada usuário, use GROUPBY@"user.userId".
A cláusula WHEN opcional especifica uma expressão booleana que determina se a avaliação que está sendo processada deve ser incluída na velocidade que está sendo definida.
O máximo é um para usar por cláusula nos conjuntos de velocidade.
SELECT Count() AS _Purchase_Rejections_Per_Email FROM Purchase WHEN @"ruleEvaluation.decision" == "Reject" GROUPBY @"user.email"
SELECT DistinctCount(@"purchaseId") AS _BankDeclines_Per_Device FROM BankEvent WHEN @"status" == "DECLINED" GROUPBY @"purchase.deviceContext.externalDeviceId"
WHEN <BooleanExpression>
A instrução WHEN é como as cláusulas WHEN nas outras instruções, mas ela está sozinha na seção Condição de regras e conjuntos de velocidade. Ela especifica uma condição booliana que determina se a regra inteira, o conjunto de velocidade ou a regra de roteamento deve ser executada.
O máximo é um para usar na seção Condição de todos os tipos de regras e conjuntos de velocidade.
QUANDO Model.Risk(). Pontuação > 400
Função de ação <DO>
Uma instrução DO é usada para executar alguma ação no final da execução da regra. Essa instrução só pode ser usada em ações pós-decisão
DO SetResponse(name = @”firstname” + @”lastname”)
Referenciar atributos e variáveis
Você pode usar o operador de sinal de arroba (@) para fazer referência a um atributo do evento atual.
Variável
Descrição
Exemplo
@
Um sinal de arroba (@) é usado para fazer referência a um atributo do evento de entrada. O atributo pode ser enviado como parte da carga da solicitação ou o Microsoft Dynamics 365 Fraud Protection pode gerá-lo.
Após o sinal de arroba (@), especifique o caminho completo do atributo que você deseja referenciar. Coloque o caminho entre aspas (por exemplo, @"address.city").
Se o atributo referenciado não fizer parte do conteúdo do evento, o valor padrão desse tipo será retornado: 0,0 para duplas, uma cadeia de caracteres vazia para cadeias de caracteres e assim por diante.
O tipo do atributo é inferido do contexto em que o atributo é usado. Se não houver contexto suficiente, o tipo Cadeia de caracteres será usado por padrão.
Um cifrão ($) é usado para fazer referência a uma variável definida em uma instrução LET . Para obter mais informações, consulte Definir suas próprias variáveis.
$fullName
@a[x]
Essa variável é usada para indexar variáveis de matriz.
Se o conteúdo de solicitação de uma avaliação contiver uma matriz de itens, você poderá acessar elementos individuais da matriz usando a seguinte sintaxe: @"productList[0]".
Para acessar um atributo desse elemento, use a seguinte sintaxe: @"productList[0].productId"
@"productList[0].productId"
@"paymentInstrumentList[3].type"
Exists
Este operador verifica se existe uma variável na carga do evento.
Exists(String variable)
Exists(@"user.email")
Request.CorrelationId()
Esta função referencia a ID de correlação exclusiva do evento que está sendo avaliada. Você pode usar essa função para acessar a ID de correlação de um evento na experiência de regras e passá-la para uma chamada externa como um parâmetro ou um cabeçalho.
External.MyExternalCall(Request.CorrelationId())
.GetDiagnostics()
Esta função pode ser usada para descobrir informações de diagnóstico e depuração importantes de uma chamada externa ou de uma resposta de avaliação externa. Para uma chamada externa, o objeto Diagnostics contém o conteúdo da solicitação, o ponto de extremidade, o código HttpStatus, a mensagem de erro e a latência. O ponto de extremidade não está disponível no objeto Diagnostic para uma resposta de avaliação externa. Qualquer um desses campos pode ser usado nas regras depois que o objeto Diagnostics for criado usando seu método de extensão correspondente". GetDiagnostics()"
LET $extResponse = External. myCall(@"device.ipAddress")
LET $extResponseDiagnostics = $extResponse.GetDiagnostics()
WHEN $extResponseDiagnostics. HttpStatusCode != 200
Definir suas próprias variáveis
Você pode usar a palavra-chave LET para definir uma variável. Essa variável pode ser referenciada em outros locais da regra. Prefixe todas as variáveis por um cifrão ($).
Por exemplo, você declara a variável a seguir.
LET $fullName = @"user.firstName" + @"user.lastName"
As variáveis declaradas em uma instrução LET podem ser usadas somente no escopo do conjunto de regras ou de velocidades no qual a instrução está definida.
Por exemplo, para referenciar a variável do exemplo anterior, você pode escrever a instrução a seguir.
WHEN $fullName == "Kayla Goderich"
Observação
Depois de ser definida, uma variável não poderá ser atualizada com um novo valor.
Funções de variáveis globais
Você pode usar funções de variáveis globais para definir e obter variáveis dentro de regras. Depois que as variáveis globais são definidas, elas podem ser acessadas em uma regra de decisão, velocidade, regras de roteamento e ações pós-decisão no mesmo ambiente ou ambientes filhos. A hierarquia usada pelo Fraud Protection está listada na tabela a seguir. Por exemplo, se você definir variáveis globais em uma regra no ambiente raiz, o Fraud Protection poderá recuperar seu valor em qualquer outra regra na mesma avaliação no mesmo ambiente ou em qualquer ambiente filho.
Operador
Descrição
Exemplo
SetVariables(k=v)
Essa função pode ser usada para definir pares de valores-chave, ou seja, definir valores para variáveis.
Do SetVariables(key= 123, email=@"user.email")
GetVariable("k")
Esta função pode ser usada para acessar as variáveis já definidas. Nos casos em que acessamos variáveis que nunca são definidas, um valor padrão é retornado.
GetVariable("key").AsInt()
GetVariable("email").AsString()
GetVariable("key").AsDouble()
GetVariable("key").AsBool()
GetVariable("key").AsDateTime()
GetVariable("key").AsJsonObject()
GetVariable("key").AsJsonArray()
Observação
As variáveis globais são específicas de uma única transação para uma determinada avaliação. Uma variável definida em uma transação não pode ser recuperada de outra transação ou outra avaliação.
Funções de decisão
As funções de decisão são usadas em regras para especificar uma decisão.
Tipo de decisão
descrição
Exemplo
Approve()
Este tipo especifica uma decisão de Aprovar. Ele pode incluir um motivo da aprovação e outra mensagem de suporte.
Sobrecargas:
Approve(String reason)
Approve(String reason, String supportMessage)
RETURN Approve()
RETURN Approve("on safe list")
RETURN Approve ("on safe list", "do not escalate")
Reject()
Este tipo especifica uma decisão de Rejeitar. Ele pode incluir um motivo da rejeição e outra mensagem de suporte.
Sobrecargas:
Reject(String reason)
Reject(String reason, String supportMessage)
RETURN Reject()
RETURN Reject("embargo country")
RETURN Reject("embargo country", "do not escalate")
Review()
Este tipo especifica uma decisão de Analisar. Ele pode incluir um motivo da análise e outra mensagem de suporte.
Sobrecargas:
Review(String reason)
Review(String reason, String supportMessage)
RETURN Review()
RETURN Review("user on watch list")
RETURN Review("user on watch list", "do not escalate")
Challenge(String challengeType)
Este tipo especifica uma decisão de Desafio e um tipo de desafio. Ele também pode incluir um motivo do desafio e outra mensagem de suporte.
RETURN Challenge ("SMS", suspected bot", "do not escalate")
Funções de observação
As funções de observação podem ser usadas para obter dados do contexto atual e gravá-los em outro local.
Tipo de retorno
descrição
Exemplo
Output(k=v)
Essa função pode ser usada para passar pares chave-valor para a seção CustomProperties da resposta da API. O par chave-valor seria aninhado em um objeto cujo nome seria o mesmo que o nome da cláusula que contém a instrução Output().
Essa função pode ser usada para disparar um evento de rastreamento e enviar pares de chave-valor para o namespace de rastreamento de eventos FraudProtection.Trace.Rule.
Essa função pode ser usada para passar pares chave-valor para a seção CustomProperties da resposta da API. O sectionName é um parâmetro opcional que pode ser ignorado. Essa função só pode ser usada em Ações Pós-Decisão; ele não está disponível na Regra de Decisão
Essa função faz referência à decisão para a avaliação atual que está sendo avaliada.
Response.Decision() == "Aprovar"
Funções de agregação
Função
descrição
exemplo
Count()
Essa função retorna o número de vezes que um evento ocorreu.
SELECT Count() AS numPurchases
DistinctCount(String key)
Essa função retorna o número de valores distintos para a propriedade especificada. Se a propriedade especificada for nula ou vazia para um evento de entrada, o evento não contribuirá para a agregação.
SELECT DistinctCount(@"device.ipAddress") AS distinctIPs
Sum(Double value)
Essa função retorna a soma de valores para uma propriedade numérica especificada.
O Fraud Protection suporta todas as operações de comparação e igualdade do C#. Esta tabela inclui alguns exemplos de operadores que podem ser úteis. Se você aplicar esses operadores a cadeias de caracteres, ocorrerão comparações lexicográficas.
Este operador verifica se o primeiro valor é maior do que o segundo valor.
Modelo.Risco(). Pontuação > 500
<
Este operador verifica se o primeiro valor é menor do que o segundo valor.
Modelo.Risco(). Pontuação < 500
>=
Este operador verifica se o primeiro valor é maior ou igual ao segundo valor.
Modelo.Risco(). Pontuação >= 500
<=
Este operador verifica se o primeiro valor é menor ou igual ao segundo valor.
Modelo.Risco(). Pontuação <= 500
X ? Y : Z
Esse operador verifica se a condição X é verdadeira ou não. Se for true, a instrução Y é executada e seu resultado é retornado. Caso contrário, a instrução Z será executada e seu resultado será retornado. Várias verificações lógicas também podem ser combinadas usando colchetes, para definir uma lógica IF THEN <> ELSE <> aninhada <>
Este operador retorna um número inteiro aleatório no intervalo fornecido, incluindo o valor mínimo e excluindo o valor máximo.
RandomInt(0, 100)
Operadores DateTime
O Fraud Protection dá suporte a propriedades, métodos e operadores do DateTime padrão C#. Esta tabela inclui alguns exemplos de funções e propriedades que podem ser úteis.
Operador
Descrição
Exemplo
UtcNow
Este operador obtém um objeto DateTime definido como a data e a hora atuais no computador, expresso como UTC.
DateTime.UtcNow
Hoje
Este operador obtém um objeto definido como a data atual, em que o componente de hora está definido como 00:00:00.
DateTime.Today
Subtract
Esse operador retorna um novo DateTime subtraindo uma data e hora especificadas de um DateTime de entrada.
DateTime.UtcNow.Subtract(@var1. ToDateTime())
DaysSince(DateTime date)
Este operador retorna um inteiro que representa o número de dias transcorridos entre o valor DateTime especificado e a data atual (expressa como Tempo Universal Coordenado [UTC]).
DaysSince(@"user.CreationDate")
Ano
Este operador obtém o componente de ano da data representada por essa instância.
@"user.creationDate".Year
Data
Este operador obtém um novo objeto que tem a mesma data que essa instância, mas em que o valor de tempo é definido como 00:00:00 (meia-noite).
@"user.creationDate".Date
Operadores de conversão de tipo
Para obter informações sobre a inferência de tipos, consulte a seção Inferência de tipos de atributos mais adiante neste artigo.
Operador
Descrição
Exemplo
Convert.ToDateTime
Esse operador converte a cadeia de caracteres em datatime e converte datatime em uma cadeia de caracteres usando o formato especificado.
Esse operador converte o valor especificado em Int32.
Convert.ToInt32(@var)
Converter.ToDouble
Esse operador converte o valor especificado em Double.
Convert.ToDouble(@var)
Funções da cadeia de caracteres
O Fraud Protection dá suporte à classe de cadeia de caracteres padrão C#. Esta tabela inclui alguns exemplos de funções e operadores que podem ser úteis.
Operador
Descrição
Exemplo
Começa com()
Este operador verifica se uma cadeia de caracteres começa com um prefixo especificado.
@"user.phoneNumber".StartsWith("1-")
EndsWith()
Este operador verifica se uma cadeia de caracteres termina com um sufixo especificado.
@"user.email".EndsWith("@contoso.com")
IsNumeric()
Este operador verifica se uma cadeia de caracteres é um valor numérico.
@"user.email".IsNumeric()
Length
Esse operador retorna o número de caracteres em uma cadeia de caracteres.
@"user.username".Extensão
ToDateTime()
Este operador converte uma cadeia de caracteres em um objeto DateTime.
@"user.creationDate".ToDateTime()
ToDouble()
Este operador converte uma cadeia de caracteres em um valor Double.
@"productList.purchasePrice".ToDouble()
ToInt32()
Este operador converte uma cadeia de caracteres em um valor Int32.
@"zipcode".ToInt32()
ToUpper ()
Esse operador retorna uma cópia dessa cadeia de caracteres convertida em maiúsculas.
@"user.username". ToUpper()
ToLower ()
Esse operador retorna uma cópia dessa cadeia de caracteres convertida em minúsculas.
@"user.username". ToLower()
IndexOf()
Esse operador relata o índice baseado em zero da primeira ocorrência de uma determinada subcadeia de caracteres dentro da cadeia de caracteres especificada.
@"user.username". IndexOf("@")
LastIndexOf()
Esse operador relata o índice baseado em zero da última ocorrência de uma determinada subcadeia de caracteres dentro da cadeia de caracteres especificada.
@"user.username". LastIndexOf("@")
Substring()
Esse operador retorna uma substring a partir de um índice baseado em zero dentro de uma string, com um segundo parâmetro opcional especificando o comprimento da substring desejada
@"user.username". Substring(0,5)
IsNullOrEmpty()
Esse operador retornará se a cadeia de caracteres especificada for nula ou vazia. Caso contrário, retorna falso.
@"user.username". IsNullOrEmpty()
IgnoreCaseEquals()
Esse operador retornará true se as duas cadeias de caracteres forem iguais, independentemente das diferenças de maiúsculas e minúsculas. Caso contrário, retorna falso.
@"user.username". IgnoreCaseEquals(@"user.email")
Contains()
Este operador verifica se uma cadeia de caracteres contém outra cadeia de caracteres.
@"productList.productName".Contains("Xbox")
ContainsOnly()
Este operador verifica se uma cadeia de caracteres contém apenas os conjuntos de caracteres fornecidos.
@"zipcode".ContainsOnly(CharSet.Numeric)
ContainsAll()
Este operador verifica se uma cadeia de caracteres contém todos os conjuntos de caracteres fornecidos.
Uso de CharSet em ContainsOnly, ContainsAll e ContainsAny
Os tipos de caractere a seguir podem ser usados em ContainsOnly, ContainsAll e ContainsAny.
Tipo de caractere
Descrição
Alfabético
a-z, A-Z
Apóstrofo
'
E comercial
@
Barra invertida
\
Vírgula
,
Hyphen
-
Numérico
0-9
Período
.
Barra
/
Sublinhado
_
Espaço em branco
Espaço único
Funções de detecção diversas
Essas funções ajudam a evitar fraudes, detectando de forma rápida e eficiente se os principais campos de entrada do usuário (como nomes e endereços) contêm rabiscos.
Função
descrição
Exemplo
GetPattern(String).maxConsonants
Número máximo de consoantes contíguas em uma cadeia de caracteres que não são separadas por uma vogal. Por exemplo, maxConsoantes para a string "01gggyturah" é 5.
GetPattern(@"user.email").maxConsonants
GetPattern(String).gibberScore
Pontuação baseada em ML entre 0 e 1; 0 indica mais probabilidade de ser algo sem sentido e 1 significa menos probabilidade de ser algo sem sentido.
GetPattern(@"user.email").gibberScore
Observação
O modelo de detecção variado se baseia na frequência de dois caracteres alfanuméricos consecutivos em documentos em inglês disponíveis publicamente. Pressupõe-se que, quanto mais frequentemente dois caracteres alfanuméricos consecutivos serem exibidos em documentos públicos, menores serão as chances de serem algo variado. O modelo deve fornecer apresentar razoáveis para textos em inglês e poderá ser usado para detectar se os nomes ou os endereços contiverem algo variado. No entanto, o modelo talvez não seja indicado para abreviações, como uma forma curta para estados (AZ, TX etc.) e também não pode ser usado para validar nomes ou endereços. Por último, o modelo não foi testado para textos que não sejam em inglês.
Funções de detecção de padrões
Essas funções ajudam a evitar fraudes, detectando de forma rápida e eficiente se os principais campos de entrada do usuário (como nomes e endereços) contêm rabiscos.
Função
descrição
Exemplo
Patterns.IsRegexMatch(padrão de cadeia de caracteres, origem da cadeia de caracteres)
Executa uma correspondência de expressão regular (regex) do padrão de cadeia de caracteres em relação a uma fonte de cadeia de caracteres. O resultado é um booleano, ou seja, verdadeiro (indicando que a cadeia de caracteres fornecida correspondeu ao padrão) ou falso (indicando nenhuma correspondência)
O padrão de cadeia de caracteres deve ser uma entrada constante.
A função retornará false (o resultado padrão) se o tempo de avaliação exceder 10 milissegundos.
Todas as limitações que não dão suporte ao NonBacktracking também se aplicam à função IsRegexMatch.
Funções do modelo
As funções de modelo executam os vários modelos de fraude e são úteis quando sua avaliação não executa automaticamente um ou mais modelos de fraude. Quando as funções do modelo são executadas, as informações sobre o modelo em execução durante a avaliação da regra são geradas na chamada à API de apuração de fraudes. Depois, a regra terá acesso ao resultado do modelo, incluindo pontuação, motivos e muito mais, que pode ser usado para o processamento adicional de regras e a tomada de decisões.
Tipo de modelo
Descrição
Exemplo
Risco
Avalia a probabilidade do risco de uma sessão.
Model.Risk()
Bot
Avalia a probabilidade de uma sessão ser iniciada por um bot. Passe uma ID de contexto do dispositivo que foi enviada para a solução de análise de impressões digitais para dispositivos do Fraud Protection.
Model.Bot(@deviceContextId)
Funções geográficas
As funções geográficas fornecem resolução por conversão de um endereço IP em um endereço geográfico. As funções geográficas podem ser invocadas em regras somente com o uso de IPs que fazem parte do conteúdo ou coletados pelo Fraud Protection por meio da análise de impressões digitais para dispositivos. As funções geográficas não podem ser chamadas para valores IP arbitrários.
Operador
Descrição
Exemplo
Geo.RegionCode(String ip)
Este operador converte um endereço IPv4 para o código de região dos EUA (ou seja, a abreviação do nome do estado ou da região dos EUA).
Por exemplo, para um endereço IP no estado de Washington, "WA" é retornado.
Geo.RegionCode(@"device.ipAddress")
Geo.Region(String ip)
Este operador converte um endereço IPv4 para o código de região dos EUA (ou seja, o nome do estado ou do território dos EUA).
Por exemplo, para um endereço IP no estado de Washington, "Washington" é retornado.
Geo.Region(@"device.ipAddress")
Geo.CountryCode(String ip)
Este operador converte um endereço IPv4 para o código de país/região.
Por exemplo, para um endereço IP na Austrália, "AU" é retornado.
Geo.CountryCode(@"device.ipAddress")
Geo.CountryRegion(String ip)
Este operador converte um endereço IP em um nome de região.
Por exemplo, para um endereço IP na Austrália, "Austrália" é retornado.
Geo.CountryRegion(@"device.ipAddress")
Geo.City(String ip)
Este operador converte um endereço IPv4 em um nome de cidade.
Por exemplo, para um endereço IP na cidade de Nova York, "cidade de Nova York" é retornada.
Geo.City(@"device.ipAddress")
Geo.MarketCode(String ip)
Este operador converte um endereço IPv4 para o código de mercado do endereço IP.
Por exemplo, para um endereço IP do Canadá, "NA" (América do Norte) será retornado.
Geo.MarketCode(@"device.ipAddress")
Funções de atributo de dispositivo
Operador
Descrição
Exemplo
Device.GetFullAttributes(String sessionId)
Retorna um conjunto completo de atributos de dispositivo para a sessão de impressão digital do dispositivo especificada. Consulte Configurar impressão digital do dispositivo para visualizar o conjunto completo de atributos do dispositivo
Retorna um subconjunto menor de atributos de dispositivo para a sessão de impressão digital do dispositivo especificada. O subconjunto é uma lista selecionada pelo Fraud Protection e contém os atributos mais usados.
Retorna até 20 atributos de dispositivo para a sessão de impressão digital do dispositivo especificada. A lista de atributos desejados deve ser especificada como parâmetros separados por vírgula
Retorna a velocidade máxima de deslocamento de um dispositivo em milhas por hora. O Fraud Protection determina a velocidade máxima pegando as últimas cinco sessões consecutivas de impressão digital e calculando a velocidade do dispositivo de sessão para sessão, retornando o máximo. O dispositivo é identificado nas sessões usando o ID do cookie.
As funções de pesquisa de BIN fornecem informações da conta do cartão de pagamento (por exemplo, rede do cartão, tipo de cartão, código do país do cartão, categoria do cartão) com base no número de identificação bancária (BIN). Os dados para pesquisa de BIN são provenientes dos principais provedores de dados BIN de terceiros e, em seguida, selecionados pelo Fraud Protection.
Operador
Descrição
Exemplo
BIN.Lookup(String BIN).cardNetwork
Essa função procura BIN e retorna a rede de cartões (por exemplo, Visa, Mastercard).
BIN.Lookup(@"card.bin").cardNetwork
BIN.Lookup(String BIN).cardType
Esse operador pesquisa o BIN e retorna o tipo de cartão (por exemplo, Débito, Crédito).
BIN.Lookup(@"card.bin").cardType
BIN.Lookup(String BIN).issuer
Esse operador pesquisa o BIN e retorna a organização emissora.
BIN.Lookup(@"card.bin").issuer
BIN.Lookup(String BIN).countryCode
Este operador pesquisa o BIN e retorna do código de país ISO de duas letras do cartão.
BIN.Lookup(@"card.bin").countryCode
ESCANINHO. Lookup(String BIN).cardCategory
Este operador pesquisa BIN e retorna a categoria do cartão (por exemplo, Pré-pago, Corporativo, Recompensas).
ESCANINHO. Lookup(@"card.bin").cardCategory
BIN.Lookup(String BIN).error
Esse operador pesquisa BIN e retorna uma mensagem de erro se o BIN não puder ser encontrado.
BIN.Lookup(@"card.bin").error
Funções de listagem
O Fraud Protection permite carregar listas personalizadas e referenciá-las no idioma.
Para obter informações sobre como carregar essas listas, consulte Gerenciar listas. Para obter mais informações sobre como usar listas em regras, consulte a seção Usar listas em regras mais adiante neste artigo.
Este operador pesquisa o valor de uma chave em uma lista do Fraud Protection. O nome da coluna que contém a chave e o nome da coluna que contém o valor devem ser especificados.
O valor sempre será retornado como uma cadeia de caracteres. Se a chave não for encontrada e se o parâmetro defaultValue não for especificado, "Desconhecido" será retornado.
O exemplo na próxima coluna procura o valor da variável @"user.email" na coluna E-mails da lista Lista de suporte por e-mail. Se uma correspondência for encontrada, a função retornará o valor da coluna Status da linha correspondente na lista. Se uma correspondência não for encontrada, a função retornará 0.
Lookup("Email Support List", "Emails", @"user.email", "Status",0)
Em
Este operador verifica se uma chave está contida em uma lista de valores separada por vírgulas.
In(@"user.countryRegion", "US, MX, CA")
InSupportList
Esse operador verifica se um atributo está em uma Lista de Suporte.
InSupportList('Lista de suporte por e-mail', @"user.email")
IsSafe
Esse operador verifica se uma entidade está marcada como Segura em uma Lista de Suporte.
IsSafe('Lista de suporte por e-mail', @"user.email")
ÉBloco
Esse operador verifica se uma entidade está marcada como Bloquear em uma Lista de Suporte.
IsBlock('Lista de suporte por e-mail', @"user.email")
IsWatch
Esse operador verifica se uma entidade está marcada como Observação em uma Lista de Suporte.
IsWatch('Lista de suporte por e-mail', @"user.email")
Usar listas em regras
Você pode usar os operadores ContainsKey e Lookup para referenciar listas carregadas no Fraud Protection. Para obter mais informações sobre listas, consulte Gerenciar listas.
ContainsKey
Para verificar se uma de suas listas contém um valor específico, use o operador ContainsKey. Especifique o nome da lista, a coluna e a chave a serem verificadas.
Por exemplo, você carrega uma lista de uma única coluna de endereços de email arriscados e a nomeia Lista de emails arriscados.
Email
Kayla@contoso.com
Jamie@bellowscollege.com
Marie@atatum.com
Em seguida, você poderá usar a sintaxe a seguir para rejeitar todas as transações dos endereços de email arriscados nesta lista.
RETURN Reject("risky email")
WHEN ContainsKey("Risky email list", "Email", @"user.email")
Esta cláusula verifica se a coluna "Email" na "Lista de emails arriscados" contém a chave @email. Se tiver, a transação será rejeitada.
Lookup
Para listas de várias colunas, você pode usar o operador Lookup para verificar o valor de uma coluna em uma chave específica.
Por exemplo, você cria uma lista que tem uma coluna para endereços de email e outra coluna que indica o status desses endereços de email. Você nomeia esta lista como Lista de emails.
Email
Status
Kayla@contoso.com
Arriscado
Jamie@bellowscollege.com
Arriscado
Marie@atatum.com
Arriscado
Camille@fabrikam.com
Seguro
Miguel@proseware.com
Seguro
Tyler@contoso.com
Seguro
Em seguida, você poderá usar a sintaxe a seguir para rejeitar todas as transações dos endereços de email desta lista que têm um status Arriscado.
Esta cláusula procura pela chave @"user.email" na coluna "Email" na "Lista de Emails" e verifica se o valor na coluna "Status" é Arriscado. Se tiver, a transação será rejeitada.
Se a chave @"user.email" não for encontrada na lista, o Fraud Protection retornará "Desconhecido".
Você também pode especificar seu próprio valor padrão como quinto parâmetro. Para obter mais informações, consulte a seção Operadores lógicos anteriormente neste artigo.
O operador Pesquisa sempre retorna um valor da Cadeia de caracteres. Para converter esse valor em um valor Int, Double ou DateTime, use um operador de conversão de tipo.
Usar chamadas externas, avaliações e velocidades
Para fazer referência a uma chamada externa, digite Externo, seguido da chamada externa à qual você deseja fazer referência. Para obter mais informações, consulte Usar uma chamada externa em regras.
Para fazer referência a uma avaliação externa, digite Avaliações, seguido da avaliação externa à qual você deseja fazer referência. Para obter mais informações, consulte Usar avaliação externa nas regras.
Para fazer referência a uma velocidade, digite Velocidade, seguido da velocidade individual à qual você deseja fazer referência. Para obter mais informações, consulte Usar uma velocidade em regras.
Inferência de tipo de atributos
Os tipos de variáveis são inferidos do contexto em que são usados. Veja alguns exemplos:
Na expressão WHEN @isEmailValidated, a variável é interpretada como valor Booliano.
Na expressão Model.Risk(). Pontuação > 500, a variável é interpretada como um valor Duplo .
Na expressão @"user.creationDate".Year < DateTime.UtcNow.Year, a variável é interpretada como um valor DateTime.
Se não houver contexto suficiente para inferir o tipo de uma variável, ele será considerado um valor de Cadeia de caracteres. Por exemplo, na expressão Model.Risk(). Pontue < Model.Bot(@"deviceFingerprinting.id"). Pontuação, ambas as variáveis são interpretadas como strings.
Para especificar o tipo de uma variável que não seja string, use um operador de conversão de tipo.
Matrizes e objetos JSON
O FQL tem suporte para a construção de objetos estruturados complexos como variáveis locais, que podem ser passadas para a chamada externa ou avaliação externa no formato JSON. Como com todos os outros locais no FQL, matrizes e objetos são imutáveis depois de criados.
Matrizes JSON
As matrizes são criadas colocando expressões entre um par de colchetes:
LET $arr1 = [ "hello", "world" ]
LET $arr2 = [
"this is also an array",
78.4,
$arr1,
@"user.email",
External.MyExtcall()
]
Onde myArr, nos exemplos acima, é uma matriz. A origem dessa matriz pode ser o @@payloadProperty, a resposta de avaliação externa, a resposta de chamada externa, a variável local ou uma variável global.
Veja a seguir exemplos de como usar a sintaxe com base em diferentes fontes de array:
Origem da matriz: Carga útil
LET $sample = @@"myArr[0]".AsJsonArray()
RETURN Approve()
WHEN $sample[0].AsString() == "a"
Origem do array: variável local
LET $group1 =["a", "b", "c"]
LET $group1 =[{ item1: "a", item2: "b"}, { item1: "c", item2: "d"}]
LET $group3 =[{ item1: "a", item2: "b", item3: ["c", "d"]}, {{ item1: "e", item2: "f", item3: ["g", "h"]}]
RETURN Approve()
WHEN $group1[0].AsString() == "a" && $group1[0].item2.AsString() == "b" && $group3[0].item3[0].AsString() == "c"
Depois de converter dados em um objeto JSON ou matriz explicitamente, você pode usar . As<Type>() para converter em um tipo de dados diferente, se necessário.
Exemplo:
RETURN Approve()
WHEN $sample[0].number.AsInt() == 56
Quando você usa @@, os dados são implicitamente convertidos em um objeto JSON. Se você quiser converter o objeto JSON em um tipo de dados diferente, deverá usar . Como<Type>().
Exemplo:
LET $sample = @@”user.addresses”.AsJsonArray()
Quando você deseja produzir em um determinado formato, você deve usar . Como<Type>().
Exemplo:
LET $sample = @@”user.addresses”
Output(abc = $sample.AsJsonArray())
Observação
Práticas recomendadas de fundição de tipo:
Sempre digite cast no final da cadeia . .
Quando você não tiver certeza, sempre digite explicitamente cast usando . Como<Type>().
Exemplo:
LET $sample = External.myCall().data[0].Item1[0].AsJsonArray()
Or
LET $sample = @@”accommodations[0].rooms”.AsJsonArray()
Funções disponíveis em Ações pós-decisão
As funções a seguir podem ser usadas apenas em Ações Pós-Decisão. Eles não estão disponíveis nas Regras de Decisão
Sintaxe
Descrição
Exemplo
SetResponse(String sectionName, k=v)
Essa função pode ser usada para passar pares chave-valor para a seção CustomProperties da resposta da API. O sectionName é um parâmetro opcional que pode ser ignorado.
Planeje e projete sua metodologia de projeto para implementar com êxito aplicativos de finanças e operações com serviços do Microsoft FastTrack, gerenciamento de dados e muito mais.