Problem z wtyczka
-
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
-
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.
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).
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.
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.
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 ;pproblem 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.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.
Mimo wszystko dzięki za starania…
- Temat ‘Problem z wtyczka’ jest zamknięty na nowe odpowiedzi.