{"id":2083,"date":"2025-10-01T22:27:23","date_gmt":"2025-10-01T19:27:23","guid":{"rendered":"https:\/\/easilyn.com\/?page_id=2083"},"modified":"2025-11-14T21:22:15","modified_gmt":"2025-11-14T19:22:15","slug":"checkout-2","status":"publish","type":"page","link":"https:\/\/easilyn.com\/en\/checkout-2\/","title":{"rendered":"Checkout"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"2083\" class=\"elementor elementor-2083\">\n\t\t\t\t<div class=\"elementor-element elementor-element-228b6cb e-flex e-con-boxed e-con e-parent\" data-id=\"228b6cb\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a918efa elementor-widget elementor-widget-spacer\" data-id=\"a918efa\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2d49319 e-flex e-con-boxed e-con e-parent\" data-id=\"2d49319\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-effac92 elementor-widget elementor-widget-shortcode\" data-id=\"effac92\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">  <style>\n    .easi-plans{--ink:#0f172a;--muted:#64748b;--line:#e5e7eb;--ink2:#111827}\n    .easi-plans .wrap{border:1px solid var(--line);border-radius:16px;padding:22px;background:#fff}\n    .easi-title{margin:0 0 12px;font-size:28px;color:var(--ink);font-weight:800}\n    .easi-toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;margin:10px 0 18px}\n    .easi-toggle input{display:none}\n    .easi-toggle label{padding:10px 18px;cursor:pointer;font-weight:800;color:#fff;background:#0b1220}\n    .easi-toggle input + label{background:#fff;color:var(--ink2)}\n    .easi-toggle input:checked + label{background:#0b1220;color:#fff}\n    .plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}\n    @media (max-width:960px){.plan-grid{grid-template-columns:1fr}}\n    .plan-card{border:1px solid var(--line);border-radius:16px;background:#fff;padding:22px;display:flex;flex-direction:column;gap:14px;transition:box-shadow .2s,border-color .2s}\n    .plan-card:hover{box-shadow:0 8px 24px rgba(0,0,0,.06);border-color:#d9dcec}\n    .plan-card.active{border-color:#6753ff;box-shadow:0 8px 24px rgba(103,83,255,.15)}\n    .plan-title{font-size:28px;line-height:1.15;font-weight:900;color:var(--ink)}\n    .plan-period{font-size:14px;color:var(--muted)}\n    .plan-badges{display:flex;gap:8px;flex-wrap:wrap}\n    .badge{font-size:12px;font-weight:800;letter-spacing:.02em;border-radius:999px;padding:6px 10px}\n    .badge.value{color:#fff;background:linear-gradient(90deg,#6f57ff,#8e7bff)}\n    .badge.trial{color:#1e3a8a;background:#eff6ff;border:1px solid #dbeafe}\n    .plan-cta{margin-top:auto}\n    .plan-cta a{display:block;text-align:center;text-decoration:none;font-weight:900;padding:14px;border-radius:12px;color:#fff;background:#0b1220}\n    .hidden{display:none}\n  <\/style>\n\n  <div class=\"easi-plans\" data-trp-unfiltered=\"trp-unfiltered\"> <!-- help TRP keep full block -->\n    <div class=\"wrap\">\n      <h3 class=\"easi-title\">Choose a plan<\/h3>\n\n      <!-- Toggle (just switches visibility; content already in DOM) -->\n      <div class=\"easi-toggle\" role=\"tablist\" aria-label=\"Billing period\">\n        <input type=\"radio\" name=\"easi-period\" id=\"easi-monthly\" value=\"monthly\" checked>\n        <label for=\"easi-monthly\" role=\"tab\" aria-selected=\"true\">Monthly<\/label>\n        <input type=\"radio\" name=\"easi-period\" id=\"easi-yearly\" value=\"yearly\">\n        <label for=\"easi-yearly\" role=\"tab\" aria-selected=\"false\">Yearly<\/label>\n      <\/div>\n\n      <!-- MONTHLY (server-rendered) -->\n      <div id=\"grid-monthly\" class=\"plan-grid\">\n            <div class=\"plan-card\" data-price=\"price_1SFemLBdcWi7C8tg1nBR9AEZ\">\n            <div class=\"plan-title\">Basic<\/div>\n      <div class=\"plan-period\">Monthly<\/div>\n      <div class=\"plan-cta\"><a href=\"https:\/\/easilyn.com\/en\/checkout-2\/?price=price_1SFemLBdcWi7C8tg1nBR9AEZ\">Choose plan<\/a><\/div>\n    <\/div>\n        <div class=\"plan-card\" data-price=\"price_1SFek6BdcWi7C8tguabt8Qsi\">\n              <div class=\"plan-badges\">\n          <span class=\"badge value\">Best Value<\/span>\n          <span class=\"badge trial\">60-day trial<\/span>\n        <\/div>\n            <div class=\"plan-title\">Professional<\/div>\n      <div class=\"plan-period\">Monthly<\/div>\n      <div class=\"plan-cta\"><a href=\"https:\/\/easilyn.com\/en\/checkout-2\/?price=price_1SFek6BdcWi7C8tguabt8Qsi\">Choose plan<\/a><\/div>\n    <\/div>\n        <div class=\"plan-card\" data-price=\"price_1SFee8BdcWi7C8tgdPTUHGz2\">\n            <div class=\"plan-title\">Premium<\/div>\n      <div class=\"plan-period\">Monthly<\/div>\n      <div class=\"plan-cta\"><a href=\"https:\/\/easilyn.com\/en\/checkout-2\/?price=price_1SFee8BdcWi7C8tgdPTUHGz2\">Choose plan<\/a><\/div>\n    <\/div>\n          <\/div>\n\n      <!-- YEARLY (server-rendered, hidden by default) -->\n      <div id=\"grid-yearly\" class=\"plan-grid hidden\">\n            <div class=\"plan-card\" data-price=\"price_1SFemLBdcWi7C8tg7y83UoGC\">\n            <div class=\"plan-title\">Basic<\/div>\n      <div class=\"plan-period\">Yearly<\/div>\n      <div class=\"plan-cta\"><a href=\"https:\/\/easilyn.com\/en\/checkout-2\/?price=price_1SFemLBdcWi7C8tg7y83UoGC\">Choose plan<\/a><\/div>\n    <\/div>\n        <div class=\"plan-card\" data-price=\"price_1SFek6BdcWi7C8tgOPDI8Dxj\">\n              <div class=\"plan-badges\">\n          <span class=\"badge value\">Best Value<\/span>\n          <span class=\"badge trial\">60-day trial<\/span>\n        <\/div>\n            <div class=\"plan-title\">Professional<\/div>\n      <div class=\"plan-period\">Yearly<\/div>\n      <div class=\"plan-cta\"><a href=\"https:\/\/easilyn.com\/en\/checkout-2\/?price=price_1SFek6BdcWi7C8tgOPDI8Dxj\">Choose plan<\/a><\/div>\n    <\/div>\n        <div class=\"plan-card\" data-price=\"price_1SFef1BdcWi7C8tglbMKdALn\">\n            <div class=\"plan-title\">Premium<\/div>\n      <div class=\"plan-period\">Yearly<\/div>\n      <div class=\"plan-cta\"><a href=\"https:\/\/easilyn.com\/en\/checkout-2\/?price=price_1SFef1BdcWi7C8tglbMKdALn\">Choose plan<\/a><\/div>\n    <\/div>\n          <\/div>\n\n              <div style=\"color:#94a3b8;margin-top:10px\">No plan selected yet.<\/div>\n          <\/div>\n  <\/div>\n\n  <script>\n  (function(){\n    var m = document.getElementById('grid-monthly');\n    var y = document.getElementById('grid-yearly');\n    var rM = document.getElementById('easi-monthly');\n    var rY = document.getElementById('easi-yearly');\n\n    if (rM) rM.addEventListener('change', function(){\n      if (!this.checked) return;\n      m.classList.remove('hidden');\n      y.classList.add('hidden');\n      try { document.dispatchEvent(new CustomEvent('trp_load_dynamic_content')); } catch(e){}\n    });\n    if (rY) rY.addEventListener('change', function(){\n      if (!this.checked) return;\n      y.classList.remove('hidden');\n      m.classList.add('hidden');\n      try { document.dispatchEvent(new CustomEvent('trp_load_dynamic_content')); } catch(e){}\n    });\n  })();\n  <\/script>\n  \n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cd572f4 e-flex e-con-boxed e-con e-parent\" data-id=\"cd572f4\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-175667f elementor-widget elementor-widget-shortcode\" data-id=\"175667f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">  <style>\n    .easi-msg{color:#b91c1c;text-align:center;margin:10px 0;display:none}\n    .easi-msg.show{display:block}\n  <\/style>\n\n  <div id=\"easilyn-hosted-checkout\" style=\"max-width:720px;margin:0 auto\">\n    <p id=\"msg-need-plan\" class=\"easi-msg\">Please choose a plan first.<\/p>\n    <p id=\"msg-active-sub\" class=\"easi-msg\">\n      You already have an active subscription. Please use &quot;Manage Subscription&quot; on the My Subscription page.      <a href=\"https:\/\/easilyn.com\/en\/%cf%84%ce%bf-%cf%80%ce%b1%ce%ba%ce%ad%cf%84%ce%bf-%ce%bc%ce%bf%cf%85\/\">\n        My Package      <\/a>.\n    <\/p>\n    <p id=\"msg-generic-error\" class=\"easi-msg\">An error occurred. Please try again. <span id=\"msg-detail\"><\/span><\/p>\n  <\/div>\n\n  <script src=\"https:\/\/js.stripe.com\/v3\/\"><\/script>\n  <script>\n  (async function(){\n    const MSG = {\n      need:    document.getElementById('msg-need-plan'),\n      active:  document.getElementById('msg-active-sub'),\n      generic: document.getElementById('msg-generic-error'),\n      detail:  document.getElementById('msg-detail')\n    };\n    function hideAll(){ [MSG.need,MSG.active,MSG.generic].forEach(el=>el && el.classList.remove('show')); if(MSG.detail) MSG.detail.textContent=''; }\n    function show(el){ hideAll(); if(el) el.classList.add('show'); try{document.dispatchEvent(new CustomEvent('trp_load_dynamic_content'));}catch(e){} }\n\n    const priceId = \"\";\n    if(!priceId){ show(MSG.need); return; }\n\n    try{\n      const endpoint = \"https:\\\/\\\/easilyn.com\\\/en\\\/wp-json\\\/easilyn\\\/v1\\\/hosted-session\";\n      const res = await fetch(endpoint, {\n        method:'POST',\n        credentials:'same-origin',\n        headers:{\n          'Content-Type':'application\/json',\n          'X-WP-Nonce': \"306ebf2b93\"        },\n        body: JSON.stringify({ price_id: priceId })\n      });\n      const data = await res.json().catch(()=> ({}));\n\n      if(!res.ok){\n        if (res.status === 409 && (data && (data.code === 'has_active_subscription' || (data.data && data.data.sub_id)))) {\n          show(MSG.active); return;\n        }\n        if (MSG.detail && (data && (data.message || data.error))) { MSG.detail.textContent = ' (' + String(data.message || data.error) + ')'; }\n        show(MSG.generic); return;\n      }\n\n      \/\/ Prefer session URL; fallback to redirectToCheckout\n      const url = data && data.url;\n      const sid = data && data.id;\n      if (url) { window.location.href = url; return; }\n\n      const stripe = Stripe(\"pk_live_51SDKnCBdcWi7C8tgZ7WsxI9ZdHl2RWIQk78SYCzJAdApvlNaMuBIVM1v2Ygb3bM7G8AmtMonf9LPf33N5PY3dPiA00opkXK5Fj\");\n      if (sid) {\n        const { error } = await stripe.redirectToCheckout({ sessionId: sid });\n        if (error) { if (MSG.detail) MSG.detail.textContent = ' (' + error.message + ')'; show(MSG.generic); }\n        return;\n      }\n\n      if (MSG.detail) MSG.detail.textContent = ' (No session returned)';\n      show(MSG.generic);\n\n    }catch(e){\n      if (MSG.detail && e && e.message) MSG.detail.textContent = ' (' + e.message + ')';\n      show(MSG.generic);\n    }\n  })();\n  <\/script>\n  <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2c03b09 e-flex e-con-boxed e-con e-parent\" data-id=\"2c03b09\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-19d4b74 elementor-widget elementor-widget-spacer\" data-id=\"19d4b74\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2083","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/easilyn.com\/en\/wp-json\/wp\/v2\/pages\/2083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/easilyn.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/easilyn.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/easilyn.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/easilyn.com\/en\/wp-json\/wp\/v2\/comments?post=2083"}],"version-history":[{"count":12,"href":"https:\/\/easilyn.com\/en\/wp-json\/wp\/v2\/pages\/2083\/revisions"}],"predecessor-version":[{"id":3097,"href":"https:\/\/easilyn.com\/en\/wp-json\/wp\/v2\/pages\/2083\/revisions\/3097"}],"wp:attachment":[{"href":"https:\/\/easilyn.com\/en\/wp-json\/wp\/v2\/media?parent=2083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}