Advertisement
kkarpieszuk

wp sprzedawca, wzór wypełnienia

Mar 31st, 2014
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 14.45 KB | None | 0 0
  1. <?php
  2. /*
  3. Plugin Name: WP Sprzedawca
  4. Version: 0.3
  5. Description: Plugin pozwala uzytkownikowi pobierac ze strony plik lub wyswietlic zawartosc wpisu po podaniu prawidlowego kodu otrzymanego smsem premium lub po wykonaniu płatności elektronicznej. Obsluge platnosci realizuje serwis <a href="http://www.dotpay.pl">Dotpay.pl</a>
  6. Author: Konrad Karpieszuk
  7. Author URI: http://www.muzungu.pl/
  8. Plugin URI: http://www.muzungu.pl/moje-pluginy-do-wordpressa/
  9. */
  10.  
  11. require_once('wp-sprzedawca-admin.php');
  12.  
  13. // include_once('test.php');
  14.  
  15. global $wpdb;
  16.  
  17. /* KONFIGURACJA */
  18.  
  19. /* JAK SIĘ MA NAZYWAĆ NASZ PLIK DO POBRANIA?
  20.  * Wpisz poniżej nazwę jaka ma zostać nadana dla pliku podczas wysyłynia
  21.  * go do użytkownika. Nie musi być to ta sama nazwa, pod jaką zapisałeś
  22.  * plik na serwerze (i najlepiej aby była właśnie inna, co nieco utrudni
  23.  * próby obejścia mechanizmu płatniczego
  24.  */
  25. $file_send = "wp-sprzedawca.zip";
  26.  
  27. /* JAK SIĘ NAZYWA PLIK KTÓRY CHCESZ WYSYŁAĆ?
  28.  * Jaką nazwę ma plik, który umieściłeś w katalogu swojego pluginu (jeśli
  29.  * jeszcze tego nie zrobiłeś, zrób to teraz) i chcesz wysyłać do użytkownika
  30.  * pod nazwą podaną w punkcie powyżej?
  31.  */
  32. $file_taken = "tajnyplik.zip";
  33.  
  34. /* JAKI JEST TWÓJ ID W SERWISIE DOTPAY?
  35.  * Podaj poniżej swój numer ID w serwisie dotpay.pl. Możesz go sprawdzić
  36.  * po zalogowaniu do serwisu. Nie zmieniaj tego tutaj!
  37.  * Jeśli chcesz zmienić ID, przejdź do panelu administracyjnego > WP Sprzedawca
  38.  * > Ustawienia Dotpay
  39.  */
  40. $dotpay_id = get_option('wp_sprz_dotpay_id');
  41.  
  42. /* W JAKI SPOSÓB KUPUJĄCY PŁACI ZA PLIK?
  43.  * Dotyczy ustawień płatności smsem. Raczej tego nie zmieniaj.
  44.  * Pole te definiuje usługę jaką wykorzystaliśmy na stronie dotpay.pl
  45.  * Wartość "sms" oznacza "Kod generowany i dopisywany do listy kodów. Sprawdzanie
  46.  * kodów w Dotpay". Nie zmieniaj tej wartości. Wstawiam ją tutaj dlatego,
  47.  * że w przyszłości dopiszę obsługę innych kanałów płatności ;)
  48.  */
  49. $dotpay_type = "sms";
  50.  
  51. /* JAKI JEST IDENTYFIKATOR USŁUGI?
  52.  * Wpisz tutaj, to coś, co user wysyła po kropce w treści sms. Czyli np jeśli
  53.  * musi wysłać sms o treści "AP.DOSTEP", wpisz tutaj "DOSTEP"
  54.  */
  55. $dotpay_code = "WPSPRZED";
  56.  
  57. /* JAKI JEST NUMER POD KTÓRY TREZBA WYSŁAĆ SMS?
  58.  */
  59. $dotpay_phone = "92578";
  60.  
  61. /* JAKI JEST KOSZT SMSA?
  62.  * Proszę podać koszt smsa z wliczonym podatkiem
  63.  */
  64. $dotpay_cost = "30.75";
  65.  
  66. /* CZY KOD MA BYĆ OD RAZU KASOWANY Z LISTY KODÓW?
  67.  * wartość 1 - tak, skasuj kod od razu po jego sprawdzeniu
  68.  * wartość 0 - nie, nie kasuj
  69.  */
  70. $dotpay_del = 0;
  71.  
  72. /* JAKA JEST WYSOKOŚĆ E-PRZELEWU?
  73.  * Określ ile klient będzie musiał zapłacić za plik, jeśli zdecyduje się
  74.  * na formę zapłaty przelewem (karta kredytowa, mtransfer itp)
  75.  * Kwota nie może być mniejsza niż 5 złotych.
  76.  */
  77. $eprzelew_cost = "15.00";
  78.  
  79. /* JAKI MA BYĆ OPIS EPRZELEWU?
  80.  * Wpisz tutaj tytuł przelewu jaki użytkownikowi ma się wyświetlić na stronie
  81.  * Dotpay nad polami wyboru formy płatności. Zamist spacji wstaw %20
  82.  */
  83. $eprzelew_tytul = "Zakup%20pliku";
  84.  
  85. /* CO MA BYĆ NA GUZIKU PO PRZELANIU KASY?
  86.  * Na koniec zapłaty, gdy się powiedzie Dotpay wyświetla guzik
  87.  * przekierowujący do naszego serwisu. Co powinno być na nim napisane?
  88.  * Wskazówka: jako, że od razu po przekierowaniu zostanie rozpoczęte wysyłanie
  89.  * pliku, warto aby treść guzika była czymś w rodzaju "Pobierz plik", "Pobierz ebook"
  90.  * itp
  91.  */
  92. $eprzelew_guzik = "Pobierz%20plik";
  93.  
  94. /* KONFIGURACJA PŁATNEGO DOSTĘPU DO TREŚCI WPISÓW
  95.  *
  96.  * SMS
  97.  *
  98.  * JAKI JEST IDENTYFIKATOR USŁUGI?
  99.  * Co ma się znaleźć w treści smsa po "AP."?
  100.  */
  101. $platnatresc_sms_code = "MUZU";
  102.  
  103. /* JAKI JEST NUMER TELEFONU?
  104.  * ...pod który trzeba wysłać sms?
  105.  */
  106. $platnatresc_sms_nr = "76068";
  107.  
  108. /* JAKA JEST CENA SMSA?
  109.  * Z wliczonym podatkiem, grosze po kropce
  110.  */
  111. $platnatresc_sms_cost = "7.32";
  112.  
  113. /* PŁATNA TREŚĆ ZA PRZELEW
  114.  *
  115.  * JAKA JEST WYSOKOŚĆ E-PRZELEWU?
  116.  * Określ ile klient będzie musiał zapłacić za dostęp do treści, jeśli
  117.  * zdecyduje się na formę zapłaty przelewem (karta kredytowa, mtransfer itp)
  118.  * Kwota nie może być mniejsza niż 5 złotych. Grosze po kropce.
  119.  */
  120. $platnatresc_eprzelew_cost = "5.00";
  121.  
  122. /* JAKI MA BYĆ OPIS EPRZELEWU?
  123.  * Wpisz tutaj tytuł przelewu jaki użytkownikowi ma się wyświetlić na stronie
  124.  * Dotpay nad polami wyboru formy płatności. Zamist spacji wstaw %20
  125.  */
  126. $platnatresc_eprzelew_tytul = "Dostep%20do%20tresci";
  127.  
  128. /* CO MA BYĆ NA GUZIKU PO PRZELANIU KASY?
  129.  * Na koniec zapłaty, gdy się powiedzie Dotpay wyświetla guzik
  130.  * przekierowujący do naszego serwisu. Co powinno być na nim napisane?
  131.  */
  132. $platnatresc_eprzelew_guzik = "Powrot%20do%20serwisu";
  133.  
  134. /* ILE CZASU MA TRWAĆ DOSTĘP?
  135.  * Określ w sekundach ile czasu osoba ma prawo przeglądać nasze wpisy
  136.  * bez ponownego podania kodu. Możesz stosować operator mnożenia. Czyli
  137.  * na przykład jeśli ktoś ma móc czytać nasze wpisy przez tydzień, możesz
  138.  * zapisac "60*60*24*7" (sekundy*minuty*godziny*dni). Bez znaków cudzysłowia
  139.  */
  140. $platnatresc_waznosc = 60*60*24*7;
  141.  
  142. /* ILE BĘDZIE TRWAŁ DOSTĘP - SŁOWNIE
  143.  * Wpisz słownie ile będzie trwał wykupiony dostęp. Wpis poniżej powinien
  144.  * być dokończeniem zdania: "płatny dostęp będzie trwał..."
  145.  */
  146. $platnatresc_waznosc_slownie = "7 dni";
  147.  
  148. /* KONIEC KONFIGURACJI */
  149.  
  150. $sprzedawca_table_name = $wpdb->prefix . "sprzedawca";
  151.  
  152.  
  153. function sprzedawca_install () {
  154.     global $wpdb;
  155.  
  156. $sprzedawca_table_name = $wpdb->prefix . "sprzedawca";
  157. $sprzedawca_db_version = "1.4";
  158.    
  159.     if ($wpdb->get_var("SHOW TABLES LIKE '".$sprzedawca_table_name."'") != $sprzedawca_table_name) {
  160.         $zapytanko = "CREATE TABLE " . $sprzedawca_table_name . " (
  161.         id mediumint(9) NOT NULL AUTO_INCREMENT,
  162.         control varchar(32) NOT NULL,
  163.         status varchar(20) DEFAULT 'nowa',
  164.         PRIMARY KEY  (id)
  165.         );";
  166.        
  167.         require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
  168.         dbDelta($zapytanko);
  169.        
  170.         add_option("sprzedawca_db_version", $sprzedawca_db_version);
  171.        
  172.         }
  173.        
  174.     $installed_ver = get_option( "sprzedawca_db_version" );
  175.     if( $installed_ver != $sprzedawca_db_version ) {
  176.         $zapytanko = "CREATE TABLE " . $sprzedawca_table_name . " (
  177.         id mediumint(9) NOT NULL AUTO_INCREMENT,
  178.         control varchar(32) NOT NULL,
  179.         status varchar(20) DEFAULT 'nowa',
  180.         PRIMARY KEY  (id)
  181.         );";
  182.        
  183.         require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
  184.         dbDelta($zapytanko);
  185.        
  186.         update_option("sprzedawca_db_version", $sprzedawca_db_version);
  187.        
  188.         }
  189.    
  190.     }
  191.  
  192. function pokaz_pobieranie () {
  193.     global $dotpay_code;
  194.     global $dotpay_phone;
  195.     global $dotpay_cost;
  196.     return '
  197.         <form method="post" id="dotpay-sms-form">
  198.         Aby pobrać plik, proszę wysłać SMS o treści <b>AP.'.$dotpay_code.'</b>
  199.         pod numer <b>'.$dotpay_phone.'</b> (koszt jednego smsa:
  200.         '.$dotpay_cost.' PLN z VAT), a następnie w pole poniżej
  201.         musisz wprowadzić kod otrzymany smsem zwrotnym: <br />
  202.         <input type="text" name="checksmscode" size=10 /><br />
  203.         <input type="submit" value="Zatwierdź i pobierz" /><br />
  204.         <small>Usługa płacenia SMSem dostępna jest w sieciach Era GSM, Plus GSM,
  205.         Orange i Play i obsługiwana jest przez Dotpay. <br />
  206.         <a href="http://www.dotpay.pl/index.php?content=113&newlang=pl">Regulamin</a> |
  207.         <a href="http://www.dotpay.pl/reklamacje">Składanie reklamacji</a> |
  208.         <a href="'.get_bloginfo('url').'">Kontakt z właścicielem strony</a>
  209.         </small>
  210.         </form>
  211.         ';
  212. }
  213.  
  214. function pokaz_eprzelew () {
  215.     global $eprzelew_cost;
  216.    
  217.     return '
  218.     <form method="post" id="dotpay-eprzelew-form">
  219.     Zapłać kartą lub eprzelewem. W tej opcji zakup będzie Cię kosztował '.$eprzelew_cost.' złotych (z podatkiem VAT)<br />
  220.     <input type="submit" name="zrobprzelew" value="Wykonaj przelew" />
  221.     </form>
  222.     ';
  223.    
  224.     }
  225.    
  226. function slij_plik() {
  227.     global $file_send;
  228.     global $file_taken;
  229.    
  230.     header('Content-Disposition: attachment; filename='.$file_send);
  231.     header('Content-Type: application/x-unknown');
  232.         if ($f_handler = fopen("".bloginfo('url')."wp-content/plugins/wp-sprzedawca/".$file_taken."", "rt")) {
  233.             flock($f_handler, 1);
  234.             while (!feof($f_handler))
  235.                 {
  236.                 echo fread($f_handler, 512 * 1024);
  237.                 }
  238.             flock($f_handler, 3);
  239.             fclose($f_handler);
  240.             }
  241.         exit();
  242.     }
  243.    
  244. function udostepnij_tresc() {
  245.     global $platnatresc_waznosc;
  246.     setcookie('sprzedawca-platnatresc', 'wykupiony', time()+$platnatresc_waznosc, "/", str_replace('http://www','',get_bloginfo('url')));
  247.     header( 'refresh: 0; url='.$_SERVER['REQUEST_URI'].'' );
  248.     // print "jestem już w funkcji udostepnij plik...";
  249.     exit;
  250.     }
  251.  
  252. function sprawdz_kod () {
  253.     // setcookie('sprzedawca-platnatresc', '', -100, "/", str_replace('http://www','',get_bloginfo('url')));
  254.     // print_r($_COOKIE);
  255.     global $dotpay_id;
  256.     global $dotpay_type;
  257.     global $dotpay_code, $platnatresc_sms_code;
  258.     global $dotpay_del;
  259.     global $wpdb;
  260.     global $sprzedawca_table_name;
  261.     global $eprzelew_cost;
  262.     global $eprzelew_tytul, $eprzelew_guzik;
  263.    
  264.     // sprawdzamy czy człowiek wpisał kod sms
  265.     if ($_POST['checksmscode'] OR $_POST['checksmscodezatresc']) {
  266.         if ($_POST['checksmscode']) {
  267.         $checksmscode = $_POST['checksmscode'];
  268.         $usluga = "plik";
  269.         }
  270.         else {
  271.         $checksmscode = $_POST['checksmscodezatresc']; 
  272.         $dotpay_code = $platnatresc_sms_code;
  273.         $usluga = "tresc";
  274.         }
  275.        
  276.         $dotpay_handle = fopen("http://dotpay.pl/check_code.php?id=".$dotpay_id."&code=".$dotpay_code."&check=".$checksmscode."&type=".$dotpay_type."&del=".$dotpay_del, 'r');
  277.         $dotpay_status = fgets($dotpay_handle, 8);
  278.         $czas_zycia = fgets($dotpay_handle, 24);
  279.         fclose($dotpay_handle);
  280.         $czas_zycia = rtrim($czas_zycia);
  281.        
  282.         if ($dotpay_status == 0) {print "Kod niepoprawny."; exit;}  # gdy kod niepoprawny
  283.        
  284.         else {
  285.             if ($usluga == "plik") {
  286.                 slij_plik();
  287.             }
  288.             else {
  289.                 udostepnij_tresc();
  290.                 }
  291.         }
  292.        
  293.         }
  294.    
  295.     // sprawdzamy czy człowiek wybrał opcję zapłacenia eprzelewem
  296.     if ($_POST['zrobprzelew'] OR $_POST['zrobprzelewzatresc']) {
  297.         $control_kod = md5(time());
  298.         $urlpowrotny = get_bloginfo('url');
  299.        
  300.         if ($_POST['zrobprzelewzatresc']) {
  301.             global $platnatresc_eprzelew_cost, $platnatresc_eprzelew_tytul, $platnatresc_eprzelew_guzik;
  302.             $urlpowrotny .= $_SERVER['REQUEST_URI'];
  303.             $eprzelew_cost = $platnatresc_eprzelew_cost;
  304.             $eprzelew_tytul = $platnatresc_eprzelew_tytul;
  305.             $eprzelew_guzik = $platnatresc_eprzelew_guzik; 
  306.             $control_kod = "tresc".substr($control_kod, 5);    
  307.         }
  308.        
  309.         setcookie('sprzedawca-control', $control_kod, time()+60*60*24*2, '/');
  310.        
  311.         $zapisz_control = "INSERT INTO ".$sprzedawca_table_name." (control)
  312.         VALUES ('". $wpdb->escape($control_kod) ."')";
  313.         $rezultat = $wpdb->query( $zapisz_control );
  314.        
  315.         $adres_przekierowania = "https://ssl.dotpay.pl/?id=".$dotpay_id."&kwota=".$eprzelew_cost."&waluta=PLN&opis=".$eprzelew_tytul."&lang=pl&URL=".$urlpowrotny."&URLC=".get_bloginfo('url')."&type=3&txtguzik=".$eprzelew_guzik."&control=".$control_kod."";
  316.         header("Location: ".$adres_przekierowania."");
  317.         exit;
  318.        
  319.         }
  320.        
  321.     // sprawdzamy czy dotpay właśnie odesłało niejawnie nam info o transkacji
  322.     if ($_POST['t_status'] AND $_POST['control']) {
  323.         $wpdb->show_errors();
  324.         if (substr($_POST['control'], 0, 5) == "tresc") {
  325.             global $platnatresc_eprzelew_cost;
  326.             $eprzelew_cost = $platnatresc_eprzelew_cost;
  327.             }
  328.         if ($_POST['t_status'] == "2" AND $_POST['id'] == $dotpay_id AND $_POST['amount'] == $eprzelew_cost AND in_array($_SERVER['REMOTE_ADDR'], array("217.17.41.5", "195.150.9.37")) ) {
  329.             $aktualizujemy = "UPDATE ".$sprzedawca_table_name." SET status = 'kupil' WHERE control = '".$_POST['control']."'";
  330.             if ($wpdb->query($aktualizujemy)) {
  331.                 exit("OK");
  332.                 }
  333.             else {
  334.                 exit($wpdb->print_error());
  335.                 }
  336.             }
  337.         }
  338.        
  339.     // sprawdzamy czy klient właśnie wrócił ze strony dotpay po dokonaniu
  340.     // zapłaty
  341.     if ($_GET['status'] == "OK") {
  342.         $jakistatus = $wpdb->get_var("SELECT status FROM ".$sprzedawca_table_name." WHERE control = '".$_COOKIE['sprzedawca-control']."'");
  343. // print_r($_COOKIE);
  344.         if ($jakistatus == "kupil") {
  345.             if (substr($_COOKIE['sprzedawca-control'], 0, 5) == "tresc") {
  346.                 setcookie('sprzedawca-control', 'kasuj', 0, "/", str_replace('http://www','',get_bloginfo('url')));
  347.                 udostepnij_tresc();
  348.                 }
  349.             else {
  350.                 slij_plik();
  351.                 }
  352.             }
  353.         }
  354.    
  355.     }
  356.    
  357. function ukryj_wpis ($content) {
  358.     global $post;
  359.     $czyplatny = get_post_meta($post->ID, "platny", true);
  360.     $ileparagrafow = get_post_meta($post->ID, "akapity", true);
  361.     if ($czyplatny == "true" AND $_COOKIE['sprzedawca-platnatresc'] != "wykupiony") {
  362.         global $platnatresc_eprzelew_cost, $platnatresc_waznosc_slownie, $platnatresc_sms_code, $platnatresc_sms_nr, $platnatresc_sms_cost;
  363.        
  364.         $content = explode("\n", $content);
  365.        
  366.         for ($i = 0; $i < $ileparagrafow; $i++) {
  367.             $wstep .= $content[$i];
  368.         }
  369.        
  370.         $formularze = '
  371.         <form method="post" id="dotpay-eprzelew-form">
  372.         Aby przeczytać ten artykuł w całości, musisz wykupić płatny dostęp. Po zapłacie będziesz miał dostęp z tego komputera do naszych wszystkich treści przez '.$platnatresc_waznosc_slownie.'. <br />
  373.         Zapłać kartą lub eprzelewem. W tej opcji zakup będzie Cię kosztował '.$platnatresc_eprzelew_cost.' złotych (z podatkiem VAT)<br />
  374.         <input type="submit" name="zrobprzelewzatresc" value="Wykonaj przelew" />
  375.         </form>
  376.        
  377.         <form method="post" id="dotpay-sms-form">
  378.         Możesz także zapłacić wysyłając SMS o treści <b>AP.'.$platnatresc_sms_code.'</b>
  379.         pod numer <b>'.$platnatresc_sms_nr.'</b> (koszt jednego smsa:
  380.         '.$platnatresc_sms_cost.' PLN z VAT), a następnie w pole poniżej
  381.         musisz wprowadzić kod otrzymany smsem zwrotnym: <br />
  382.         <input type="text" name="checksmscodezatresc" size=10 /><br />
  383.         <input type="submit" value="Zatwierdź i czytaj treść" /><br />
  384.         <small>Usługa płacenia SMSem dostępna jest w sieciach Era GSM, Plus GSM,
  385.         Orange i Play i obsługiwana jest przez Dotpay. <br />
  386.         <a href="http://www.dotpay.pl/index.php?content=113&newlang=pl">Regulamin</a> |
  387.         <a href="http://www.dotpay.pl/reklamacje">Składanie reklamacji</a> |
  388.         <a href="'.get_bloginfo('url').'">Kontakt z właścicielem strony</a>
  389.         </small>
  390.         </form>
  391.         ';
  392.        
  393.         return $wstep.$formularze;
  394.     // return substr(strip_tags($content), 0, 20).pokaz_pobieranie().pokaz_eprzelew();
  395.     }
  396.     else return $content;
  397.     }
  398.  
  399. register_activation_hook(__FILE__, 'sprzedawca_install');
  400. add_action('init', 'sprawdz_kod', 0);
  401. add_shortcode('autokod-sms', 'pokaz_pobieranie');
  402. add_shortcode('eprzelew-form', 'pokaz_eprzelew');
  403. add_filter('the_content', 'ukryj_wpis');
  404.  
  405. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement