Mit der Integration der Betrugsprävention von Forter können Händler sicherstellen, dass nur seriöse und legitime Kunden auf Ihrer Website bezahlen können – während Betrüger identifiziert und blockiert werden. Forter sendet für jede einzelne Transaktion eine Genehmigungs- oder Ablehnungsentscheidung. Forters Produkt zur Betrugsprävention ist als Vorautorisierungsmodul integriert, bei dem eine API-Anfrage für eine Genehmigungs-/Ablehnungsentscheidung von Forter VOR der Zahlungsanforderung zur Autorisierung an die entsprechende Bank gesendet wird.
|
Die Lösung arbeitet in zwei Schritten:

Das Empfehlungsergebnis der Betrugsprüfung von Forter lautet:
Implementierung
hat die Forter-Lösung auf unseren gehosteten Zahlungsseiten paymentpage.aspx und payssl.aspx implementiert. Derzeit ist Forter nur für die Zahlungsmethode Kreditkarte verfügbar.
Das Profiler-Modul ermöglicht die Nutzung einer Vorautorisierungsfunktion über unsere gehostete Zahlungsseite (payssl.aspx) oder Zahlungsformulare (paymentpage.aspx).
In der Praxis können wir vor der Autorisierung die vom Händler in der Anfrage übermittelten Daten nutzen und eine Betrugsprüfung durchführen.
Die Logik hierfür ist:
Bitte stellen Sie sicher, dass die E-Mail-Adresse des Kunden an billToCustomer → E-Mail-JSON übermittelt wird, damit Forter die Transaktion prüfen kann. Siehe CustomerInfo
Für Händler, die Zahlungsformulare verwenden, ist keine technische Integration erforderlich.
Händler, die eine Server-zu-Server-Integration nutzen, müssen die Profiling-Lösung auf ihrer Website implementieren.
Für die korrekte Integration der Profiling-Lösung müssen zwei Voraussetzungen erfüllt sein:
Eine JavaScript-Datei muss im Seiten-Body enthalten sein und der Link zur JavaScript-Datei muss die site id enthalten.
Die Skript-Initialisierungsfunktion muss mit den korrekten Parametern ausgeführt werden.
Zur Implementierung sollte Ihr JS-Code ein JS-Ereignis namens ftr:tokenReady registrieren.
Eine Möglichkeit besteht darin, kurz vor der Ausführung des Forter-Snippets (Integrations-Tag/Code) einen Ereignis-Listener hinzuzufügen. Das Ereignis übergibt das Forter-Token in den Ereignisdetails, wie im folgenden Beispiel gezeigt:
document.addEventListener('ftr:tokenReady', function(evt) {
var token = evt.detail; // Retrieve the token to be sent to payment gateway });
Wichtig:
ftr:tokenReady ausgelöst wird, um beim späteren Aufruf der Backend-APIs von Forter über den neuesten Token-Wert zu verfügen.)Bitte kopieren Sie das folgende JavaScript-Snippet und fügen es auf jeder Webseite vor dem schließenden </body>-Tag ein.
*Bitte denken Sie daran, den Wert der Variable "siteId" durch den von Forter erhaltenen Wert zu ersetzen.
<script type="text/javascript" id="30b9f6508570"> // Please remember to change the value of this variable
(function () {
var merchantConfig = {
csp: false,
};
var siteId = '30b9f6508570'; // Please remember to change the value of this variable.
function t(t,e){for(var n=t.split(""),r=0;r<n.length;++r)n[r]=String.fromCharCode(n[r].charCodeAt(0)+e);return n.join("")}function e(e){return t(e,-_).replace(/%SN%/g,siteId)}function n(t){try{if("number"==typeof t&&window.location&&window.location.pathname){for(var e=window.location.pathname.split("/"),n=[],r=0;r<=Math.min(e.length-1,Math.abs(t));r++)n.push(e[r]);return n.join("/")||"/"}}catch(t){}return"/"}function r(){var t="no"+"op"+"fn",e="g"+"a",n="n"+"ame";return window[e]&&window[e][n]===t}function o(){return!(!navigator.brave||"function"!=typeof navigator.brave.isBrave)}function i(){return document.currentScript&&document.currentScript.src}function a(t){try{Q.ex=t,r()&&-1===Q.ex.indexOf(X.uB)&&(Q.ex+=X.uB),o()&&-1===Q.ex.indexOf(X.uBr)&&(Q.ex+=X.uBr),i()&&-1===Q.ex.indexOf(X.nIL)&&(Q.ex+=X.nIL),window.ftr__snp_cwc||(Q.ex+=X.s),B(Q)}catch(t){}}function c(t,e){function n(i){try{i.blockedURI===t&&i.disposition===o&&(e(),document.removeEventListener(r,n))}catch(t){document.removeEventListener(r,n)}}var r="securitypolicyviolation",o="enforce";document.addEventListener(r,n),setTimeout(function(){document.removeEventListener(r,n)},2*60*1e3)}function u(t,e,n,r){var o=!1;t="https://"+t,c(t,function(){r(!0),o=!0});var i=document.createElement("script");i.onerror=function(){if(!o)try{r(!1),o=!0}catch(t){}},i.onload=n,i.type="text/javascript",i.id="ftr__script",i.async=!0,i.src=t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(i,a)}function f(){tt(X.uDF),setTimeout(w,N,X.uDF)}function s(t,e,n,r){var o=!1,i=new XMLHttpRequest;if(c("https:"+t,function(){n(new Error("CSP Violation"),!0),o=!0}),"//"===t.slice(0,2)&&(t="https:"+t),"withCredentials"in i)i.open("GET",t,!0);else{if("undefined"==typeof XDomainRequest)return;i=new XDomainRequest,i.open("GET",t)}Object.keys(r).forEach(function(t){i.setRequestHeader(t,r[t])}),i.onload=function(){"function"==typeof e&&e(i)},i.onerror=function(t){if("function"==typeof n&&!o)try{n(t,!1),o=!0}catch(t){}},i.onprogress=function(){},i.ontimeout=function(){"function"==typeof n&&n("tim"+"eo"+"ut",!1)},setTimeout(function(){i.send()},0)}function d(t,siteId,e){function n(t){var e=t.toString(16);return e.length%2?"0"+e:e}function r(t){if(t<=0)return"";for(var e="0123456789abcdef",n="",r=0;r<t;r++)n+=e[Math.floor(Math.random()*e.length)];return n}function o(t){for(var e="",r=0;r<t.length;r++)e+=n(t.charCodeAt(r));return e}function i(t){for(var e=t.split(""),n=0;n<e.length;++n)e[n]=String.fromCharCode(255^e[n].charCodeAt(0));return e.join("")}e=e?"1":"0";var a=[];return a.push(t),a.push(siteId),a.push(e),function(t){var e=40,n="";return t.length<e/2&&(n=","+r(e/2-t.length-1)),o(i(t+n))}(a.join(","))}function h(){function t(){F&&(tt(X.dUAL),setTimeout(w,N,X.dUAL))}function e(t,e){a(e?X.uAS+X.uF+X.cP:X.uAS+X.uF),F="F"+"T"+"R"+"A"+"U",setTimeout(w,N,X.uAS)}window.ftr__fdad(t,e)}function l(){function t(){F&&setTimeout(w,N,X.uDAD)}function e(t,e){a(e?X.uDS+X.uF+X.cP:X.uDS+X.uF),F="F"+"T"+"R"+"A"+"U",setTimeout(w,N,X.uDS)}window.ftr__radd(t,e)}function w(t){try{var e;switch(t){case X.uFP:e=I;break;case X.uDF:e=M;break;default:e=F}if(!e)return;var n=function(){try{et(),a(t+X.uS)}catch(t){}},r=function(e){try{et(),Q.td=1*new Date-Q.ts,a(e?t+X.uF+X.cP:t+X.uF),t===X.uFP&&f(),t===X.uDF&&(V?l():h()),t!==X.uAS&&t!==X.dUAL||V||l(),t!==X.uDS&&t!==X.uDAD||V&&h()}catch(t){a(X.eUoe)}};if(e==="F"+"T"+"R"+"A"+"U")return void r();u(e,void 0,n,r)}catch(e){a(t+X.eTlu)}}var g="22ge:t7mj8unkn;1forxgiurqw1qhw2vwdwxv",v="fort",p="erTo",m="ken",_=3;window.ftr__config={m:merchantConfig,s:"25",si:siteId};var y=!1,U=!1,T=v+p+m,x=400*24*60,A,S=10;A={write:function(t,e,r,o){void 0===o&&(o=!0);var i=0;window.ftr__config&&window.ftr__config.m&&window.ftr__config.m.ckDepth&&(i=window.ftr__config.m.ckDepth);var a,c,u=n(i);if(r?(a=new Date,a.setTime(a.getTime()+60*r*1e3),c="; expires="+a.toGMTString()):c="",!o)return void(document.cookie=escape(t)+"="+escape(e)+c+"; path="+u);for(var f=1,s=document.domain.split("."),d=S,h=!0;h&&s.length>=f&&d>0;){var l=s.slice(-f).join(".");document.cookie=escape(t)+"="+escape(e)+c+"; path="+u+"; domain="+l;var w=A.read(t);null!=w&&w==e||(l="."+l,document.cookie=escape(t)+"="+escape(e)+c+"; path="+u+"; domain="+l),h=-1===document.cookie.indexOf(t+"="+e),f++,d--}},read:function(t){var e=null;try{for(var n=escape(t)+"=",r=document.cookie.split(";"),o=32,i=0;i<r.length;i++){for(var a=r[i];a.charCodeAt(0)===o;)a=a.substring(1,a.length);0===a.indexOf(n)&&(e=unescape(a.substring(n.length,a.length)))}}finally{return e}}};var D=window.ftr__config.s;D+="ck";var L=function(t){var e=!1,n=null,r=function(){try{if(!n||!e)return;n.remove&&"function"==typeof n.remove?n.remove():document.head.removeChild(n),e=!1}catch(t){}};document.head&&(!function(){n=document.createElement("link"),n.setAttribute("rel","pre"+"con"+"nect"),n.setAttribute("cros"+"sori"+"gin","anonymous"),n.onload=r,n.onerror=r,n.setAttribute("href",t),document.head.appendChild(n),e=!0}(),setTimeout(r,3e3))},E=e(g||"22ge:t7mj8unkn;1forxgiurqw1qhw2vwdwxv"),C=t("[0Uhtxhvw0LG",-_),R=t("[0Fruuhodwlrq0LG",-_),P=t("Li0Qrqh0Pdwfk",-_),k=e("dss1vlwhshuirupdqfhwhvw1qhw"),q=e("2241414142gqv0txhu|"),F,b="fgq71iruwhu1frp",M,O;M=e("(VQ(1"+b+"2vq2(VQ(2vfulsw1mv"),O=e("(VQ(1"+b+"2vqV2(VQ(2vfulsw1mv");var I;window.ftr__config&&window.ftr__config.m&&window.ftr__config.m.fpi&&(I=window.ftr__config.m.fpi+e("2vq2(VQ(2vfulsw1mv"));var V=!1;V=!1;var N=10;window.ftr__startScriptLoad=1*new Date;var j=function(t){var e="ft"+"r:tok"+"enR"+"eady";window.ftr__tt&&clearTimeout(window.ftr__tt),window.ftr__tt=setTimeout(function(){try{delete window.ftr__tt,t+="_tt";var n=document.createEvent("Event");n.initEvent(e,!1,!1),n.detail=t,document.dispatchEvent(n)}catch(t){}},1e3)},B=function(t){var e=function(t){return t||""},n=e(t.id)+"_"+e(t.ts)+"_"+e(t.td)+"_"+e(t.ex)+"_"+e(D),r=x;!isNaN(window.ftr__config.m.ckTTL)&&window.ftr__config.m.ckTTL&&(r=window.ftr__config.m.ckTTL),A.write(T,n,r,!0),j(n),window.ftr__gt=n},G=function(){var t=A.read(T)||"",e=t.split("_"),n=function(t){return e[t]||void 0};return{id:n(0),ts:n(1),td:n(2),ex:n(3),vr:n(4)}},H=function(){for(var t={},e="fgu",n=[],r=0;r<256;r++)n[r]=(r<16?"0":"")+r.toString(16);var o=function(t,e,r,o,i){var a=i?"-":"";return n[255&t]+n[t>>8&255]+n[t>>16&255]+n[t>>24&255]+a+n[255&e]+n[e>>8&255]+a+n[e>>16&15|64]+n[e>>24&255]+a+n[63&r|128]+n[r>>8&255]+a+n[r>>16&255]+n[r>>24&255]+n[255&o]+n[o>>8&255]+n[o>>16&255]+n[o>>24&255]},i=function(){if(window.Uint32Array&&window.crypto&&window.crypto.getRandomValues){var t=new window.Uint32Array(4);return window.crypto.getRandomValues(t),{d0:t[0],d1:t[1],d2:t[2],d3:t[3]}}return{d0:4294967296*Math.random()>>>0,d1:4294967296*Math.random()>>>0,d2:4294967296*Math.random()>>>0,d3:4294967296*Math.random()>>>0}},a=function(){var t="",e=function(t,e){for(var n="",r=t;r>0;--r)n+=e.charAt(1e3*Math.random()%e.length);return n};return t+=e(2,"0123456789"),t+=e(1,"123456789"),t+=e(8,"0123456789")};return t.safeGenerateNoDash=function(){try{var t=i();return o(t.d0,t.d1,t.d2,t.d3,!1)}catch(t){try{return e+a()}catch(t){}}},t.isValidNumericalToken=function(t){return t&&t.toString().length<=11&&t.length>=9&&parseInt(t,10).toString().length<=11&&parseInt(t,10).toString().length>=9},t.isValidUUIDToken=function(t){return t&&32===t.toString().length&&/^[a-z0-9]+$/.test(t)},t.isValidFGUToken=function(t){return 0==t.indexOf(e)&&t.length>=12},t}(),X={uDF:"UDF",dUAL:"dUAL",uAS:"UAS",uDS:"UDS",uDAD:"UDAD",uFP:"UFP",mLd:"1",eTlu:"2",eUoe:"3",uS:"4",uF:"9",tmos:["T5","T10","T15","T30","T60"],tmosSecs:[5,10,15,30,60],bIR:"43",uB:"u",uBr:"b",cP:"c",nIL:"i",s:"s"};try{var Q=G();try{Q.id&&(H.isValidNumericalToken(Q.id)||H.isValidUUIDToken(Q.id)||H.isValidFGUToken(Q.id))?window.ftr__ncd=!1:(Q.id=H.safeGenerateNoDash(),window.ftr__ncd=!0),Q.ts=window.ftr__startScriptLoad,B(Q),window.ftr__snp_cwc=!!A.read(T),window.ftr__snp_cwc||(M=O);for(var $="for"+"ter"+".co"+"m",z="ht"+"tps://c"+"dn9."+$,J="ht"+"tps://"+Q.id+"-"+siteId+".cd"+"n."+$,K="http"+"s://cd"+"n3."+$,W=[z,J,K],Y=0;Y<W.length;Y++)L(W[Y]);var Z=new Array(X.tmosSecs.length),tt=function(t){for(var e=0;e<X.tmosSecs.length;e++)Z[e]=setTimeout(a,1e3*X.tmosSecs[e],t+X.tmos[e])},et=function(){for(var t=0;t<X.tmosSecs.length;t++)clearTimeout(Z[t])};window.ftr__fdad=function(e,n){if(!y){y=!0;var r={};r[P]=d(window.ftr__config.s,siteId,window.ftr__config.m.csp),s(E,function(n){try{var r=n.getAllResponseHeaders().toLowerCase();if(r.indexOf(R.toLowerCase())>=0){var o=n.getResponseHeader(R);window.ftr__altd2=t(atob(o),-_-1)}if(r.indexOf(C.toLowerCase())<0)return;var i=n.getResponseHeader(C),a=t(atob(i),-_-1);if(a){var c=a.split(":");if(c&&2===c.length){for(var u=c[0],f=c[1],s="",d=0,h=0;d<20;++d)s+=d%3>0&&h<12?siteId.charAt(h++):Q.id.charAt(d);var l=f.split(",");if(l.length>1){var w=l[0],g=l[1];F=u+"/"+w+"."+s+"."+g}}}e()}catch(t){}},function(t,e){n&&n(t,e)},r)}},window.ftr__radd=function(t,e){function n(e){try{var n=e.response,r=function(t){function e(t,n,i){try{if(i>=r)return{name:"",nextOffsetToProcess:n,error:"Max pointer dereference depth exceeded"};for(var a=[],c=n,u=t.getUint8(c),f=0;f<o;){if(f++,192==(192&u)){var s=(63&u)<<8|t.getUint8(c+1),d=e(t,s,i+1);if(d.error)return d;var h=d.name;return a.push(h),{name:a.join("."),nextOffsetToProcess:c+2}}if(!(u>0)){if(0!==u)return{name:"",nextOffsetToProcess:c,error:"Unexpected length at the end of name: "+u.toString()};return{name:a.join("."),nextOffsetToProcess:c+1}}for(var l="",w=1;w<=u;w++)l+=String.fromCharCode(t.getUint8(c+w));a.push(l),c+=u+1,u=t.getUint8(c)}return{name:"",nextOffsetToProcess:c,error:"Max iterations exceeded"}}catch(t){return{name:"",nextOffsetToProcess:n,error:"Unexpected error while parsing response: "+t.toString()}}}var n,r=4,o=100,i=16,a=new DataView(t),c=a.getUint16(0),u=a.getUint16(2),f=a.getUint16(4),s=a.getUint16(6),d=a.getUint16(8),h=a.getUint16(10),l=12,w=[],g=0;for(g=0;g<f;g++){if(n=e(a,l,0),n.error)throw new Error(n.error);if(l=n.nextOffsetToProcess,!Number.isInteger(l))throw new Error("invalid returned offset");var v=n.name,p=a.getUint16(l);l+=2;var m=a.getUint16(l);l+=2,w.push({qname:v,qtype:p,qclass:m})}var _=[];for(g=0;g<s;g++){if(n=e(a,l,0),n.error)throw new Error(n.error);if(l=n.nextOffsetToProcess,!Number.isInteger(l))throw new Error("invalid returned offset");var y=n.name,U=a.getUint16(l);if(U!==i)throw new Error("Unexpected record type: "+U.toString());l+=2;var T=a.getUint16(l);l+=2;var x=a.getUint32(l);l+=4;var A=a.getUint16(l);l+=2;for(var S="",D=l,L=0;D<l+A&&L<o;){L++;var E=a.getUint8(D);D+=1;S+=(new TextDecoder).decode(t.slice(D,D+E)),D+=E}if(L>=o)throw new Error("Max iterations exceeded while reading TXT data");l+=A,_.push({name:y,type:U,class:T,ttl:x,data:S})}return{transactionId:c,flags:u,questionCount:f,answerCount:s,authorityCount:d,additionalCount:h,questions:w,answers:_}}(n);if(!r)throw new Error("Error parsing DNS response");if(!("answers"in r))throw new Error("Unexpected response");var o=r.answers;if(0===o.length)throw new Error("No answers found");var i=o[0].data;i=i.replace(/^"(.*)"$/,"$1");var a=function(t){var e=40,n=32,r=126;try{for(var o=atob(t),i="",a=0;a<o.length;a++)i+=function(t){var o=t.charCodeAt(0),i=o-e;return i<n&&(i=r-(n-i)+1),String.fromCharCode(i)}(o[a]);return atob(i)}catch(t){return}}(i);if(!a)throw new Error("failed to decode the value");var c=function(t){var e="_"+"D"+"L"+"M"+"_",n=t.split(e);if(!(n.length<2)){var r=n[0],o=n[1];if(!(r.split(".").length-1<1))return{jURL:r,eURL:o}}}(a);if(!c)throw new Error("failed to parse the value");var u=c.jURL,f=c.eURL;F=function(t){for(var e="",n=0,r=0;n<20;++n)e+=n%3>0&&r<12?siteId.charAt(r++):Q.id.charAt(n);return t.replace("/PRM1","").replace("/PRM2","/main.").replace("/PRM3",e).replace("/PRM4",".js")}(u),window.ftr__altd3=f,t()}catch(t){}}function r(t,n){e&&e(t,n)}if(!U){window.ftr__config.m.dr==="N"+"D"+"R"&&e(new Error("N"+"D"+"R"),!1),q&&k||e(new Error("D"+"P"+"P"),!1),U=!0;try{var o=function(t){for(var e=new Uint8Array([0,0]),n=new Uint8Array([1,0]),r=new Uint8Array([0,1]),o=new Uint8Array([0,0]),i=new Uint8Array([0,0]),a=new Uint8Array([0,0]),c=t.split("."),u=[],f=0;f<c.length;f++){var s=c[f];u.push(s.length);for(var d=0;d<s.length;d++)u.push(s.charCodeAt(d))}u.push(0);var h=16,l=new Uint8Array([0,h]),w=new Uint8Array([0,1]),g=new Uint8Array(e.length+n.length+r.length+o.length+i.length+a.length+u.length+l.length+w.length);return g.set(e,0),g.set(n,e.length),g.set(r,e.length+n.length),g.set(o,e.length+n.length+r.length),g.set(i,e.length+n.length+r.length+o.length),g.set(a,e.length+n.length+r.length+o.length+i.length),g.set(u,e.length+n.length+r.length+o.length+i.length+a.length),g.set(l,e.length+n.length+r.length+o.length+i.length+a.length+u.length),g.set(w,e.length+n.length+r.length+o.length+i.length+a.length+u.length+l.length),g}(k);!function(t,e,n,r,o){var i=!1,a=new XMLHttpRequest;if(c("https:"+t,function(){o(new Error("CSP Violation"),!0),i=!0}),"//"===t.slice(0,2)&&(t="https:"+t),"withCredentials"in a)a.open("POST",t,!0);else{if("undefined"==typeof XDomainRequest)return;a=new XDomainRequest,a.open("POST",t)}a.responseType="arraybuffer",a.setRequestHeader("Content-Type",e),a.onload=function(){"function"==typeof r&&r(a)},a.onerror=function(t){if("function"==typeof o&&!i)try{o(t,!1),i=!0}catch(t){}},a.onprogress=function(){},a.ontimeout=function(){"function"==typeof o&&o("tim"+"eo"+"ut",!1)},setTimeout(function(){a.send(n)},0)}(q,"application/dns-message",o,n,r)}catch(t){e(t,!1)}}};var nt=I?X.uFP:X.uDF;tt(nt),setTimeout(w,N,nt)}catch(t){a(X.mLd)}}catch(t){}})();
</script> |
Falls der Site-CSP Inline-JS-Tags einschränkt (von Forter für eine starke Integration erforderlich) – verwenden Sie diesen Hash, um den Integrations-Tag in den CSP-Anweisungen script-src und script-src-elem auf die Whitelist zu setzen.
sha256-nziIJDGIvOU24UHgjmmYgQDu//31zMyRm+DAQyPz3FY=
Bitte kopieren Sie das folgende JavaScript-Snippet und fügen es auf jeder Webseite vor dem schließenden </body>-Tag ein.
<script type="text/javascript" id="9124e63c8c0a" // site id> (function () { var merchantConfig = { csp: false, }; var siteId = '9124e63c8c0a'; // siteid function t(t,e){for(var n=t.split(""),r=0;r<n.length;++r)n[r]=String.fromCharCode(n[r].charCodeAt(0)+e);return n.join("")}function e(e){return t(e,-_).replace(/%SN%/g,siteId)}function n(t){try{if("number"==typeof t&&window.location&&window.location.pathname){for(var e=window.location.pathname.split("/"),n=[],r=0;r<=Math.min(e.length-1,Math.abs(t));r++)n.push(e[r]);return n.join("/")||"/"}}catch(t){}return"/"}function r(){var t="no"+"op"+"fn",e="g"+"a",n="n"+"ame";return window[e]&&window[e][n]===t}function o(){return!(!navigator.brave||"function"!=typeof navigator.brave.isBrave)}function i(){return document.currentScript&&document.currentScript.src}function a(t){try{Q.ex=t,r()&&-1===Q.ex.indexOf(X.uB)&&(Q.ex+=X.uB),o()&&-1===Q.ex.indexOf(X.uBr)&&(Q.ex+=X.uBr),i()&&-1===Q.ex.indexOf(X.nIL)&&(Q.ex+=X.nIL),window.ftr__snp_cwc||(Q.ex+=X.s),B(Q)}catch(t){}}function c(t,e){function n(i){try{i.blockedURI===t&&i.disposition===o&&(e(),document.removeEventListener(r,n))}catch(t){document.removeEventListener(r,n)}}var r="securitypolicyviolation",o="enforce";document.addEventListener(r,n),setTimeout(function(){document.removeEventListener(r,n)},2*60*1e3)}function u(t,e,n,r){var o=!1;t="https://"+t,c(t,function(){r(!0),o=!0});var i=document.createElement("script");i.onerror=function(){if(!o)try{r(!1),o=!0}catch(t){}},i.onload=n,i.type="text/javascript",i.id="ftr__script",i.async=!0,i.src=t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(i,a)}function f(){tt(X.uDF),setTimeout(w,N,X.uDF)}function s(t,e,n,r){var o=!1,i=new XMLHttpRequest;if(c("https:"+t,function(){n(new Error("CSP Violation"),!0),o=!0}),"//"===t.slice(0,2)&&(t="https:"+t),"withCredentials"in i)i.open("GET",t,!0);else{if("undefined"==typeof XDomainRequest)return;i=new XDomainRequest,i.open("GET",t)}Object.keys(r).forEach(function(t){i.setRequestHeader(t,r[t])}),i.onload=function(){"function"==typeof e&&e(i)},i.onerror=function(t){if("function"==typeof n&&!o)try{n(t,!1),o=!0}catch(t){}},i.onprogress=function(){},i.ontimeout=function(){"function"==typeof n&&n("tim"+"eo"+"ut",!1)},setTimeout(function(){i.send()},0)}function d(t,siteId,e){function n(t){var e=t.toString(16);return e.length%2?"0"+e:e}function r(t){if(t<=0)return"";for(var e="0123456789abcdef",n="",r=0;r<t;r++)n+=e[Math.floor(Math.random()*e.length)];return n}function o(t){for(var e="",r=0;r<t.length;r++)e+=n(t.charCodeAt(r));return e}function i(t){for(var e=t.split(""),n=0;n<e.length;++n)e[n]=String.fromCharCode(255^e[n].charCodeAt(0));return e.join("")}e=e?"1":"0";var a=[];return a.push(t),a.push(siteId),a.push(e),function(t){var e=40,n="";return t.length<e/2&&(n=","+r(e/2-t.length-1)),o(i(t+n))}(a.join(","))}function h(){function t(){F&&(tt(X.dUAL),setTimeout(w,N,X.dUAL))}function e(t,e){a(e?X.uAS+X.uF+X.cP:X.uAS+X.uF),F="F"+"T"+"R"+"A"+"U",setTimeout(w,N,X.uAS)}window.ftr__fdad(t,e)}function l(){function t(){F&&setTimeout(w,N,X.uDAD)}function e(t,e){a(e?X.uDS+X.uF+X.cP:X.uDS+X.uF),F="F"+"T"+"R"+"A"+"U",setTimeout(w,N,X.uDS)}window.ftr__radd(t,e)}function w(t){try{var e;switch(t){case X.uFP:e=I;break;case X.uDF:e=M;break;default:e=F}if(!e)return;var n=function(){try{et(),a(t+X.uS)}catch(t){}},r=function(e){try{et(),Q.td=1*new Date-Q.ts,a(e?t+X.uF+X.cP:t+X.uF),t===X.uFP&&f(),t===X.uDF&&(V?l():h()),t!==X.uAS&&t!==X.dUAL||V||l(),t!==X.uDS&&t!==X.uDAD||V&&h()}catch(t){a(X.eUoe)}};if(e==="F"+"T"+"R"+"A"+"U")return void r();u(e,void 0,n,r)}catch(e){a(t+X.eTlu)}}var g="22ge:t7mj8unkn;1forxgiurqw1qhw2vwdwxv",v="fort",p="erTo",m="ken",_=3;window.ftr__config={m:merchantConfig,s:"25",si:siteId};var y=!1,U=!1,T=v+p+m,x=400*24*60,A,S=10;A={write:function(t,e,r,o){void 0===o&&(o=!0);var i=0;window.ftr__config&&window.ftr__config.m&&window.ftr__config.m.ckDepth&&(i=window.ftr__config.m.ckDepth);var a,c,u=n(i);if(r?(a=new Date,a.setTime(a.getTime()+60*r*1e3),c="; expires="+a.toGMTString()):c="",!o)return void(document.cookie=escape(t)+"="+escape(e)+c+"; path="+u);for(var f=1,s=document.domain.split("."),d=S,h=!0;h&&s.length>=f&&d>0;){var l=s.slice(-f).join(".");document.cookie=escape(t)+"="+escape(e)+c+"; path="+u+"; domain="+l;var w=A.read(t);null!=w&&w==e||(l="."+l,document.cookie=escape(t)+"="+escape(e)+c+"; path="+u+"; domain="+l),h=-1===document.cookie.indexOf(t+"="+e),f++,d--}},read:function(t){var e=null;try{for(var n=escape(t)+"=",r=document.cookie.split(";"),o=32,i=0;i<r.length;i++){for(var a=r[i];a.charCodeAt(0)===o;)a=a.substring(1,a.length);0===a.indexOf(n)&&(e=unescape(a.substring(n.length,a.length)))}}finally{return e}}};var D=window.ftr__config.s;D+="ck";var L=function(t){var e=!1,n=null,r=function(){try{if(!n||!e)return;n.remove&&"function"==typeof n.remove?n.remove():document.head.removeChild(n),e=!1}catch(t){}};document.head&&(!function(){n=document.createElement("link"),n.setAttribute("rel","pre"+"con"+"nect"),n.setAttribute("cros"+"sori"+"gin","anonymous"),n.onload=r,n.onerror=r,n.setAttribute("href",t),document.head.appendChild(n),e=!0}(),setTimeout(r,3e3))},E=e(g||"22ge:t7mj8unkn;1forxgiurqw1qhw2vwdwxv"),C=t("[0Uhtxhvw0LG",-_),R=t("[0Fruuhodwlrq0LG",-_),P=t("Li0Qrqh0Pdwfk",-_),k=e("dss1vlwhshuirupdqfhwhvw1qhw"),q=e("2241414142gqv0txhu|"),F,b="fgq71iruwhu1frp",M,O;M=e("(VQ(1"+b+"2vq2(VQ(2vfulsw1mv"),O=e("(VQ(1"+b+"2vqV2(VQ(2vfulsw1mv");var I;window.ftr__config&&window.ftr__config.m&&window.ftr__config.m.fpi&&(I=window.ftr__config.m.fpi+e("2vq2(VQ(2vfulsw1mv"));var V=!1;V=!1;var N=10;window.ftr__startScriptLoad=1*new Date;var j=function(t){var e="ft"+"r:tok"+"enR"+"eady";window.ftr__tt&&clearTimeout(window.ftr__tt),window.ftr__tt=setTimeout(function(){try{delete window.ftr__tt,t+="_tt";var n=document.createEvent("Event");n.initEvent(e,!1,!1),n.detail=t,document.dispatchEvent(n)}catch(t){}},1e3)},B=function(t){var e=function(t){return t||""},n=e(t.id)+"_"+e(t.ts)+"_"+e(t.td)+"_"+e(t.ex)+"_"+e(D),r=x;!isNaN(window.ftr__config.m.ckTTL)&&window.ftr__config.m.ckTTL&&(r=window.ftr__config.m.ckTTL),A.write(T,n,r,!0),j(n),window.ftr__gt=n},G=function(){var t=A.read(T)||"",e=t.split("_"),n=function(t){return e[t]||void 0};return{id:n(0),ts:n(1),td:n(2),ex:n(3),vr:n(4)}},H=function(){for(var t={},e="fgu",n=[],r=0;r<256;r++)n[r]=(r<16?"0":"")+r.toString(16);var o=function(t,e,r,o,i){var a=i?"-":"";return n[255&t]+n[t>>8&255]+n[t>>16&255]+n[t>>24&255]+a+n[255&e]+n[e>>8&255]+a+n[e>>16&15|64]+n[e>>24&255]+a+n[63&r|128]+n[r>>8&255]+a+n[r>>16&255]+n[r>>24&255]+n[255&o]+n[o>>8&255]+n[o>>16&255]+n[o>>24&255]},i=function(){if(window.Uint32Array&&window.crypto&&window.crypto.getRandomValues){var t=new window.Uint32Array(4);return window.crypto.getRandomValues(t),{d0:t[0],d1:t[1],d2:t[2],d3:t[3]}}return{d0:4294967296*Math.random()>>>0,d1:4294967296*Math.random()>>>0,d2:4294967296*Math.random()>>>0,d3:4294967296*Math.random()>>>0}},a=function(){var t="",e=function(t,e){for(var n="",r=t;r>0;--r)n+=e.charAt(1e3*Math.random()%e.length);return n};return t+=e(2,"0123456789"),t+=e(1,"123456789"),t+=e(8,"0123456789")};return t.safeGenerateNoDash=function(){try{var t=i();return o(t.d0,t.d1,t.d2,t.d3,!1)}catch(t){try{return e+a()}catch(t){}}},t.isValidNumericalToken=function(t){return t&&t.toString().length<=11&&t.length>=9&&parseInt(t,10).toString().length<=11&&parseInt(t,10).toString().length>=9},t.isValidUUIDToken=function(t){return t&&32===t.toString().length&&/^[a-z0-9]+$/.test(t)},t.isValidFGUToken=function(t){return 0==t.indexOf(e)&&t.length>=12},t}(),X={uDF:"UDF",dUAL:"dUAL",uAS:"UAS",uDS:"UDS",uDAD:"UDAD",uFP:"UFP",mLd:"1",eTlu:"2",eUoe:"3",uS:"4",uF:"9",tmos:["T5","T10","T15","T30","T60"],tmosSecs:[5,10,15,30,60],bIR:"43",uB:"u",uBr:"b",cP:"c",nIL:"i",s:"s"};try{var Q=G();try{Q.id&&(H.isValidNumericalToken(Q.id)||H.isValidUUIDToken(Q.id)||H.isValidFGUToken(Q.id))?window.ftr__ncd=!1:(Q.id=H.safeGenerateNoDash(),window.ftr__ncd=!0),Q.ts=window.ftr__startScriptLoad,B(Q),window.ftr__snp_cwc=!!A.read(T),window.ftr__snp_cwc||(M=O);for(var $="for"+"ter"+".co"+"m",z="ht"+"tps://c"+"dn9."+$,J="ht"+"tps://"+Q.id+"-"+siteId+".cd"+"n."+$,K="http"+"s://cd"+"n3."+$,W=[z,J,K],Y=0;Y<W.length;Y++)L(W[Y]);var Z=new Array(X.tmosSecs.length),tt=function(t){for(var e=0;e<X.tmosSecs.length;e++)Z[e]=setTimeout(a,1e3*X.tmosSecs[e],t+X.tmos[e])},et=function(){for(var t=0;t<X.tmosSecs.length;t++)clearTimeout(Z[t])};window.ftr__fdad=function(e,n){if(!y){y=!0;var r={};r[P]=d(window.ftr__config.s,siteId,window.ftr__config.m.csp),s(E,function(n){try{var r=n.getAllResponseHeaders().toLowerCase();if(r.indexOf(R.toLowerCase())>=0){var o=n.getResponseHeader(R);window.ftr__altd2=t(atob(o),-_-1)}if(r.indexOf(C.toLowerCase())<0)return;var i=n.getResponseHeader(C),a=t(atob(i),-_-1);if(a){var c=a.split(":");if(c&&2===c.length){for(var u=c[0],f=c[1],s="",d=0,h=0;d<20;++d)s+=d%3>0&&h<12?siteId.charAt(h++):Q.id.charAt(d);var l=f.split(",");if(l.length>1){var w=l[0],g=l[1];F=u+"/"+w+"."+s+"."+g}}}e()}catch(t){}},function(t,e){n&&n(t,e)},r)}},window.ftr__radd=function(t,e){function n(e){try{var n=e.response,r=function(t){function e(t,n,i){try{if(i>=r)return{name:"",nextOffsetToProcess:n,error:"Max pointer dereference depth exceeded"};for(var a=[],c=n,u=t.getUint8(c),f=0;f<o;){if(f++,192==(192&u)){var s=(63&u)<<8|t.getUint8(c+1),d=e(t,s,i+1);if(d.error)return d;var h=d.name;return a.push(h),{name:a.join("."),nextOffsetToProcess:c+2}}if(!(u>0)){if(0!==u)return{name:"",nextOffsetToProcess:c,error:"Unexpected length at the end of name: "+u.toString()};return{name:a.join("."),nextOffsetToProcess:c+1}}for(var l="",w=1;w<=u;w++)l+=String.fromCharCode(t.getUint8(c+w));a.push(l),c+=u+1,u=t.getUint8(c)}return{name:"",nextOffsetToProcess:c,error:"Max iterations exceeded"}}catch(t){return{name:"",nextOffsetToProcess:n,error:"Unexpected error while parsing response: "+t.toString()}}}var n,r=4,o=100,i=16,a=new DataView(t),c=a.getUint16(0),u=a.getUint16(2),f=a.getUint16(4),s=a.getUint16(6),d=a.getUint16(8),h=a.getUint16(10),l=12,w=[],g=0;for(g=0;g<f;g++){if(n=e(a,l,0),n.error)throw new Error(n.error);if(l=n.nextOffsetToProcess,!Number.isInteger(l))throw new Error("invalid returned offset");var v=n.name,p=a.getUint16(l);l+=2;var m=a.getUint16(l);l+=2,w.push({qname:v,qtype:p,qclass:m})}var _=[];for(g=0;g<s;g++){if(n=e(a,l,0),n.error)throw new Error(n.error);if(l=n.nextOffsetToProcess,!Number.isInteger(l))throw new Error("invalid returned offset");var y=n.name,U=a.getUint16(l);if(U!==i)throw new Error("Unexpected record type: "+U.toString());l+=2;var T=a.getUint16(l);l+=2;var x=a.getUint32(l);l+=4;var A=a.getUint16(l);l+=2;for(var S="",D=l,L=0;D<l+A&&L<o;){L++;var E=a.getUint8(D);D+=1;S+=(new TextDecoder).decode(t.slice(D,D+E)),D+=E}if(L>=o)throw new Error("Max iterations exceeded while reading TXT data");l+=A,_.push({name:y,type:U,class:T,ttl:x,data:S})}return{transactionId:c,flags:u,questionCount:f,answerCount:s,authorityCount:d,additionalCount:h,questions:w,answers:_}}(n);if(!r)throw new Error("Error parsing DNS response");if(!("answers"in r))throw new Error("Unexpected response");var o=r.answers;if(0===o.length)throw new Error("No answers found");var i=o[0].data;i=i.replace(/^"(.*)"$/,"$1");var a=function(t){var e=40,n=32,r=126;try{for(var o=atob(t),i="",a=0;a<o.length;a++)i+=function(t){var o=t.charCodeAt(0),i=o-e;return i<n&&(i=r-(n-i)+1),String.fromCharCode(i)}(o[a]);return atob(i)}catch(t){return}}(i);if(!a)throw new Error("failed to decode the value");var c=function(t){var e="_"+"D"+"L"+"M"+"_",n=t.split(e);if(!(n.length<2)){var r=n[0],o=n[1];if(!(r.split(".").length-1<1))return{jURL:r,eURL:o}}}(a);if(!c)throw new Error("failed to parse the value");var u=c.jURL,f=c.eURL;F=function(t){for(var e="",n=0,r=0;n<20;++n)e+=n%3>0&&r<12?siteId.charAt(r++):Q.id.charAt(n);return t.replace("/PRM1","").replace("/PRM2","/main.").replace("/PRM3",e).replace("/PRM4",".js")}(u),window.ftr__altd3=f,t()}catch(t){}}function r(t,n){e&&e(t,n)}if(!U){window.ftr__config.m.dr==="N"+"D"+"R"&&e(new Error("N"+"D"+"R"),!1),q&&k||e(new Error("D"+"P"+"P"),!1),U=!0;try{var o=function(t){for(var e=new Uint8Array([0,0]),n=new Uint8Array([1,0]),r=new Uint8Array([0,1]),o=new Uint8Array([0,0]),i=new Uint8Array([0,0]),a=new Uint8Array([0,0]),c=t.split("."),u=[],f=0;f<c.length;f++){var s=c[f];u.push(s.length);for(var d=0;d<s.length;d++)u.push(s.charCodeAt(d))}u.push(0);var h=16,l=new Uint8Array([0,h]),w=new Uint8Array([0,1]),g=new Uint8Array(e.length+n.length+r.length+o.length+i.length+a.length+u.length+l.length+w.length);return g.set(e,0),g.set(n,e.length),g.set(r,e.length+n.length),g.set(o,e.length+n.length+r.length),g.set(i,e.length+n.length+r.length+o.length),g.set(a,e.length+n.length+r.length+o.length+i.length),g.set(u,e.length+n.length+r.length+o.length+i.length+a.length),g.set(l,e.length+n.length+r.length+o.length+i.length+a.length+u.length),g.set(w,e.length+n.length+r.length+o.length+i.length+a.length+u.length+l.length),g}(k);!function(t,e,n,r,o){var i=!1,a=new XMLHttpRequest;if(c("https:"+t,function(){o(new Error("CSP Violation"),!0),i=!0}),"//"===t.slice(0,2)&&(t="https:"+t),"withCredentials"in a)a.open("POST",t,!0);else{if("undefined"==typeof XDomainRequest)return;a=new XDomainRequest,a.open("POST",t)}a.responseType="arraybuffer",a.setRequestHeader("Content-Type",e),a.onload=function(){"function"==typeof r&&r(a)},a.onerror=function(t){if("function"==typeof o&&!i)try{o(t,!1),i=!0}catch(t){}},a.onprogress=function(){},a.ontimeout=function(){"function"==typeof o&&o("tim"+"eo"+"ut",!1)},setTimeout(function(){a.send(n)},0)}(q,"application/dns-message",o,n,r)}catch(t){e(t,!1)}}};var nt=I?X.uFP:X.uDF;tt(nt),setTimeout(w,N,nt)}catch(t){a(X.mLd)}}catch(t){}})(); </script> |
Falls der Site-CSP Inline-JS-Tags einschränkt (von Forter für eine starke Integration erforderlich) – verwenden Sie diesen Hash, um den Integrations-Tag in der CSP-Anweisung script-src auf die Whitelist zu setzen.
sha256-xQnzgvWTdE4KNLjBv+pp4tq7r/xI5y/nbQ4YXHGjLUA=
Falls die Webseite eine CSP erzwingt, stellen Sie bitte sicher, dass die folgenden Regeln auf der Whitelist stehen:
connect-src https://*.forter.com wss://cdn0.forter.com https://d2o5idwacg3gyw.cloudfront.net https://dz8rit8v72mig.cloudfront.net https://db7q4jg5rkhk8.cloudfront.net https://1.1.1.1 https://d94qwxh6czci4.cloudfront.net https://dr6vcclmzwk74.cloudfront.net https://wtp.siteperformancetest.net https://d6wfl40rgh70w.cloudfront.net https://siteperformancetest.net https://d6rak4b14t5gp.cloudfront.net https://d3k4bt74u9esq1.cloudfront.net https://d1ezzflfzltk6e.cloudfront.net https://d3nocrch4qti4v.cloudfront.net https://duuytoqss3gu4.cloudfront.net https://df45ay5pw60dy.cloudfront.net script-src https://*.forter.com https://dlthst9q2beh8.cloudfront.net https://d2nww8zpyj5pk0.cloudfront.net https://d2w2nqfk3z9hdt.cloudfront.net worker-src blob: |
Die merchantConfig ist ein Javascript-Objekt, das Sie nach Ihren Wünschen anpassen können. Es befindet sich am Anfang des Snippet-Codes.
Die unterstützten Felder sind:
csp - (boolean) wird auf true gesetzt, falls die Webseite Content-Security-Policy (CSP) verwendet, um CSP-Berichte zu vermeidenProzessablauf Forter
Um eine Forter-Prüfung über eine Server-zu-Server-Verbindung durchzuführen, verwenden Sie bitte die entsprechende Zahlungsmethode Zahlungen per Kreditkarte.
Bitte stellen Sie sicher, dass die E-Mail-Adresse des Kunden an billToCustomer → E-Mail-JSON übermittelt wird, damit Forter die Transaktion prüfen kann. Siehe CustomerInfo.
Der Parameter ForterToken muss zusätzlich zu den jeweiligen Parametern der einzelnen Zahlungsarten angegeben werden.
| Key | Format | CND | Beschreibung |
|---|---|---|---|
| ForterToken | ans..128 | O | Eindeutige ID von Forter, die beim Aufruf des Profilierungsskripts generiert wird |
Der folgende Fehlercode und Status werden an den Händler gesendet, wenn die Transaktion aufgrund einer Entscheidung von Forter abgelehnt wird:
Fehlercode: 22059203
Status: Rejected by Forter