{"id":1299,"date":"2026-07-22T07:49:46","date_gmt":"2026-07-22T07:49:46","guid":{"rendered":"https:\/\/www.alexjapadel.fr\/?page_id=1299"},"modified":"2026-07-22T07:49:47","modified_gmt":"2026-07-22T07:49:47","slug":"test-empreinte-carte","status":"publish","type":"page","link":"https:\/\/www.alexjapadel.fr\/index.php\/test-empreinte-carte\/","title":{"rendered":"Test Empreinte Carte"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\t<div class=\"ecp-form-wrap\" id=\"ecp_qdhA18mG\">\n\t\t<h4>\ud83d\udd12 Empreinte de carte obligatoire \u2014 50\u20ac<\/h4>\n\t\t<div style=\"font-size:0.9em;color:#333;background:#f7f7f7;border:1px solid #e0e0e0;border-radius:6px;padding:12px 15px;margin-bottom:16px;\">\n\t\t\t<p style=\"margin-top:0;\">\u27a1\ufe0f <strong>Ta carte n'est pas d\u00e9bit\u00e9e maintenant.<\/strong> Elle est simplement enregistr\u00e9e en s\u00e9curit\u00e9 chez Stripe.<\/p>\n\t\t\t<p>Une empreinte (blocage temporaire, sans d\u00e9bit) sera plac\u00e9e automatiquement sur cette carte 7 jours avant le tournoi. Le montant ne sera d\u00e9bit\u00e9 que dans les cas suivants :<\/p>\n\t\t\t<ul style=\"margin:0 0 10px 20px;padding:0;\">\n\t\t\t\t<li>Absence le jour du tournoi (no-show) sans pr\u00e9venir<\/li>\n\t\t\t\t<li>Annulation de ton inscription dans les <strong>48h pr\u00e9c\u00e9dant le tournoi<\/strong>, sans motif valable (blessure justifi\u00e9e, cas de force majeure, etc.)<\/li>\n\t\t\t<\/ul>\n\t\t\t<p style=\"margin-bottom:0;\">Si tu te pr\u00e9sentes normalement, ou si tu annules plus de 48h \u00e0 l'avance, l'empreinte est automatiquement lib\u00e9r\u00e9e et aucune somme n'est pr\u00e9lev\u00e9e.<\/p>\n\t\t<\/div>\n\t\t<label class=\"ecp-card-label\">\ud83d\udcb3 Carte bancaire<\/label>\n\t\t<div class=\"ecp-card-box\">\n\t\t\t<div class=\"ecp-card-element\"><\/div>\n\t\t<\/div>\n\n\t\t<details class=\"ecp-cgu-details\">\n\t\t\t<summary>\ud83d\udcc4 Lire les Conditions G\u00e9n\u00e9rales relatives \u00e0 l'empreinte de carte<\/summary>\n\t\t\t<div class=\"ecp-cgu-text\">\n\t\t\t\t<p><strong>Nature de l'empreinte<\/strong> \u2014 Il s'agit d'une pr\u00e9-autorisation bancaire, pas d'un paiement. Aucune somme n'est d\u00e9bit\u00e9e \u00e0 l'inscription ; ta carte est d'abord enregistr\u00e9e, puis une empreinte (blocage temporaire de 50\u20ac, valable 7 jours maximum) est plac\u00e9e automatiquement 7 jours avant le tournoi.<\/p>\n\t\t\t\t<p><strong>Conditions de d\u00e9bit<\/strong> \u2014 Le montant n'est d\u00e9bit\u00e9 qu'en cas d'absence le jour du tournoi sans pr\u00e9venir (no-show), ou d'annulation moins de 48h avant le d\u00e9but du tournoi sans motif valable (blessure justifi\u00e9e, force majeure). Dans tous les autres cas, l'empreinte est lib\u00e9r\u00e9e sans aucun pr\u00e9l\u00e8vement, automatiquement 12h apr\u00e8s le d\u00e9but du tournoi au plus tard.<\/p>\n\t\t\t\t<p><strong>Paiement<\/strong> \u2014 Les donn\u00e9es bancaires sont trait\u00e9es exclusivement par Stripe (certifi\u00e9 PCI-DSS), et ne transitent jamais par l'Organisateur.<\/p>\n\t\t\t\t<p><strong>Donn\u00e9es personnelles<\/strong> \u2014 Aucune donn\u00e9e bancaire n'est conserv\u00e9e par l'Organisateur. Les informations li\u00e9es \u00e0 l'inscription (nom, email) sont supprim\u00e9es automatiquement 30 jours apr\u00e8s la r\u00e9solution de l'empreinte. Conform\u00e9ment au RGPD, tu disposes d'un droit d'acc\u00e8s, de rectification et d'effacement de tes donn\u00e9es.<\/p>\n\t\t\t\t<p><strong>Droit de r\u00e9tractation<\/strong> \u2014 Conform\u00e9ment \u00e0 l'article L221-28 du Code de la consommation, le droit de r\u00e9tractation ne s'applique pas aux prestations de loisirs fournies \u00e0 une date d\u00e9termin\u00e9e : l'inscription \u00e0 ce tournoi en fait partie.<\/p>\n\t\t\t<\/div>\n\t\t<\/details>\n\t\t<label class=\"ecp-cgu-accept-label\">\n\t\t\t<input type=\"checkbox\" class=\"ecp-cgu-accept\">\n\t\t\tJ'ai lu et j'accepte les Conditions G\u00e9n\u00e9rales ci-dessus concernant l'empreinte de carte bancaire.\n\t\t<\/label>\n\n\t\t<p class=\"ecp-error\"><\/p>\n\t\t<p class=\"ecp-success\">\u2705 Carte enregistr\u00e9e. Tu peux valider ton inscription.<\/p>\n\t<\/div>\n\n\t<style>\n\t#ecp_qdhA18mG .ecp-card-label {\n\t\tdisplay:block; font-weight:600; font-size:0.92em; color:#1a1a1a; margin-bottom:6px;\n\t}\n\t#ecp_qdhA18mG .ecp-card-box {\n\t\tpadding:12px 14px; border:1px solid #d3d8de; border-radius:8px; background:#fff;\n\t\tbox-shadow:0 1px 2px rgba(0,0,0,0.04); transition:border-color .15s ease, box-shadow .15s ease;\n\t}\n\t#ecp_qdhA18mG .ecp-card-box.ecp-focus {\n\t\tborder-color:#2563eb; box-shadow:0 0 0 3px rgba(37,99,235,0.15);\n\t}\n\t#ecp_qdhA18mG .ecp-card-box.ecp-invalid {\n\t\tborder-color:#dc2626; box-shadow:0 0 0 3px rgba(220,38,38,0.12);\n\t}\n\t#ecp_qdhA18mG .ecp-error {\n\t\tcolor:#dc2626; font-size:0.88em; min-height:1.2em; margin:8px 0 0;\n\t}\n\t#ecp_qdhA18mG .ecp-success {\n\t\tcolor:#15803d; font-weight:600; display:none; margin:10px 0 0;\n\t}\n\t#ecp_qdhA18mG .ecp-cgu-details {\n\t\tmargin:14px 0 10px; font-size:0.88em; border:1px solid #e0e0e0; border-radius:6px; background:#fafafa;\n\t}\n\t#ecp_qdhA18mG .ecp-cgu-details summary {\n\t\tcursor:pointer; padding:10px 12px; font-weight:600; color:#1a1a1a; list-style:none;\n\t}\n\t#ecp_qdhA18mG .ecp-cgu-details summary::-webkit-details-marker { display:none; }\n\t#ecp_qdhA18mG .ecp-cgu-text {\n\t\tpadding:0 14px 14px; color:#444; line-height:1.5;\n\t}\n\t#ecp_qdhA18mG .ecp-cgu-text p { margin:0 0 8px; }\n\t#ecp_qdhA18mG .ecp-cgu-accept-label {\n\t\tdisplay:flex; align-items:flex-start; gap:8px; font-size:0.9em; color:#333; margin:10px 0 4px; cursor:pointer;\n\t}\n\t#ecp_qdhA18mG .ecp-cgu-accept-label input {\n\t\tmargin-top:3px;\n\t}\n\t<\/style>\n\n\t<script>\n\t(function(){\n\t\tvar UID = \"ecp_qdhA18mG\";\n\t\tvar MONTANT = \"50\";\n\t\tvar TOURNOI = \"Test\";\n\t\tvar EVENT_ID = 0;\n\t\tvar EVENT_START = \"\";\n\t\tvar PK = \"pk_live_51TvubYASIDzFzS9fKdqZi9wcLMY9XDh6SpYGExsdrZjfTe9bemcHQ3neri65hzDl5zu2FLvs2JZcjb1lZjYpKDs500SV2k6ljU\";\n\t\tvar CREATE_SETUP_URL = \"https:\\\/\\\/www.alexjapadel.fr\\\/index.php\\\/wp-json\\\/ecp\\\/v1\\\/create-setup-intent\";\n\t\tvar SAVE_PM_URL = \"https:\\\/\\\/www.alexjapadel.fr\\\/index.php\\\/wp-json\\\/ecp\\\/v1\\\/save-payment-method\";\n\n\t\tvar authorized = false;\n\t\tvar stripe, card, wrap, form, submitBtn;\n\n\t\tfunction initStripe(){\n\t\t\tif ( typeof Stripe === 'undefined' ) { setTimeout( initStripe, 200 ); return; }\n\t\t\tstripe = Stripe(PK);\n\t\t\tvar elements = stripe.elements();\n\t\t\tcard = elements.create('card', {\n\t\t\t\tstyle: {\n\t\t\t\t\tbase: {\n\t\t\t\t\t\tfontSize: '16px',\n\t\t\t\t\t\tcolor: '#1a1a1a',\n\t\t\t\t\t\tfontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n\t\t\t\t\t\t'::placeholder': { color: '#9aa0a6' }\n\t\t\t\t\t},\n\t\t\t\t\tinvalid: { color: '#dc2626' }\n\t\t\t\t}\n\t\t\t});\n\t\t\tcard.mount( wrap.querySelector('.ecp-card-element') );\n\n\t\t\tvar cardBox = wrap.querySelector('.ecp-card-box');\n\t\t\tcard.on('focus', function(){ cardBox.classList.add('ecp-focus'); });\n\t\t\tcard.on('blur', function(){ cardBox.classList.remove('ecp-focus'); });\n\t\t\tcard.on('change', function( event ){\n\t\t\t\tvar errorEl = wrap.querySelector('.ecp-error');\n\t\t\t\tif ( event.error ) {\n\t\t\t\t\terrorEl.textContent = event.error.message;\n\t\t\t\t\tcardBox.classList.add('ecp-invalid');\n\t\t\t\t} else {\n\t\t\t\t\terrorEl.textContent = '';\n\t\t\t\t\tcardBox.classList.remove('ecp-invalid');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction getNomEmail(){\n\t\t\tif ( form ) {\n\t\t\t\tvar first = form.querySelector('[name=\"rtec_first\"]');\n\t\t\t\tvar last  = form.querySelector('[name=\"rtec_last\"]');\n\t\t\t\tvar email = form.querySelector('[name=\"rtec_email\"]');\n\t\t\t\treturn {\n\t\t\t\t\tnom: ( (first ? first.value : '') + ' ' + (last ? last.value : '') ).trim(),\n\t\t\t\t\temail: email ? email.value.trim() : ''\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tnom: wrap.querySelector('.ecp-nom') ? wrap.querySelector('.ecp-nom').value.trim() : '',\n\t\t\t\temail: wrap.querySelector('.ecp-email') ? wrap.querySelector('.ecp-email').value.trim() : ''\n\t\t\t};\n\t\t}\n\n\t\tfunction authorize( callback ){\n\t\t\tvar errorEl = wrap.querySelector('.ecp-error');\n\t\t\terrorEl.textContent = '';\n\t\t\tvar cguBox = wrap.querySelector('.ecp-cgu-accept');\n\t\t\tif ( cguBox && ! cguBox.checked ) {\n\t\t\t\terrorEl.textContent = 'Merci de cocher la case d\\'acceptation des Conditions G\u00e9n\u00e9rales avant de valider.';\n\t\t\t\tcallback( false );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar info = getNomEmail();\n\t\t\tif ( ! info.nom || ! info.email ) {\n\t\t\t\terrorEl.textContent = 'Merci de remplir ton nom, pr\u00e9nom et email avant de valider.';\n\t\t\t\tcallback( false );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfetch( CREATE_SETUP_URL, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { 'Content-Type': 'application\/json' },\n\t\t\t\tbody: JSON.stringify({ nom: info.nom, email: info.email, tournoi: TOURNOI })\n\t\t\t})\n\t\t\t.then(function(r){ return r.json(); })\n\t\t\t.then(function(data){\n\t\t\t\tif ( data.error ) throw new Error( data.error );\n\t\t\t\treturn stripe.confirmCardSetup( data.client_secret, {\n\t\t\t\t\tpayment_method: { card: card, billing_details: { name: info.nom, email: info.email } }\n\t\t\t\t});\n\t\t\t})\n\t\t\t.then(function(result){\n\t\t\t\tif ( result.error ) throw new Error( result.error.message );\n\t\t\t\treturn fetch( SAVE_PM_URL, {\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: { 'Content-Type': 'application\/json' },\n\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\tsetup_intent_id: result.setupIntent.id,\n\t\t\t\t\t\tmontant: MONTANT,\n\t\t\t\t\t\ttournoi: TOURNOI,\n\t\t\t\t\t\tnom: info.nom,\n\t\t\t\t\t\temail: info.email,\n\t\t\t\t\t\tevent_id: EVENT_ID,\n\t\t\t\t\t\tevent_start: EVENT_START\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t})\n\t\t\t.then(function(r){ return r.json(); })\n\t\t\t.then(function(data){\n\t\t\t\tif ( data.error ) throw new Error( data.error );\n\t\t\t\twrap.querySelector('.ecp-success').style.display = 'block';\n\t\t\t\tcallback( true );\n\t\t\t})\n\t\t\t.catch(function(err){\n\t\t\t\terrorEl.textContent = err.message || 'Une erreur est survenue avec la carte.';\n\t\t\t\tcallback( false );\n\t\t\t});\n\t\t}\n\n\t\tfunction onFormSubmit( e ){\n\t\t\tif ( e.target !== form ) return;\n\t\t\tif ( authorized ) return;\n\t\t\te.preventDefault();\n\t\t\te.stopImmediatePropagation();\n\t\t\tvar errorEl = wrap.querySelector('.ecp-error');\n\t\t\terrorEl.textContent = 'V\u00e9rification de la carte en cours...';\n\t\t\tauthorize(function( success ){\n\t\t\t\tif ( success ) {\n\t\t\t\t\tauthorized = true;\n\t\t\t\t\tsubmitBtn.click();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction onStandaloneClick(){\n\t\t\tvar btn = wrap.querySelector('.ecp-submit');\n\t\t\tbtn.disabled = true;\n\t\t\tbtn.textContent = 'Traitement en cours...';\n\t\t\tauthorize(function( success ){\n\t\t\t\tif ( success ) {\n\t\t\t\t\tbtn.style.display = 'none';\n\t\t\t\t} else {\n\t\t\t\t\tbtn.disabled = false;\n\t\t\t\t\tbtn.textContent = 'Autoriser la carte (' + MONTANT + '\u20ac)';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction setup(){\n\t\t\twrap = document.getElementById( UID );\n\t\t\tif ( ! wrap ) return;\n\t\t\tform = document.getElementById('rtec-form');\n\t\t\tsubmitBtn = form ? form.querySelector('.rtec-submit-button') : null;\n\n\t\t\tif ( form && submitBtn ) {\n\t\t\t\tsubmitBtn.insertAdjacentElement( 'beforebegin', wrap );\n\t\t\t\tdocument.addEventListener( 'submit', onFormSubmit, true );\n\t\t\t} else {\n\t\t\t\tvar nomHtml = '<p><label>Nom et pr\u00e9nom<br><input type=\"text\" class=\"ecp-nom\" style=\"width:100%;padding:8px;\"><\/label><\/p>' +\n\t\t\t\t\t'<p><label>Email<br><input type=\"email\" class=\"ecp-email\" style=\"width:100%;padding:8px;\"><\/label><\/p>';\n\t\t\t\twrap.querySelector('.ecp-card-element').insertAdjacentHTML( 'beforebegin', nomHtml );\n\t\t\t\twrap.insertAdjacentHTML( 'beforeend', '<button type=\"button\" class=\"ecp-submit button button-primary\">Autoriser la carte (' + MONTANT + '\u20ac)<\/button>' );\n\t\t\t\twrap.querySelector('.ecp-submit').addEventListener( 'click', onStandaloneClick );\n\t\t\t}\n\n\t\t\tinitStripe();\n\t\t}\n\n\t\tif ( document.readyState === 'loading' ) {\n\t\t\tdocument.addEventListener( 'DOMContentLoaded', setup );\n\t\t} else {\n\t\t\tsetup();\n\t\t}\n\t})();\n\t<\/script>\n\t<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1299","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.alexjapadel.fr\/index.php\/wp-json\/wp\/v2\/pages\/1299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alexjapadel.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.alexjapadel.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.alexjapadel.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alexjapadel.fr\/index.php\/wp-json\/wp\/v2\/comments?post=1299"}],"version-history":[{"count":1,"href":"https:\/\/www.alexjapadel.fr\/index.php\/wp-json\/wp\/v2\/pages\/1299\/revisions"}],"predecessor-version":[{"id":1300,"href":"https:\/\/www.alexjapadel.fr\/index.php\/wp-json\/wp\/v2\/pages\/1299\/revisions\/1300"}],"wp:attachment":[{"href":"https:\/\/www.alexjapadel.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}