$body===null?'GET':'POST','headers'=>['Authorization'=>'Bearer '.$c['key'],'Content-Type'=>'application/json'],'body'=>$body===null?null:wp_json_encode($body),'timeout'=>25,'redirection'=>0,'sslverify'=>true]); if(is_wp_error($r))return new WP_Error('sms_unavailable','Η υπηρεσία SMS δεν είναι διαθέσιμη.'); $d=json_decode(wp_remote_retrieve_body($r),true);if(wp_remote_retrieve_response_code($r)!==200||!is_array($d)){ $code=is_array($d)&&is_string($d['error']??null)?$d['error']:'sms_unavailable'; $messages=['forbidden'=>'Η τρέχουσα σύνδεση επιτρέπει μόνο έλεγχο τιμών. Για SMS χρειάζεται ολοκλήρωση της σύνδεσης του καταστήματος με τον δικό σου λογαριασμό CourierAPP.','unauthorized'=>'Η σύνδεση του καταστήματος έληξε ή ανακλήθηκε. Σύνδεσέ το ξανά με τον λογαριασμό σου.','rate_limited'=>'Πολλά αιτήματα σε μικρό διάστημα. Δοκίμασε ξανά σε ένα λεπτό.']; return new WP_Error('sms_error',$messages[$code]??'Η ενέργεια SMS δεν ολοκληρώθηκε. Κωδικός: '.sanitize_text_field($code)); }return $d; } function courierapp_connect_sms_panel(){ if(!current_user_can('manage_woocommerce'))return; echo '

SMS ενημερώσεις CourierAPP

Μόνο κεφαλαία, έως 160 μονάδες GSM-7 και 1 SMS ανά ενημέρωση. Προαιρετικές ενημερώσεις μεταφοράς, εξόδου για παράδοση και παράδοσης. Η δημιουργία ετικέτας δεν θεωρείται παραλαβή.

'; if(isset($_POST['courierapp_sms_save'])){ check_admin_referer('courierapp_sms_save'); $settings=['enabled'=>!empty($_POST['courierapp_sms_enabled']),'provider_mode'=>sanitize_key(wp_unslash($_POST['courierapp_sms_provider']??'byo')),'sender_id'=>sanitize_text_field(wp_unslash($_POST['courierapp_sms_sender']??'CourierAPP')),'locale'=>sanitize_key(wp_unslash($_POST['courierapp_sms_locale']??'en')),'prefixes'=>array_values(array_filter(array_map('trim',explode(',',sanitize_text_field(wp_unslash($_POST['courierapp_sms_prefixes']??'30')))))),'kinds'=>['in_transit','out_for_delivery','delivered'],'max_segments'=>1,'message_cap_micros'=>(int)round((float)sanitize_text_field(wp_unslash($_POST['courierapp_sms_per_message']??'0.20'))*1000000),'monthly_cap_micros'=>(int)round((float)sanitize_text_field(wp_unslash($_POST['courierapp_sms_monthly']??'10'))*1000000)]; $key=sanitize_text_field(wp_unslash($_POST['courierapp_sms_key']??''));if($key!=='')$settings['api_key']=$key; $saved=courierapp_connect_sms_request('settings',$settings);unset($key,$settings['api_key']); echo '

'.esc_html(is_wp_error($saved)?$saved->get_error_message():'Οι ρυθμίσεις SMS αποθηκεύτηκαν.').'

'; } if(isset($_POST['courierapp_sms_preview'])){ check_admin_referer('courierapp_sms_preview');$preview=courierapp_connect_sms_request('preview',['phone'=>sanitize_text_field(wp_unslash($_POST['courierapp_sms_phone']??'')),'kind'=>'delivered','carrier'=>'dhl','tracking'=>'TEST123456']); if(is_wp_error($preview))echo '

'.esc_html($preview->get_error_message()).'

'; else echo '

Προεπισκόπηση — δεν στάλθηκε SMS: '.esc_html($preview['text']).'
Τμήματα: '.esc_html((string)$preview['segments']).' · Ανώτατο εκτιμώμενο κόστος: '.esc_html(number_format($preview['cost_micros']/1000000,4)).' EUR

'; } $d=courierapp_connect_sms_request('status');if(is_wp_error($d)){echo '

'.esc_html($d->get_error_message()).'

';return;}$s=$d['settings']; echo '

Αγορασμένα: '.esc_html((string)floor(($d['wallet_micros']??0)/120000)).' SMS · Διαθέσιμα: '.esc_html((string)floor(($d['available_micros']??$d['wallet_micros']??0)/120000)).'

'; if(($d['pending_funding_micros']??0)>0)echo '

Αναμονή ενεργοποίησης: '.esc_html((string)floor($d['pending_funding_micros']/120000)).' SMS. Το υπόλοιπο έχει καταχωρηθεί· απαιτείται τροφοδότηση του παρόχου.

'; echo '

Λειτουργία: '.esc_html($d['mode']).' · '.(!empty($s['enabled'])?'SMS ενεργά για νέες αποστολές':'SMS ανενεργά').'

'; if($d['mode']==='sandbox')echo '

Προσομοίωση SMS — δεν στέλνονται πραγματικά μηνύματα.

'; echo '

Τα κλειδιά αποθηκεύονται κρυπτογραφημένα στον server της CourierAPP και δεν εμφανίζονται ξανά. Οι σημερινές ενημερώσεις email συνεχίζουν κανονικά. Παλαιότερες αποστολές εξαιρούνται.

';wp_nonce_field('courierapp_sms_save'); echo '

'; echo '

'; echo '

'.(!empty($s['provider_connected'])?'Υπάρχει αποθηκευμένο κλειδί. Άφησέ το κενό για διατήρηση.':'').'

'; foreach(['sender'=>'Όνομα αποστολέα','prefixes'=>'Επιτρεπόμενοι διεθνείς κωδικοί (χωρίς +, χωρισμένοι με κόμμα)','per_message'=>'Μέγιστο κόστος ανά μήνυμα EUR','monthly'=>'Μέγιστο μηνιαίο κόστος EUR'] as $key=>$label){$v=['sender'=>$s['sender_id'],'prefixes'=>implode(',',$s['prefixes']),'per_message'=>$s['message_cap_micros']/1000000,'monthly'=>$s['monthly_cap_micros']/1000000,'segments'=>$s['max_segments']][$key];echo '

';} echo '

'; submit_button('Αποθήκευση SMS','secondary','courierapp_sms_save');echo '
';wp_nonce_field('courierapp_sms_preview');echo '';submit_button('Έλεγχος κόστους χωρίς αποστολή','secondary','courierapp_sms_preview');echo '
'; echo ''; foreach($d['jobs']??[] as $j)echo ''; echo '
ΗμερομηνίαΓεγονόςΚατάστασηΤμήματαΕκτίμηση EUR
'.esc_html($j['created_at']).''.esc_html($j['kind']).''.esc_html($j['status']).''.esc_html((string)$j['segments']).''.esc_html(number_format($j['cost_micros']/1000000,4)).'
'; }