Stripe har för avsikt att förbättra Radar-reglerna i slutet av maj 2024 för att göra det lättare att förstå och hantera beteendet när attributvärden saknas.
Om du idag skriver en regel av typen Block if :email_domain: != 'notfraud.com'
och :email_domain:
saknas, så matchar inte regeln. Det beror på att Stripe tolkar != 'notfraud.com'
som att attributet har ett uttryckligt värde som inte är 'notfraud.com'
, vilket inte är fallet om attributet saknas. Om du istället skriver en snarlik regel av typen Block if NOT(:email_domain: = 'notfraud.com')
och :email_domain:
saknas, så matchar regeln. Det beror på att den inbäddade satsen :email_domain: = 'notfraud.com'
skulle tolkas som falsk, vilket innebär att den när den negeras med en NOT
-operation kommer att tolkas som sann.
Den nya tolkningen får dock till resultat att ingen av de två reglerna matchar. Det beror på att alla jämförelser (till exempel =, !=, >, <, IN
) av ett attribut som saknas med ett annat, statiskt värde eller attribut (vare sig det finns något värde eller inte) respekterar att data saknas. På samma sätt får logiska operationer (t.ex. AND, OR, NOT
) som saknar värden till resultat att attribut saknas, såvida det inte uttryckligen anges. En regel som resulterar i ett saknat värde och som respekteras genom hela utvärderingen kommer inte att matcha.
Du kan identifiera regler som påverkas av den här ändringen genom att granska predikat som använder en NOT
-negation med ett inbäddat attribut som eventuellt saknas. Om du skulle vilja behålla samma matchningsbeteende som tidigare för Block if NOT(:email_domain: = 'notfraud.com')
, måste du uttryckligen ändra regelns predikat så att det hanterar värden som saknas: Block if is_missing(:email_domain:)OR NOT(:email_domain: = 'notfraud.com')
. Annars använder regeln automatiskt det uppdaterade beteendet när Stripe genomför ändringen i maj 2024.