• Witam mam problem z wtyczką płatności sms mianowicie po wpisaniu kodu z sms pojawia się taki komunikat:
    Fatal error: Cannot use object of type WP_Error as array in /home/ofertka/public_html/wszystkozasms.pl/wp-content/plugins/cashmobile/cashmobile.php on line 71

    A to ten fragment kodu:

    if ( ($get) && ($get['response']['code'] ==200) ) {
              if ($get['body'] == 1) {
                $is_correct = true;

    Bardzo proszę o pomoc

Viewing 15 replies - 1 through 15 (of 15 total)
  • To błąd we wtyczce.

    Komunikat, który załączyłeś, mówi, że zmienna $get jest obiektem WP_Error. Oznacza to, że żądanie do zewnętrznego serwera, które było wykonane kilka linii wcześniej (wp_remote_get(), wp_remote_post() lub wp_remote_request()) zakończyło się błędem. Autor tej wtyczki powinien taką sytuację przewidzieć i obsłużyć.

    W prosty sposób można zabezpieczyć się przed pojawieniem się tego komunikatu o błędzie, ale to nie załatwi problemu z błędną odpowiedzią serwera (czytaj: wtyczka wciąż nie będzie działać). Oczywiście zakładam, że wtyczka jest poprawnie skonfigurowana.

    Twórca wątku vebart

    (@vebart)

    Tak więc nie można tego samemu naprawić? Trzeba skontaktować się z autorem?

    Wszystko można naprawić samemu, ale (bez urazy) podejrzewam, że nie poradzisz sobie z tym sam. Możesz spróbować wrzucić tu odpowiedź, jaką otrzymujesz z serwera (zmodyfikuj kod wtyczki i wyświetl zawartość zmiennej $get przed warunkiem, który wkleiłeś) – może coś sensownego będzie można z tego wywnioskować i rozwiązanie okaże się proste.

    Poza tym płacisz (prowizję od SMSów) firmie, która tę wtyczkę udostępnia, więc dostarczenie Ci działającego poprawnie narzędzia leży w ich interesie (żeby nie powiedzieć, że jest ich obowiązkiem).

    Twórca wątku vebart

    (@vebart)

    tak wygląda cały plik cashmobile.php :

    Version: 1.0
    */
    
    class CashmobileWPPlugin {
    
      function CashmobileWPPlugin() {
        wp_register_style('cashmbile.css', plugins_url('cashmobile/cashmobile.css'), false, false, 'all');
        wp_register_style('payment_info.css', plugins_url('cashmobile/payment_info.css'), false, false, 'all');
        add_action('admin_menu', array(&$this, 'admin_menu'));
        add_action('admin_init', array(&$this, 'admin_init'));
        add_action('send_headers', array(&$this, 'pre_check'));
        add_filter('the_content', array(&$this, 'check_post'));
        if (!in_array( get_option('cashmobile_access'), array('custom', 'all') )) {
          update_option('cashmobile_access', 'custom');
        }
        if (!in_array( get_option('cashmobile_code'), array('one', 'all') )) {
          update_option('cashmobile_code', 'one');
        }
      }
    
      function get_check_info($post_id) {
        if (get_option('cashmobile_access') == 'custom') {
          $cashmobile_code_access = get_post_meta($post_id, '_cashmobile_code_access', true)?true:false;
        } else {
          $cashmobile_code_access = get_option('cashmobile_access')=='all'?true:false;
        }
        if (get_option('cashmobile_code') == 'one') {
          $cashmobile_service = get_post_meta($post_id, '_cashmobile_service', true);
          $cashmobile_time_limit = intval(get_post_meta($post_id, '_cashmobile_time_limit', true));
          $cashmobile_access_per_post = true;
        } else {
          $cashmobile_service = get_option('cashmobile_default_service');
          $cashmobile_time_limit = intval(get_option('cashmobile_default_time_limit'));
          $cashmobile_access_per_post = false;
        }
        $services = unserialize(get_option('cashmobile_services', ''));
        $service_data = null;
        foreach ((array)$services as $service) {
          if ($service['uid'] == $cashmobile_service) {
            $service_data = $service;
            break;
          }
        }
        return array($cashmobile_code_access, $cashmobile_access_per_post, $cashmobile_service, $cashmobile_time_limit, $service_data);
      }
    
      function pre_check($wp) {
        if (!session_id())
          session_start();
        global $cashmobile_auth, $cashmobile_error;
    
        $cashmobile_auth = $_SESSION['cashmobile_auth'];
        if (($_SERVER['REQUEST_METHOD'] == 'POST') && (isset($_POST['id'])) && (isset($_POST['payment_code']))) {
          $post_id = intval($_POST['id']);
          $code = $_POST['payment_code'];
    
          list($cashmobile_code_access, $cashmobile_access_per_post, $cashmobile_service, $cashmobile_time_limit, $service_data) = self::get_check_info($post_id);
          $cashmobile_hash = get_option('cashmobile_hash');
    
          $is_correct = false;
          if ($service_data['type'] == 'sms') {
            $http = new WP_Http();
            $get = $http->request("http://system.pinapplegroup.in/api/{$cashmobile_hash}/check/smscode?keyword_id={$service_data['id']}&code={$code}");
            if ( ($get) && ($get['response']['code'] ==200) ) {
              if ($get['body'] == 1) {
                $is_correct = true;
              }
            }
          }
    
          if ($is_correct) {
            $cashmobile_auth[$post_id] = time();
            $cashmobile_auth['default'] = time();
          } else {
            $cashmobile_error[$post_id] = 'Wpisany kod jest nieprawidłowy.';
          }
    
          $_SESSION['cashmobile_auth'] = $cashmobile_auth;
        }
    
        if ( (!isset($_SESSION['timezone'])) && get_option('cashmobile_show_time_limit') ) {
          if (!isset($_REQUEST['offset'])) {
    ?>
    <script>
      var d = new Date()
      var offset= -d.getTimezoneOffset()/60;
      location.href = "<?php echo $_SERVER['PHP_SELF']; ?>?offset="+offset;
    </script>
    <?php
          } else {
            $zonelist = array('Kwajalein' => -12.00, 'Pacific/Midway' => -11.00, 'Pacific/Honolulu' => -10.00, 'America/Anchorage' => -9.00, 'America/Los_Angeles' => -8.00, 'America/Denver' => -7.00, 'America/Tegucigalpa' => -6.00, 'America/New_York' => -5.00, 'America/Caracas' => -4.30, 'America/Halifax' => -4.00, 'America/St_Johns' => -3.30, 'America/Argentina/Buenos_Aires' => -3.00, 'America/Sao_Paulo' => -3.00, 'Atlantic/South_Georgia' => -2.00, 'Atlantic/Azores' => -1.00, 'Europe/Dublin' => 0, 'Europe/Belgrade' => 1.00, 'Europe/Warsaw' => 2.00, 'Asia/Kuwait' => 3.00, 'Asia/Tehran' => 3.30, 'Asia/Muscat' => 4.00, 'Asia/Yekaterinburg' => 5.00, 'Asia/Kolkata' => 5.30, 'Asia/Katmandu' => 5.45, 'Asia/Dhaka' => 6.00, 'Asia/Rangoon' => 6.30, 'Asia/Krasnoyarsk' => 7.00, 'Asia/Brunei' => 8.00, 'Asia/Seoul' => 9.00, 'Australia/Darwin' => 9.30, 'Australia/Canberra' => 10.00, 'Asia/Magadan' => 11.00, 'Pacific/Fiji' => 12.00, 'Pacific/Tongatapu' => 13.00);
            $index = array_keys($zonelist, $_REQUEST['offset']);
            $_SESSION['timezone'] = $index[0];
          }
        }
        date_default_timezone_set($_SESSION['timezone']);
    
      }
    
      function check_post($content) {
        global $wp_query, $cashmobile_auth, $cashmobile_error;
        $post = $wp_query->post;
    
        list($cashmobile_code_access, $cashmobile_access_per_post, $cashmobile_service, $cashmobile_time_limit, $service_data) = self::get_check_info($post->ID);
        $cashmobile_show_time_limit = get_option('cashmobile_show_time_limit');
    
        if (get_option('cashmobile_admin_full_access') && current_user_can('administrator')) {
          $cashmobile_code_access = false;
        }
    
        $cashmobile_has_access = true;
        if ($cashmobile_code_access) {
          if ($cashmobile_access_per_post) {
            $check_id = $post->ID;
          } else {
            $check_id = 'default';
          }
          if (isset($cashmobile_auth[$check_id])) {
            if ($cashmobile_time_limit > 0) {
              if ((time() - $cashmobile_time_limit * 60) > $cashmobile_auth[$check_id]) {
                $cashmobile_has_access = false;
              } else if ($cashmobile_show_time_limit) {
                wp_print_styles('payment_info.css');
                $content = '<span class="time_limit">Dostęp do '.date('Y-m-d H:i', $cashmobile_auth[$check_id] + $cashmobile_time_limit * 60).'</span>'.$content;
              }
            }
          } else {
            $cashmobile_has_access = false;
          }
        }
    
        if ($cashmobile_has_access) {
          return $content;
        } else {
          ob_start();
          global $id, $payment_method;
          $id = $post->ID;
          $payment_method = 'powiadom autora';
          if ($service_data) {
            if ($service_data['type'] == 'sms') {
              $payment_method = 'wyślij SMS o treści '.$service_data['keyword'].' na numer '.$service_data['la'].' (koszt '.number_format($service_data['price'], 2, ',', '').' zł netto za SMS)';
            } else {
              $payment_method = 'zadzwoń na numer '.$service_data['dnis'].($service_data['pin']?(' i po komunikacie wybierz kod '.$service_data['pin'].' z klawiatury telefonu'):'').' (koszt '.number_format($service_data['price'], 2, ',', '').' zł netto '.$service_data['billing_name'].')';
            }
          }
    
          require('payment_info.php');
          $payment_contents = ob_get_clean();
          return $payment_contents;
        }
      }
    
      function admin_init() {
        register_setting( 'kody-cashmobile-settings-group', 'cashmobile_hash' );
        register_setting( 'kody-cashmobile-settings-group', 'cashmobile_access' );
        register_setting( 'kody-cashmobile-settings-group', 'cashmobile_code' );
        register_setting( 'kody-cashmobile-settings-group', 'cashmobile_default_service' );
        register_setting( 'kody-cashmobile-settings-group', 'cashmobile_default_time_limit' );
        register_setting( 'kody-cashmobile-settings-group', 'cashmobile_show_time_limit' );
        register_setting( 'kody-cashmobile-settings-group', 'cashmobile_admin_full_access' );
      }
    
      function admin_menu() {
        add_menu_page('Wtyczka Kody Cashmobile', 'Cashmobile', 'administrator', 'cashmobile_settings', array(&$this, 'settings_page'), plugins_url('/images/cashmobile-icon.png', __FILE__));
        add_submenu_page('cashmobile_settings', 'Wtyczka Kody Cashmobile', 'Ustawienia', 'administrator', 'cashmobile_settings', array(&$this, 'settings_page'));
        add_submenu_page('cashmobile_settings', 'Wtyczka Kody Cashmobile', 'Usługi', 'administrator', 'cashmobile_services', array(&$this, 'services_page'));
        if (get_option('cashmobile_access') == 'custom') {
          add_meta_box('cashmobile', 'Kody Cashmobile', array(&$this, 'settings_box'), 'post', 'side', 'high');
          add_meta_box('cashmobile', 'Kody Cashmobile', array(&$this, 'settings_box'), 'page', 'side', 'high');
          add_action('save_post', array(&$this, 'save_settings_box'));
        }
      }
    
      function save_settings_box($pid) {
        if (!wp_verify_nonce($_POST['cashmobile_token'], 'cashmobile_settings_box')) {
          return $pid;
        }
    
        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
          return $pid;
        }
    
        $cashmobile_code_access = $_POST['cashmobile_code_access'];
        if (!add_post_meta($pid, '_cashmobile_code_access', $cashmobile_code_access?true:false, true))
          update_post_meta($pid, '_cashmobile_code_access', $cashmobile_code_access?true:false);
    
        if (get_option('cashmobile_code') == 'one') {
          $cashmobile_service = $_POST['cashmobile_service'];
          if (!add_post_meta($pid, '_cashmobile_service', $cashmobile_service, true))
            update_post_meta($pid, '_cashmobile_service', $cashmobile_service);
    
          $cashmobile_time_limit = intval($_POST['cashmobile_time_limit']);
          if (!add_post_meta($pid, '_cashmobile_time_limit', $cashmobile_time_limit, true))
            update_post_meta($pid, '_cashmobile_time_limit', $cashmobile_time_limit);
        }
      }
    
      function settings_box() {
        global $services, $cashmobile_code_access;
        $services = unserialize(get_option('cashmobile_services', ''));
    
        if (isset($_GET['post'])) {
          $pid = $_GET['post'];
          if (get_post_meta($pid, '_cashmobile_code_access', true))
            $cashmobile_code_access = true;
          else
            $cashmobile_code_access = false;
    
          if (get_option('cashmobile_code') == 'one') {
            global $cashmobile_service, $cashmobile_time_limit;
            if (!$cashmobile_service = get_post_meta($pid, '_cashmobile_service', true)) {
              $cashmobile_service = get_option('cashmobile_default_service');
            }
    
            if (!$cashmobile_time_limit = get_post_meta($pid, '_cashmobile_time_limit', true)) {
              $cashmobile_time_limit = get_option('cashmobile_default_time_limit');
            }
          }
        } else {
          $cashmobile_code_access = false;
          if (get_option('cashmobile_code') == 'one') {
            global $cashmobile_service, $cashmobile_time_limit;
            $cashmobile_service = get_option('cashmobile_default_service');
            $cashmobile_time_limit = get_option('cashmobile_default_time_limit');
          }
        }
    
        require('settings_box.php');
      }
    
      function settings_page() {
        global $services;
        $services = unserialize(get_option('cashmobile_services', ''));
    
        require('settings_page.php');
      }
    
      function services_page() {
        global $error, $services;
        $error = null;
        $services = unserialize(get_option('cashmobile_services', ''));
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
          $post = wp_remote_get('https://www.system.pinapplegroup.com/api/'.get_option('cashmobile_hash').'/services/smscode', array( 'sslverify' => false ));
          if ( !is_wp_error( $post ) && ($post['response']['code'] == 200) ) {
            $services_xml = new SimpleXMLElement($post['body'], LIBXML_NOERROR | LIBXML_NOWARNING | LIBXML_ERR_NONE );
            if ($services_xml->error) {
              $error = 'Błąd: '.((string)$services_xml->error);
              $services = array();
              update_option('cashmobile_services', serialize($services));
            } else if ($services_xml->service) {
              $services = array();
              foreach ($services_xml->service as $service) {
                $service_data = array();
                foreach ($service as $tag => $val) {
                  $service_data[$tag] = (string)$val;
                }
                $service_data['uid'] = $service_data['type'].'_'.$service_data['id'].($service_data['type']=='ivr'?('_'.$service_data['pin']):'');
                if ($service_data['type'] == 'sms') {
                  $service_data['name'] = 'SMS o treści '.$service_data['keyword'].' na numer '.$service_data['la'].' (koszt '.number_format($service_data['price'], 2, ',', '').' zł za SMS)';
                } else {
                  $service_data['name'] = 'Połączenie na numer '.$service_data['dnis'].($service_data['pin']?(', PIN: '.$service_data['pin']):'').' (koszt '.number_format($service_data['price'], 2, ',', '').' zł '.$service_data['billing_name'].')';
                }
                $services[] = $service_data;
              }
              update_option('cashmobile_services', serialize($services));
              $message = 'Lista usług została uaktualniona.';
            } else {
              $message = (string)$services_xml->message;
              $services = array();
              update_option('cashmobile_services', serialize($services));
            }
          }
        }
        require('services_page.php');
      }
    
    }
    
    $cashmobilewp = new CashmobileWPPlugin();

    Fajnie, ale wciąż nie wiem co zwraca serwer. A nie będę rejestrował konta w CashBill tylko po to, żeby to sprawdzić.

    Przed tą linią:
    if ( ($get) && ($get['response']['code'] ==200) ) {
    wstaw proste var_dump():
    var_dump($get);

    i wklej tu to, co się pojawi przy próbie wpisania kodu z SMSa.

    Komunikat na ich stronie wskazuje na małą reorganizację API i to może być powód owych problemów.
    Wkrótce udostępnimy nowy system uruchamiania usług SMS. Nowy moduł przyspieszy proces uruchamiania i aktywowania usług.

    Sugerował bym męczyć ich o aktualną wersję wtyczki i tyle.

    Twórca wątku vebart

    (@vebart)

    Wyświetlił się komunikat:

    object(WP_Error)#1646 (2) { ["errors":"WP_Error":private]=> array(1) { ["http_request_failed"]=> array(1) { [0]=> string(47) "Couldn't resolve host 'system.pinapplegroup.in'" } } ["error_data":"WP_Error":private]=> array(0) { } }
    Fatal error: Cannot use object of type WP_Error as array in /home/ofertka/public_html/wszystkozasms.pl/wp-content/plugins/cashmobile/cashmobile.php on line 72

    Patrz wyżej. Coś u siebie zmieniają, adres z jakiego pobierało status transakcji przestał działać. W efekcie wtyczka przestała działać – proste.

    Masz kontakt – napisz że do nich pytanie kiedy skończą i kiedy udostępnią nową wersję wtyczki lub chociaż zaktualizowaną dokumentację API.

    Twórca wątku vebart

    (@vebart)

    To co zmieniają to tylko system zarządzania usługami sms, a nie API

    Pytałeś ich czy zgadujesz?
    -przemeblowanie musi być większe skoro im domena leży ….no ale przecież wiesz lepiej ;p

    Twórca wątku vebart

    (@vebart)

    problem z domeną występuje chyba tylko u Ciebie

    Tak, i przez ten problem „tylko u mnie” wtyczka ci nie działa xD.

    Widzę nie bardzo masz pojęcie o czym piszesz ( chodziło o system.pinapplegroup.in ), a mimo to piszesz …tylko nie tam gdzie należy.
    Po raz ostatni napisze – zapytaj ich co jest grane! Ich usługa, ich produkt, ich zmartwienie. Kropka.

    Twórca wątku vebart

    (@vebart)

    Dziś mam czas popracować nad stronką więc potrzebuje to na dziś, z obsługą jak zapewne się domyślasz będe mógł porozmawiać w poniedziałek i gdybym chciał czekać do poniedziałku nie umieszczałbym wątku na tym forum. A jeśli postawiłeś diagnozę, że to wina serwisu nie widzę powodów, dla których miałbyś się tutaj udzielać. Kilkoma słowy: Nie pomagasz, nie przeszkadzaj.

    @adpawl ma rację – strona/usługa system.pinapplegroup.in nie działa i to jest przyczyną Twoich problemów.

    Twórca wątku vebart

    (@vebart)

    Mimo wszystko dzięki za starania…

Viewing 15 replies - 1 through 15 (of 15 total)
  • Temat ‘Problem z wtyczka’ jest zamknięty na nowe odpowiedzi.