{"id":3145,"date":"2026-02-03T19:10:21","date_gmt":"2026-02-03T19:10:21","guid":{"rendered":"https:\/\/firoiptv.com\/?page_id=3145"},"modified":"2026-02-24T20:05:08","modified_gmt":"2026-02-24T20:05:08","slug":"payment-binance","status":"publish","type":"page","link":"https:\/\/firoiptv.com\/uk\/payment-binance\/","title":{"rendered":"Payment Binance"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3145\" class=\"elementor elementor-3145\" data-elementor-settings=\"{&quot;element_pack_global_tooltip_width&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_width_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_width_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_padding&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_padding_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_padding_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true}}\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d412c5c e-flex e-con-boxed e-con e-parent\" data-id=\"d412c5c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;ekit_has_onepagescroll_dot&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4f6f9fe elementor-widget elementor-widget-html\" data-id=\"4f6f9fe\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ============================================\r\n     BINANCE PAYMENT PAGE - WITH DISCOUNT SYSTEM\r\n     ============================================ -->\r\n\r\n<style>\r\n.binance-payment-block * {\r\n    margin: 0;\r\n    padding: 0;\r\n    box-sizing: border-box;\r\n}\r\n\r\n.binance-payment-block {\r\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\r\n    width: 100%;\r\n    max-width: 480px;\r\n    margin: 0 auto;\r\n    padding: 20px;\r\n}\r\n\r\n.binance-card {\r\n    background: white;\r\n    border-radius: 24px;\r\n    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);\r\n    overflow: hidden;\r\n}\r\n\r\n\/* Header *\/\r\n.binance-header {\r\n    background: linear-gradient(135deg, #F3BA2F 0%, #F0B90B 100%);\r\n    padding: 24px;\r\n    text-align: center;\r\n    position: relative;\r\n}\r\n\r\n.binance-logo {\r\n    width: 45px;\r\n    height: 45px;\r\n    margin: 0 auto 10px;\r\n    display: block;\r\n}\r\n\r\n.binance-title {\r\n    color: #1E2329;\r\n    font-size: 22px;\r\n    font-weight: 700;\r\n    margin-bottom: 4px;\r\n}\r\n\r\n.binance-subtitle {\r\n    color: #474D57;\r\n    font-size: 13px;\r\n    font-weight: 500;\r\n}\r\n\r\n\/* Timer *\/\r\n.timer-badge {\r\n    position: absolute;\r\n    top: 16px;\r\n    right: 16px;\r\n    background: rgba(30, 35, 41, 0.15);\r\n    backdrop-filter: blur(10px);\r\n    padding: 8px 16px;\r\n    border-radius: 20px;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 6px;\r\n}\r\n\r\n.timer-text {\r\n    color: #1E2329;\r\n    font-size: 14px;\r\n    font-weight: 700;\r\n    font-family: 'Courier New', monospace;\r\n}\r\n\r\n.timer-expired {\r\n    background: rgba(220, 38, 38, 0.9);\r\n}\r\n\r\n.timer-expired .timer-text {\r\n    color: white;\r\n}\r\n\r\n\/* Content *\/\r\n.binance-content {\r\n    padding: 24px;\r\n}\r\n\r\n\/* Order Card *\/\r\n.order-card {\r\n    background: #FAFAFA;\r\n    border-radius: 16px;\r\n    padding: 20px;\r\n    margin-bottom: 20px;\r\n}\r\n\r\n.order-row {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    margin-bottom: 12px;\r\n}\r\n\r\n.order-row:last-child {\r\n    margin-bottom: 0;\r\n    padding-top: 12px;\r\n    border-top: 2px dashed #E5E7EB;\r\n}\r\n\r\n.order-label {\r\n    font-size: 13px;\r\n    color: #707A8A;\r\n    font-weight: 500;\r\n}\r\n\r\n.order-value {\r\n    font-size: 14px;\r\n    color: #1E2329;\r\n    font-weight: 600;\r\n}\r\n\r\n.order-total {\r\n    font-size: 24px;\r\n    font-weight: 800;\r\n    background: linear-gradient(135deg, #F3BA2F 0%, #F0B90B 100%);\r\n    -webkit-background-clip: text;\r\n    -webkit-text-fill-color: transparent;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n}\r\n\r\n\/* Discount *\/\r\n.binance-discount-badge {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 4px;\r\n    padding: 3px 10px;\r\n    background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%);\r\n    border-radius: 10px;\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    color: #8B4513;\r\n}\r\n\r\n.binance-original-price {\r\n    text-decoration: line-through;\r\n    color: #999;\r\n    font-size: 16px;\r\n    font-weight: 600;\r\n}\r\n\r\n.order-discount-row {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    padding: 10px 0;\r\n    margin-bottom: 10px;\r\n    border-bottom: 1px dashed #E5E7EB;\r\n}\r\n\r\n.order-discount-label {\r\n    font-size: 13px;\r\n    color: #FF9500;\r\n    font-weight: 600;\r\n}\r\n\r\n.order-discount-value {\r\n    font-size: 14px;\r\n    color: #FF9500;\r\n    font-weight: 700;\r\n}\r\n\r\n\/* QR Section *\/\r\n.qr-section {\r\n    text-align: center;\r\n    margin-bottom: 20px;\r\n}\r\n\r\n.qr-label {\r\n    font-size: 15px;\r\n    font-weight: 700;\r\n    color: #1E2329;\r\n    margin-bottom: 12px;\r\n}\r\n\r\n.qr-wrapper {\r\n    background: linear-gradient(135deg, #FEF7E6 0%, #FFF3D6 100%);\r\n    padding: 16px;\r\n    border-radius: 20px;\r\n    display: inline-block;\r\n    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n.qr-box {\r\n    background: white;\r\n    padding: 16px;\r\n    border-radius: 12px;\r\n}\r\n\r\n.qr-image {\r\n    width: 200px;\r\n    height: 200px;\r\n    display: block;\r\n}\r\n\r\n.qr-loading {\r\n    width: 200px;\r\n    height: 200px;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 12px;\r\n}\r\n\r\n.qr-spinner {\r\n    width: 40px;\r\n    height: 40px;\r\n    border: 3px solid #E5E7EB;\r\n    border-top: 3px solid #F0B90B;\r\n    border-radius: 50%;\r\n    animation: spin 1s linear infinite;\r\n}\r\n\r\n@keyframes spin {\r\n    to { transform: rotate(360deg); }\r\n}\r\n\r\n.qr-error {\r\n    color: #DC2626;\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n}\r\n\r\n\/* Steps *\/\r\n.payment-steps {\r\n    background: #F0FDF4;\r\n    border-radius: 16px;\r\n    padding: 16px;\r\n    margin-bottom: 16px;\r\n}\r\n\r\n.step {\r\n    display: flex;\r\n    gap: 12px;\r\n    margin-bottom: 10px;\r\n    font-size: 13px;\r\n    color: #166534;\r\n}\r\n\r\n.step:last-child {\r\n    margin-bottom: 0;\r\n}\r\n\r\n.step-icon {\r\n    width: 28px;\r\n    height: 28px;\r\n    background: linear-gradient(135deg, #86EFAC 0%, #4ADE80 100%);\r\n    border-radius: 50%;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    font-size: 14px;\r\n    font-weight: 700;\r\n    color: #166534;\r\n    flex-shrink: 0;\r\n}\r\n\r\n\/* Buttons *\/\r\n.btn-confirm {\r\n    width: 100%;\r\n    padding: 16px;\r\n    background: linear-gradient(135deg, #10B981 0%, #059669 100%);\r\n    color: white;\r\n    border: none;\r\n    border-radius: 16px;\r\n    font-size: 15px;\r\n    font-weight: 700;\r\n    cursor: pointer;\r\n    transition: all 0.3s ease;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 8px;\r\n    margin-bottom: 16px;\r\n}\r\n\r\n.btn-confirm:hover:not(:disabled) {\r\n    transform: translateY(-2px);\r\n}\r\n\r\n.btn-confirm:disabled {\r\n    opacity: 0.5;\r\n    cursor: not-allowed;\r\n}\r\n\r\n.btn-confirm.processing {\r\n    background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%);\r\n}\r\n\r\n.btn-confirm.confirmed {\r\n    background: linear-gradient(135deg, #6B7280 0%, #4B5563 100%);\r\n}\r\n\r\n\/* Alert *\/\r\n.binance-alert {\r\n    padding: 14px 16px;\r\n    border-radius: 12px;\r\n    margin-bottom: 16px;\r\n    font-size: 13px;\r\n    font-weight: 600;\r\n    display: none;\r\n}\r\n\r\n.binance-alert.show {\r\n    display: block;\r\n}\r\n\r\n.alert-success {\r\n    background: #D1FAE5;\r\n    color: #065F46;\r\n}\r\n\r\n.alert-warning {\r\n    background: #FEF3C7;\r\n    color: #92400E;\r\n}\r\n\r\n\/* Security Notice *\/\r\n.security-notice {\r\n    text-align: center;\r\n    padding: 12px;\r\n    background: #FFFBEB;\r\n    border-radius: 12px;\r\n    font-size: 12px;\r\n    color: #78350F;\r\n}\r\n\r\n\/* Responsive *\/\r\n@media (max-width: 480px) {\r\n    .timer-badge {\r\n        position: static;\r\n        margin: 12px auto 0;\r\n    }\r\n    \r\n    .qr-image,\r\n    .qr-loading {\r\n        width: 180px;\r\n        height: 180px;\r\n    }\r\n}\r\n<\/style>\r\n\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n\r\n<div class=\"binance-payment-block\">\r\n    <div class=\"binance-card\">\r\n        \r\n        <div class=\"binance-header\">\r\n            <img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/e\/e8\/Binance_Logo.svg\/180px-Binance_Logo.svg.png\" alt=\"Binance\" class=\"binance-logo\">\r\n            <div class=\"binance-title\">Binance Pay<\/div>\r\n            <div class=\"binance-subtitle\">Secure Crypto Payment<\/div>\r\n            \r\n            <div class=\"timer-badge\" id=\"timer-badge\">\r\n                <span>\u23f1\ufe0f<\/span>\r\n                <span class=\"timer-text\" id=\"timer-display\">20:00<\/span>\r\n            <\/div>\r\n        <\/div>\r\n        \r\n        <div class=\"binance-content\">\r\n            \r\n            <div id=\"alert\" class=\"binance-alert\"><\/div>\r\n            \r\n            <div class=\"order-card\">\r\n                <div class=\"order-row\">\r\n                    <span class=\"order-label\">Order ID<\/span>\r\n                    <span class=\"order-value\" id=\"order-id\">-<\/span>\r\n                <\/div>\r\n                <div class=\"order-row\">\r\n                    <span class=\"order-label\">Plan<\/span>\r\n                    <span class=\"order-value\" id=\"plan-name\">-<\/span>\r\n                <\/div>\r\n                <div class=\"order-row\">\r\n                    <span class=\"order-label\">Email<\/span>\r\n                    <span class=\"order-value\" id=\"email\">-<\/span>\r\n                <\/div>\r\n                \r\n                <div id=\"discount-row\" class=\"order-discount-row\" style=\"display: none;\">\r\n                    <span class=\"order-discount-label\">\ud83c\udff7\ufe0f Discount<\/span>\r\n                    <span class=\"order-discount-value\" id=\"discount-amount\">-\u20ac0.00<\/span>\r\n                <\/div>\r\n                \r\n                <div class=\"order-row\">\r\n                    <span class=\"order-label\">Total Amount<\/span>\r\n                    <span class=\"order-total\" id=\"total\">\u20ac0.00<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div class=\"qr-section\">\r\n                <div class=\"qr-label\">\ud83d\udcf1 Scan QR Code<\/div>\r\n                \r\n                <div class=\"qr-wrapper\">\r\n                    <div class=\"qr-box\">\r\n                        <div class=\"qr-loading\" id=\"qr-loading\">\r\n                            <div class=\"qr-spinner\"><\/div>\r\n                            <div>Loading...<\/div>\r\n                        <\/div>\r\n                        <img id=\"qr-image\" class=\"qr-image\" style=\"display: none;\" alt=\"Binance Pay QR\">\r\n                        <div id=\"qr-error\" class=\"qr-error\" style=\"display: none;\"><\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <button class=\"btn-confirm\" id=\"btn-confirm\" onclick=\"confirmPayment()\" disabled>\r\n                <span id=\"btn-icon\">\u2713<\/span>\r\n                <span id=\"btn-text\">I Completed The Payment<\/span>\r\n            <\/button>\r\n            \r\n            <div class=\"payment-steps\">\r\n                <div class=\"step\">\r\n                    <div class=\"step-icon\">1<\/div>\r\n                    <div>Scan QR code with Binance App<\/div>\r\n                <\/div>\r\n                <div class=\"step\">\r\n                    <div class=\"step-icon\">2<\/div>\r\n                    <div>Confirm payment in Binance<\/div>\r\n                <\/div>\r\n                <div class=\"step\">\r\n                    <div class=\"step-icon\">3<\/div>\r\n                    <div>Click \"I Completed Payment\"<\/div>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div class=\"security-notice\">\r\n                \ud83d\udd12 Secure payment via Binance Pay\r\n            <\/div>\r\n            \r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function() {\r\n    'use strict';\r\n    \r\n    if (window.binanceInitialized) return;\r\n    window.binanceInitialized = true;\r\n\r\n    const AJAX_URL = 'https:\/\/firoiptv.com\/wp-admin\/admin-ajax.php';\r\n    \r\n    const urlParams = new URLSearchParams(window.location.search);\r\n    const orderId = urlParams.get('order_id') || sessionStorage.getItem('checkin_order_id');\r\n    const orderData = JSON.parse(sessionStorage.getItem('checkin_order_data') || '{}');\r\n    \r\n    console.log('\ud83d\udcb0 Binance Pay - Order:', orderId);\r\n    console.log('\ud83d\udce6 Data:', orderData);\r\n    \r\n    if (!orderId || !orderData.email) {\r\n        showError('Invalid order information');\r\n        return;\r\n    }\r\n    \r\n    \/\/ Display order info\r\n    const currency = orderData.currency || 'EUR';\r\n    const symbols = { EUR: '\u20ac', USD: '$', GBP: '\u00a3', SEK: 'kr', DKK: 'kr' };\r\n    const symbol = symbols[currency] || currency;\r\n    \r\n    document.getElementById('order-id').textContent = orderId;\r\n    document.getElementById('plan-name').textContent = orderData.plan?.name || '-';\r\n    document.getElementById('email').textContent = orderData.email;\r\n    \r\n    const originalTotal = orderData.original_total || orderData.total;\r\n    const discountApplied = orderData.discount_applied || 0;\r\n    const finalTotal = orderData.total;\r\n    \r\n    const totalElement = document.getElementById('total');\r\n    const discountRow = document.getElementById('discount-row');\r\n    \r\n    if (discountApplied > 0) {\r\n        discountRow.style.display = 'flex';\r\n        document.getElementById('discount-amount').textContent = `-${symbol}${discountApplied.toFixed(2)}`;\r\n        totalElement.innerHTML = `\r\n            <span class=\"binance-original-price\">${symbol}${originalTotal.toFixed(2)}<\/span>\r\n            ${symbol}${finalTotal.toFixed(2)}\r\n            <span class=\"binance-discount-badge\">-10%<\/span>\r\n        `;\r\n    } else {\r\n        totalElement.textContent = symbol + finalTotal.toFixed(2);\r\n    }\r\n    \r\n    \/\/ Timer\r\n    let timeLeft = 20 * 60;\r\n    let timerInterval;\r\n    let paymentConfirmed = false;\r\n    let pollingInterval;\r\n    \r\n    startTimer();\r\n    loadQR();\r\n    startPolling();\r\n    \r\n    function startTimer() {\r\n        updateTimer();\r\n        timerInterval = setInterval(() => {\r\n            timeLeft--;\r\n            updateTimer();\r\n            if (timeLeft <= 0) {\r\n                clearInterval(timerInterval);\r\n                stopPolling();\r\n                handleExpired();\r\n            }\r\n        }, 1000);\r\n    }\r\n    \r\n    function updateTimer() {\r\n        const m = Math.floor(timeLeft \/ 60);\r\n        const s = timeLeft % 60;\r\n        document.getElementById('timer-display').textContent = \r\n            `${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\r\n        if (timeLeft < 120) {\r\n            document.getElementById('timer-badge').style.background = 'rgba(220, 38, 38, 0.9)';\r\n        }\r\n    }\r\n    \r\n    function handleExpired() {\r\n        const badge = document.getElementById('timer-badge');\r\n        badge.classList.add('timer-expired');\r\n        badge.innerHTML = '<span>\u23f0<\/span><span class=\"timer-text\">EXPIRED<\/span>';\r\n        document.getElementById('btn-confirm').disabled = true;\r\n        showAlert('\u23f0 Payment window expired', 'warning');\r\n    }\r\n\r\n    \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n    \/\/ \u2705 loadQR - FIXED (\u064a\u0633\u062a\u062e\u062f\u0645 plan_type \u0627\u0644\u062c\u062f\u064a\u062f)\r\n    \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n    async function loadQR() {\r\n        console.log('\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501');\r\n        console.log('\ud83c\udfa8 LOADING QR CODE');\r\n        console.log('\ud83d\udcb0 Final Total:', finalTotal);\r\n        console.log('\ud83d\udcb1 Currency:', currency);\r\n        console.log('\ud83d\udcca Discount Applied:', discountApplied);\r\n\r\n        try {\r\n            const roundedTotal = parseFloat(finalTotal).toFixed(2);\r\n\r\n            \/\/ \u2705 \u0627\u0633\u062a\u062e\u0631\u0627\u062c plan_type \u0645\u0646 orderData\r\n            const planId   = orderData?.plan?.planId || '';\r\n            const hasPlayer = orderData?.addons?.player?.active || false;\r\n\r\n            \/\/ \u062a\u062d\u062f\u064a\u062f base plan\r\n            let planBase = '1_month';\r\n            if (planId.includes('12-month'))     planBase = '12_months';\r\n            else if (planId.includes('6-month')) planBase = '6_months';\r\n            else if (planId.includes('3-month')) planBase = '3_months';\r\n            else                                 planBase = '1_month';\r\n\r\n            \/\/ \u062a\u062d\u062f\u064a\u062f plan_type \u0627\u0644\u0646\u0647\u0627\u0626\u064a\r\n            \/\/ \u2705 \u062a\u062d\u0642\u0642 \u0625\u0630\u0627 Player \u0645\u062c\u0627\u0646\u064a\r\nconst promoRes    = await fetch(`${AJAX_URL}?action=get_promo_settings`);\r\nconst promoData   = await promoRes.json();\r\nconst freePlans   = promoData?.data?.player_free_plans || [];\r\nconst promoActive = promoData?.data?.player_promo_active || false;\r\n\r\n\/\/ \u062a\u062d\u0648\u064a\u0644 1_month \u2192 1-month \u0644\u0644\u0645\u0642\u0627\u0631\u0646\u0629 \u0645\u0639 freePlans\r\nconst planBaseHyphen = planBase.replace(\/_\/g, '-');\r\nconst isFree = promoActive && freePlans.includes(planBaseHyphen);\r\n\r\n\/\/ \u062a\u062d\u062f\u064a\u062f plan_type \u0627\u0644\u0646\u0647\u0627\u0626\u064a\r\nlet planType;\r\nif (!hasPlayer) {\r\n    planType = planBase;                  \/\/ 1_month \u0628\u062f\u0648\u0646 player\r\n} else if (isFree) {\r\n    planType = planBase;                  \/\/ 1_month + player \u0645\u062c\u0627\u0646\u064a = \u0646\u0641\u0633 QR\r\n} else {\r\n    planType = planBase + '_player_paid'; \/\/ 1_month_player_paid \u0645\u062f\u0641\u0648\u0639\r\n}\r\n\r\nconsole.log('\ud83c\udf81 Is Free Player:', isFree);\r\nconsole.log('\ud83c\udff7\ufe0f Final Plan Type:', planType);\r\n\r\n            console.log('\ud83d\udce6 Plan ID:', planId);\r\n            console.log('\ud83c\udfae Has Player:', hasPlayer);\r\n            console.log('\ud83c\udff7\ufe0f Plan Type:', planType);\r\n\r\n            \/\/ \u2705 \u0623\u0648\u0644\u0627\u064b: \u062c\u0631\u0628 Promo QR (\u0625\u0630\u0627 \u0643\u0627\u0646 \u0647\u0646\u0627\u0643 \u062e\u0635\u0645)\r\n            if (discountApplied > 0) {\r\n                console.log('\ud83c\udf81 Trying Promo QR...');\r\n                const promoUrl = `${AJAX_URL}?action=get_promo_qr_for_amount&final_amount=${roundedTotal}&currency=${currency}&plan_type=${planType}`;\r\n                console.log('\ud83d\udce1 Promo URL:', promoUrl);\r\n\r\n                const promoRes  = await fetch(promoUrl);\r\n                const promoData = await promoRes.json();\r\n                console.log('\ud83d\udce6 Promo Response:', promoData);\r\n\r\n                if (promoData.success && promoData.data?.qr_code_url) {\r\n                    console.log('\u2705 PROMO QR FOUND!');\r\n                    showQR(promoData.data.qr_code_url);\r\n                    console.log('\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501');\r\n                    return;\r\n                }\r\n                console.log('\u26a0\ufe0f Promo QR not found, trying regular...');\r\n            }\r\n\r\n            \/\/ \u2705 \u062b\u0627\u0646\u064a\u0627\u064b: \u062c\u0631\u0628 Regular QR \u0628\u0640 plan_type\r\n            console.log('\ud83d\udccb Trying Regular QR with plan_type:', planType);\r\n            const regularUrl  = `${AJAX_URL}?action=get_binance_qr&amount=${roundedTotal}&currency=${currency}&plan_type=${planType}`;\r\n            console.log('\ud83d\udce1 Regular URL:', regularUrl);\r\n\r\n            const regularRes  = await fetch(regularUrl);\r\n            const regularData = await regularRes.json();\r\n            console.log('\ud83d\udce6 Regular Response:', regularData);\r\n\r\n            if (regularData.success && regularData.data?.qr_code_url) {\r\n                console.log('\u2705 REGULAR QR FOUND!');\r\n                showQR(regularData.data.qr_code_url);\r\n                console.log('\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501');\r\n                return;\r\n            }\r\n\r\n            \/\/ \u2705 Fallback: \u062c\u0631\u0628 \u0628\u062f\u0648\u0646 plan_type (\u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0642\u062f\u064a\u0645)\r\n            console.log('\u26a0\ufe0f Trying fallback (old system)...');\r\n            const fallbackUrl  = `${AJAX_URL}?action=get_binance_qr&amount=${roundedTotal}&currency=${currency}`;\r\n            const fallbackRes  = await fetch(fallbackUrl);\r\n            const fallbackData = await fallbackRes.json();\r\n\r\n            if (fallbackData.success && fallbackData.data?.qr_code_url) {\r\n                console.log('\u2705 FALLBACK QR FOUND!');\r\n                showQR(fallbackData.data.qr_code_url);\r\n            } else {\r\n                console.error('\u274c NO QR AVAILABLE');\r\n                showError(`QR not available for ${symbol}${roundedTotal}`);\r\n            }\r\n\r\n            console.log('\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501');\r\n\r\n        } catch (error) {\r\n            console.error('\u274c Error loading QR:', error);\r\n            showError('Failed to load QR code');\r\n        }\r\n    }\r\n    \r\n    function showQR(url) {\r\n        document.getElementById('qr-loading').style.display = 'none';\r\n        const img = document.getElementById('qr-image');\r\n        img.src = url;\r\n        img.style.display = 'block';\r\n        document.getElementById('btn-confirm').disabled = false;\r\n    }\r\n    \r\n    function showError(msg) {\r\n        document.getElementById('qr-loading').style.display = 'none';\r\n        document.getElementById('qr-error').innerHTML = msg + '<br><a href=\"https:\/\/firoiptv.com\/checkout\/\" style=\"color: #6900ec; text-decoration: underline;\">Back to Checkout<\/a>';\r\n        document.getElementById('qr-error').style.display = 'block';\r\n    }\r\n    \r\n    function startPolling() {\r\n        pollingInterval = setInterval(() => {\r\n            fetch(`${AJAX_URL}?action=check_order_status&order_id=${orderId}`)\r\n                .then(r => r.json())\r\n                .then(result => {\r\n                    if (result.success && result.data.status === 'completed') {\r\n                        stopPolling();\r\n                        clearInterval(timerInterval);\r\n                        showAlert('\u2705 Payment confirmed!', 'success');\r\n                        setTimeout(() => {\r\n                            window.location.href = `https:\/\/firoiptv.com\/payment-success\/?order_id=${orderId}`;\r\n                        }, 1000);\r\n                    }\r\n                })\r\n                .catch(console.error);\r\n        }, 3000);\r\n    }\r\n    \r\n    function stopPolling() {\r\n        if (pollingInterval) clearInterval(pollingInterval);\r\n    }\r\n    \r\n    window.confirmPayment = function() {\r\n        if (paymentConfirmed) return;\r\n        \r\n        const btn  = document.getElementById('btn-confirm');\r\n        const icon = document.getElementById('btn-icon');\r\n        const text = document.getElementById('btn-text');\r\n        \r\n        btn.disabled = true;\r\n        btn.classList.add('processing');\r\n        icon.textContent = '\u23f3';\r\n        text.textContent = 'Processing...';\r\n        \r\n        const formData = new FormData();\r\n        formData.append('action', 'claim_binance_payment');\r\n        formData.append('order_id', orderId);\r\n        \r\n        fetch(AJAX_URL, { method: 'POST', body: formData })\r\n        .then(r => r.json())\r\n        .then(result => {\r\n            if (result.success) {\r\n                paymentConfirmed = true;\r\n                btn.classList.remove('processing');\r\n                btn.classList.add('confirmed');\r\n                icon.textContent = '\u2713';\r\n                text.textContent = 'Waiting for Confirmation...';\r\n                showAlert('\u2705 Admin notified!', 'success');\r\n            } else {\r\n                resetButton();\r\n                showAlert('\u274c Failed. Please try again.', 'warning');\r\n            }\r\n        })\r\n        .catch(() => {\r\n            resetButton();\r\n            showAlert('\u274c Connection error', 'warning');\r\n        });\r\n    };\r\n    \r\n    function resetButton() {\r\n        const btn = document.getElementById('btn-confirm');\r\n        btn.disabled = false;\r\n        btn.classList.remove('processing');\r\n        document.getElementById('btn-icon').textContent = '\u2713';\r\n        document.getElementById('btn-text').textContent = 'I Completed The Payment';\r\n    }\r\n    \r\n    function showAlert(msg, type) {\r\n        const alert = document.getElementById('alert');\r\n        alert.className = 'binance-alert alert-' + type + ' show';\r\n        alert.textContent = msg;\r\n    }\r\n    \r\n    window.addEventListener('beforeunload', () => {\r\n        stopPolling();\r\n        clearInterval(timerInterval);\r\n    });\r\n    \r\n})();\r\n<\/script>\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>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Binance Pay Secure Crypto Payment \u23f1\ufe0f 20:00 Order ID &#8211; Plan &#8211; Email &#8211; \ud83c\udff7\ufe0f Discount -\u20ac0.00 Total Amount \u20ac0.00 \ud83d\udcf1 Scan [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3145","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/firoiptv.com\/uk\/wp-json\/wp\/v2\/pages\/3145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/firoiptv.com\/uk\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/firoiptv.com\/uk\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/firoiptv.com\/uk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/firoiptv.com\/uk\/wp-json\/wp\/v2\/comments?post=3145"}],"version-history":[{"count":52,"href":"https:\/\/firoiptv.com\/uk\/wp-json\/wp\/v2\/pages\/3145\/revisions"}],"predecessor-version":[{"id":4645,"href":"https:\/\/firoiptv.com\/uk\/wp-json\/wp\/v2\/pages\/3145\/revisions\/4645"}],"wp:attachment":[{"href":"https:\/\/firoiptv.com\/uk\/wp-json\/wp\/v2\/media?parent=3145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}