{"id":19359,"date":"2026-07-12T10:49:42","date_gmt":"2026-07-12T14:49:42","guid":{"rendered":"http:\/\/www.fantasymojo.com\/?page_id=19359"},"modified":"2026-07-12T10:49:42","modified_gmt":"2026-07-12T14:49:42","slug":"subscriber-access-v2","status":"publish","type":"page","link":"https:\/\/www.fantasymojo.com\/index.php\/subscriber-access-v2\/","title":{"rendered":"Subscriber Access"},"content":{"rendered":"<h4 style=\"text-align: center; font-weight: bold;\"><span style=\"color: #ff0000;\"><strong>Yearly Supporter<\/strong><\/span><\/h4>\n<div align=\"center\"><div class=\"swpm-payment-button\">    <div class=\"swpm-button-wrapper swpm-paypal-buy-now-button-wrapper\">\r\n\r\n    <!-- PayPal button container where the button will be rendered -->\r\n    <div id=\"swpm_paypal_button_0\" style=\"width: 300px;\"><\/div>\r\n    <!-- Some additiona hidden input fields -->\r\n    <input type=\"hidden\" id=\"swpm_paypal_button_0-custom-field\" name=\"custom\" value=\"subsc_ref=2&amp;user_ip=216.73.217.81\">\r\n\r\n    <script type=\"text\/javascript\">\r\n    jQuery( function( $ ) {\r\n        $( document ).on( \"swpm_paypal_sdk_loaded\", function() { \r\n            \/\/Anything that goes here will only be executed after the PayPal SDK is loaded.\r\n            console.log('PayPal JS SDK is loaded.');\r\n\r\n            var js_currency_code = 'USD';\r\n            var js_payment_amount = 59.95;\r\n            var js_quantity = 1;\r\n            var js_digital_goods_enabled = 1;\r\n\r\n            const paypalButtonsComponent = paypal.Buttons({\r\n                \/\/ optional styling for buttons\r\n                \/\/ https:\/\/developer.paypal.com\/docs\/checkout\/standard\/customize\/buttons-style-guide\/\r\n                style: {\r\n                    color: 'blue',\r\n                    shape: 'rect',\r\n                    height: 35,\r\n                    label: 'buynow',\r\n                    layout: 'vertical',\r\n                },\r\n\r\n                \/\/ Setup the transaction.\r\n                async createOrder() {\r\n                    \/\/ Create the order in PayPal using the PayPal API.\r\n                    \/\/ https:\/\/developer.paypal.com\/docs\/checkout\/standard\/integrate\/\r\n                    \/\/ The server-side Create Order API is used to generate the Order. Then the Order-ID is returned.                    \r\n                    console.log('Setting up the AJAX request for create-order call.');\r\n                    let pp_bn_data = {};\r\n                    pp_bn_data.button_id = '19358';\r\n                    pp_bn_data.on_page_button_id = 'swpm_paypal_button_0';\r\n                    pp_bn_data.item_name = 'Seasonal v2';\r\n                    let post_data = 'action=swpm_pp_create_order&data=' + JSON.stringify(pp_bn_data) + '&_wpnonce=14b105c04f';\r\n                    try {\r\n                        \/\/ Using fetch for AJAX request. This is supported in all modern browsers.\r\n                        const response = await fetch(\"https:\/\/www.fantasymojo.com\/wp-admin\/admin-ajax.php\", {\r\n                            method: \"post\",\r\n                            headers: {\r\n                                'Content-Type': 'application\/x-www-form-urlencoded'\r\n                            },\r\n                            body: post_data\r\n                        });\r\n\r\n                        const response_data = await response.json();\r\n\r\n                        if (response_data.order_id) {\r\n                            console.log('Create-order API call to PayPal completed successfully.');\r\n                            \/\/If we need to see the order details, uncomment the following line.\r\n                            \/\/const order_data = response_data.order_data;\r\n                            \/\/console.log('Order data: ' + JSON.stringify(order_data));\r\n                            return response_data.order_id;\r\n                        } else {\r\n                            const error_message = JSON.stringify(response_data);\r\n                            console.error('Error occurred during the create-order API call to PayPal. ' + error_message);\r\n                            throw new Error(error_message);\r\n                        }\r\n                    } catch (error) {\r\n                        console.error(error);\r\n                        alert('Could not initiate PayPal Checkout...\\n\\n' + JSON.stringify(error));\r\n                    }\r\n                },\r\n    \r\n                \/\/ handle the onApprove event\r\n                async onApprove(data, actions) {\r\n                    console.log('Successfully created a transaction.');\r\n\r\n                    \/\/Show the spinner while we process this transaction.\r\n                    var pp_button_container = jQuery('#swpm_paypal_button_0');\r\n                    var pp_button_spinner_conainer = pp_button_container.siblings('.swpm-pp-button-spinner-container');\r\n                    pp_button_container.hide();\/\/Hide the buttons\r\n                    pp_button_spinner_conainer.css('display', 'inline-block');\/\/Show the spinner.\r\n\r\n                    \/\/ Capture the order in PayPal using the PayPal API.\r\n                    \/\/ https:\/\/developer.paypal.com\/docs\/checkout\/standard\/integrate\/\r\n                    \/\/ The server-side capture-order API is used. Then the Capture-ID is returned.\r\n                    console.log('Setting up the AJAX request for capture-order call.');\r\n                    let pp_bn_data = {};\r\n                    pp_bn_data.order_id = data.orderID;\r\n                    pp_bn_data.button_id = '19358';\r\n                    pp_bn_data.on_page_button_id = 'swpm_paypal_button_0';\r\n                    pp_bn_data.item_name = 'Seasonal v2';\r\n                    \/\/Add custom_field data. It is important to encode the custom_field data so it doesn't mess up the data with & character.\r\n                    const custom_data = document.getElementById('swpm_paypal_button_0-custom-field').value;\r\n                    pp_bn_data.custom_field = encodeURIComponent(custom_data);\r\n                    let post_data = 'action=swpm_pp_capture_order&data=' + JSON.stringify(pp_bn_data) + '&_wpnonce=14b105c04f';\r\n                    try {\r\n                        const response = await fetch(\"https:\/\/www.fantasymojo.com\/wp-admin\/admin-ajax.php\", {\r\n                            method: \"post\",\r\n                            headers: {\r\n                                'Content-Type': 'application\/x-www-form-urlencoded'\r\n                            },\r\n                            body: post_data\r\n                        });\r\n\r\n                        const response_data = await response.json();\r\n                        const txn_data = response_data.txn_data;\r\n                        const error_detail = txn_data?.details?.[0];\r\n                        const error_msg = response_data.error_msg;\/\/Our custom error message.\r\n                        \/\/ Three cases to handle:\r\n                        \/\/ (1) Recoverable INSTRUMENT_DECLINED -> call actions.restart()\r\n                        \/\/ (2) Other non-recoverable errors -> Show a failure message\r\n                        \/\/ (3) Successful transaction -> Show confirmation or thank you message\r\n\r\n                        if (response_data.capture_id) {\r\n                            \/\/ Successful transaction -> Show confirmation or thank you message\r\n                            console.log('Capture-order API call to PayPal completed successfully.');\r\n\r\n                            \/\/Redirect to the Thank you page URL if it is set.\r\n                            return_url = 'https:\/\/www.fantasymojo.com\/index.php\/thank-you-v2\/';\r\n                            if( return_url ){\r\n                                \/\/redirect to the Thank you page URL.\r\n                                console.log('Redirecting to the Thank you page URL: ' + return_url);\r\n                                window.location.href = return_url;\r\n                                return;\r\n                            } else {\r\n                                \/\/No return URL is set. Just show a success message.\r\n                                txn_success_msg = 'Transaction completed successfully!';\r\n                                alert(txn_success_msg);\r\n                            }\r\n\r\n                        } else if (error_detail?.issue === \"INSTRUMENT_DECLINED\") {\r\n                            \/\/ Recoverable INSTRUMENT_DECLINED -> call actions.restart()\r\n                            console.log('Recoverable INSTRUMENT_DECLINED error. Calling actions.restart()');\r\n                            return actions.restart();\r\n                        } else if ( error_msg && error_msg.trim() !== '' ) {\r\n                            \/\/Our custom error message from the server.\r\n                            console.error('Error occurred during PayPal checkout process.');\r\n                            console.error( error_msg );\r\n                            alert( error_msg );\r\n                        } else {\r\n                            \/\/ Other non-recoverable errors -> Show a failure message\r\n                            console.error('Non-recoverable error occurred during PayPal checkout process.');\r\n                            console.error( error_detail );\r\n                            \/\/alert('Error occurred with the transaction. Enable debug logging to get more details.\\n\\n' + JSON.stringify(error_detail));\r\n                        }\r\n\r\n                        \/\/Return the button and the spinner back to their orignal display state.\r\n                        pp_button_container.show();\/\/Show the buttons\r\n                        pp_button_spinner_conainer.hide();\/\/Hide the spinner.\r\n\r\n                    } catch (error) {\r\n                        console.error(error);\r\n                        alert('PayPal returned an error! Transaction could not be processed. Enable the debug logging feature to get more details...\\n\\n' + JSON.stringify(error));\r\n                    }\r\n                },\r\n    \r\n                \/\/ handle unrecoverable errors\r\n                onError: function(err) {\r\n                    console.error('An error prevented the user from checking out with PayPal. ' + JSON.stringify(err));\r\n                    alert( 'Error occurred during PayPal checkout process.\\n\\n' + JSON.stringify(err) );\r\n                },\r\n\r\n                \/\/ handle onCancel event\r\n                onCancel: function(data) {\r\n                    console.log('Checkout operation cancelled by the customer.');\r\n                    \/\/Return to the parent page which the button does by default.\r\n                }\r\n            });\r\n    \r\n            paypalButtonsComponent\r\n                .render('#swpm_paypal_button_0')\r\n                .catch((err) => {\r\n                    console.error('PayPal Buttons failed to render');\r\n                });\r\n\r\n            });\r\n        });\r\n    <\/script>\r\n    <style>\r\n        @keyframes swpm-pp-button-spinner {\r\n            to {transform: rotate(360deg);}\r\n        }\r\n        .swpm-pp-button-spinner {\r\n            margin: 0 auto;\r\n            text-indent: -9999px;\r\n            vertical-align: middle;\r\n            box-sizing: border-box;\r\n            position: relative;\r\n            width: 60px;\r\n            height: 60px;\r\n            border-radius: 50%;\r\n            border: 5px solid #ccc;\r\n            border-top-color: #0070ba;\r\n            animation: swpm-pp-button-spinner .6s linear infinite;\r\n        }\r\n        .swpm-pp-button-spinner-container {\r\n            width: 100%;\r\n            text-align: center;\r\n            margin-top:10px;\r\n            display: none;\r\n        }\r\n    <\/style>\r\n    <div class=\"swpm-pp-button-spinner-container\">\r\n        <div class=\"swpm-pp-button-spinner\"><\/div>\r\n    <\/div>\r\n    <\/div><!-- end of .swpm-button-wrapper -->\r\n    <\/div><\/div>\n<p style=\"text-align: center; padding-left: 30px;\">\u00a0You get access to premium content\u00a0for 1 year <em><strong>Price: <span style=\"color: #ff0000;\">$59.95\u00a0<\/span><\/strong><\/em><\/p>\n<h4 style=\"text-align: center; font-weight: bold;\"><span style=\"color: #ff0000;\"><strong><a href='https:\/\/www.fantasymojo.com\/index.php\/virtual-site-tour\/' target=\"_blank\" rel=\"noopener\">CLICK HERE TO TAKE THE TOUR<\/a><\/strong><\/span><\/h4>\n<p style=\"text-align: center;\">This includes:<\/p>\n<p><\/p>\n<div align=center>Access to the FFPC ADP reports (broken out by contest type and refreshed daily).  We did FFPC ADP first in the industry, and believe we still do it the best. This is the ADP trusted by many of the top high stakes players in the world. We won&#8217;t name names, but if you&#8217;ve seen someone cash a 6 figure check in high stakes fantasy, it&#8217;s likely they&#8217;re a subscriber of ours.  And by the way, many of the other fantasy sites that offer FFPC ADP are subscribers of ours too. (What better way to check that your numbers are coming out right than to check them against The Bible of FFPC ADP?)  We&#8217;re not just data monkeys spitting out numbers. We&#8217;ve been competing in high stakes fantasy football since 2002 where we competed in the World Championship of Fantasy Football (WCOFF) and have been playing high stakes ever since. We are in tune with what the data needs of high stakes players are because we ARE high stakes players. We&#8217;ve innovated data analyses that no one else has ever thought of. (Check out our in season weekly waiver wire breakdowns. Who does this? No one.) <\/p>\n<div>\n<\/p>\n<div align=center>Access to all the color coded draft boards of FFPC best ball, satellite, terminator, and dynasty leagues. Again, these are all updated every morning. It&#8217;s a common practice for players to wake up, bring up the boards from last night, and check in on what happened in drafts the night before. <\/p>\n<div>\n<\/p>\n<div align=center>Access to all the historical FFPC data from previous years. No one else has this, not even the FFPC. WE ARE THE ARCHIVE.<\/p>\n<div>\n<\/p>\n<div align=center>An index of virtually every team that won an FFPC over the past 2 years.  Every league listed with the team(s) that won a prize. AND, you can link directly to the draft board and rosters of those winning teams. How did they do it? What was their draft strategy?<\/p>\n<div>\n<p><\/p>\n<div align=center>Access to your own personal FFPC Player Shares Report. (Accessible via the Login Page using the &#8220;My 2022 Player Drafted Share Report&#8221; link).  The page lists the total number of leagues you drafted by contest (Main Event, Footballguys, Best Ball, etc) and then lists all the players you drafted within those leagues with a percentage of leagues that a player was drafted in.  It&#8217;s a favorite feature of subscribers. <\/p>\n<div><\/p>\n<p><a href=\"https:\/\/s3.us-east-2.amazonaws.com\/fantasymojo\/ffpc_archives\/2018\/userdraftshares\/fantasymojo-ownership.html\" tgt=blank>HERE IS AN EXAMPLE<\/a><br \/>\n&nbsp;<\/p>\n<p style=\"text-align: center; padding-left: 30px;\">Note: After paying via PayPal, a follow up email with a link to complete registration is sent to THE EMAIL ADDRESS ASSOCIATED WITH YOUR PAYPAL ACCOUNT. If you no longer use that email account to primarily receive emails, check that one first. If you do not receive the follow up email, send us an email at fantasymojodotcom@gmail.com to let us know what your current email address is and we will send you the registration link directly.<\/p>\n<p style=\"text-align: center;\">Note that if you have a GMAIL account, the follow up email often gets sent to the &#8220;SPAM&#8221; folder, so look for it there if it is not delivered to your INBOX<\/p>\n<hr \/>\n<p><!--\n\n\n<h4 style=\"text-align: center;\"><span style=\"color: #ff0000;\"><strong>Lifetime Supporter<\/strong><\/span><\/h4>\n\n\n\n\n<p style=\"text-align: center; padding-left: 30px;\">Your access to league content does not\u00a0expire\u00a0- <em><strong>Price: <span style=\"color: #ff0000;\">$24.95\u00a0 \u00a0<\/span><\/strong><\/em><\/p>\n\n\n\n\n\n<div align=\"center\">[swpm_payment_button id=77]<\/div>\n\n\n&nbsp;\n\n--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yearly Supporter \u00a0You get access to premium content\u00a0for 1 year Price: $59.95\u00a0 CLICK HERE TO TAKE THE TOUR This includes: Access to the FFPC ADP reports (broken out by contest type and refreshed daily). We did FFPC ADP first in the industry, and believe we<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.fantasymojo.com\/index.php\/wp-json\/wp\/v2\/pages\/19359"}],"collection":[{"href":"https:\/\/www.fantasymojo.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fantasymojo.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fantasymojo.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fantasymojo.com\/index.php\/wp-json\/wp\/v2\/comments?post=19359"}],"version-history":[{"count":2,"href":"https:\/\/www.fantasymojo.com\/index.php\/wp-json\/wp\/v2\/pages\/19359\/revisions"}],"predecessor-version":[{"id":19363,"href":"https:\/\/www.fantasymojo.com\/index.php\/wp-json\/wp\/v2\/pages\/19359\/revisions\/19363"}],"wp:attachment":[{"href":"https:\/\/www.fantasymojo.com\/index.php\/wp-json\/wp\/v2\/media?parent=19359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}