array( 'name' => 'Do 5 000 PLN', 'price' => '1,50', 'value' => '5000' ), '2' => array( 'name' => 'Do 10 000 PLN', 'price' => '2,50', 'value' => '10000' ), '3' => array( 'name' => 'Do 20 000 PLN', 'price' => '3,00', 'value' => '20000' ), ); public $locker = array( 'small' => array( 'name' => 'Gabaryt A', 'description' => '8 x 38 x 64 cm', 'price' => '1,00', 'short_name' => 'A', 'value' => 'small', 'length' => 80, 'width' => 380, 'height' => 640, 'unit' => 'mm' ), 'medium' => array( 'name' => 'Gabaryt B', 'description' => '19 x 38 x 64 cm', 'price' => '2,00', 'short_name' => 'B', 'value' => 'medium', 'length' => 190, 'width' => 380, 'height' => 640, 'unit' => 'mm' ), 'large' => array( 'name' => 'Gabaryt C', 'description' => '41 x 38 x 64 cm', 'price' => '3,00', 'short_name' => 'C', 'value' => 'large', 'length' => 410, 'width' => 380, 'height' => 640, 'unit' => 'mm' ), ); public function __construct($api, $sandbox = true, $debug = false) { $this->api_key = $api; $this->debug = $debug; $this->sandbox = $sandbox; $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; } /** * Pobieranie informacji o ilości punktów paczkomatowych * @return object of points info */ public function getNumberOfPoints() { $pType = 0; $pTypes = Configuration::get('INPOSTSHIP_POINT_TYPE'); $pTypes = explode(',', $pTypes); foreach ($pTypes as $pT) { if ($pT == 'pop') { $pType = 1; } } $type = 'parcel_locker'; if ($pType == 1) { $type .= ',pop'; } else { $type = 'parcel_locker_only'; } $this->api_url = $this->api_endpoint_url; $point = $this->request('points?page=1&per_page=5&type='.$type, 'GET'); return $point; } public function getNumberOfPopPoints() { $this->api_url = $this->api_endpoint_url; $point = $this->request('points?page=1&per_page=5&type=pop', 'GET'); return $point; } /** * Pobieranie listy lokalizacji * @param number $per_page * @return object */ public function getPoints($per_page = 50, $type = 'parcel_locker_only', $pop = 0) { $pType = 0; $pTypes = Configuration::get('INPOSTSHIP_POINT_TYPE'); $pTypes = explode(',', $pTypes); foreach ($pTypes as $pT) { if ($pT == 'pop') { $pType = 1; } } if ($pop == 0) { if ($pType == 1) { $type = 'parcel_locker,pop'; } } $this->api_url = $this->api_endpoint_url; $points = array(); for ($i = 1; $i < 500; $i++) { $point = $this->request('points?page='.$i.'&per_page='.$per_page.'&type='.$type, 'GET'); $point2 = $point['result']; $points = array_merge($points, $point2->items); } return $points; } /** * Pobieranie listy lokalizacji względem strony i ilości punktów * @param int $page * @param int $per_page * @param string $type * @return object */ public function getPointsPerPage($page = 1, $per_page = 100, $type = 'parcel_locker_only') { $pType = 0; $pTypes = Configuration::get('INPOSTSHIP_POINT_TYPE'); $pTypes = explode(',', $pTypes); foreach ($pTypes as $pT) { if ($pT == 'pop') { $pType = 1; } } if ($pType == 1) { $type = 'parcel_locker,pop'; } $this->api_url = $this->api_endpoint_url; $result = $this->request('points?page='.$page.'&per_page='.$per_page.'&type='.$type, 'GET'); return $result['result']->items; } /** * Pobieranie informacji o punkcie paczkomatowym - rozpoznanie za pomocą nazwy punktu. * @param string $code * @return object of point info */ public function getPointInfo($code) { $this->api_url = $this->api_endpoint_url; $return = $this->request('points/'.$code, 'GET'); return $return['result']; } /** * Pobranie informacji o najbliższych paczomatach * @param int $postcode - kod pocztowy bez kresek np. 00999 * @param int $nearcount - ilość wyników * @return object - list of items */ public function getPointNearAddress($postcode, $nearcount) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; $point = $this->request('points?relative_post_code='.$postcode.'&page=1&per_page='.(int)$nearcount. '&type=parcel_locker_only&sort_by=distance_to_relative_point', 'GET'); return $point['result']->items; } /** * @param $lat * @param $lon * @param int $limit * @param int $maxDistance - 10000 = 10km default * @return mixed */ public function getPointsNearAddress($lat, $lon, $limit = 5, $maxDistance = 10000, $cod = 0) { $this->api_url = $this->api_endpoint_url; if ($cod == 0) { $return = $this->request('points?relative_point=' . $lat . ',' . $lon . '&max_distance=' . $maxDistance . '&limit=' . $limit, 'GET'); } else { $return = $this->request('points?relative_point=' . $lat . ',' . $lon . '&max_distance=' . $maxDistance . '&limit=' . $limit.'&payment_available=true', 'GET'); } return $return['result']->items; } /** * Pobieranie informacji o organizacji * @param int $organization_id - organization ID * @return object of organization info * */ public function getOrganizationsInfo($organization_id) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('organizations/'.(int)$organization_id, 'GET'); } /** * Pobieranie listy sposobów nadania * @param string $service - wybrany typ serwisu * @return object */ public function getSendingMethods($service = null) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('sending_methods'.($service === null ? '' : '?service='.$service), 'GET'); } /** * Pobieranie listy dostępnych punktów odbioru przesyłki przez kuriera * @param int $organization_id - numer organizacji * @return object */ public function searchDispatchPoints2($organization_id) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('organizations/'.(int)$organization_id.'/dispatch_points', 'GET'); } /** * Wysłanie parametrów potrzebnych do utworzenia przesyłki inpost w trybie uproszczonym * @param int $organization_id * @param array $receiver * @param array $sender * @param array $parcels * @param array $custom_attrib * @param array $cod * @param array $insurance * @param array $additional_services * @param array $reference * @param string $service * @param bool $only_choice_of_offer * @param bool $weekPack * @return object of result */ public function shipment($organization_id, $receiver, $sender, $parcels, $custom_attrib, $cod, $insurance, $additional_services, $reference, $service = 'inpost_locker_standard', $only_choice_of_offer = false, $weekPack = false) { $services = array('inpost_courier_standard', 'inpost_locker_allegro', 'inpost_courier_allegro'); $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; $posts = '{ "receiver": { "first_name":"'.$receiver['first_name'].'", "last_name":"'.$receiver['last_name'].'", "email":"'.$receiver['email'].'", "phone":"'.$receiver['phone'].'", "address": { "street":"'.$receiver['address']['street'].'", "building_number":"'.$receiver['address']['building_number'].'", "city":"'.$receiver['address']['city'].'", "post_code":"'.$receiver['address']['post_code'].'", "country_code":"PL" } }, "sender": {"first_name":"'.$sender['first_name'].'", "last_name":"'.$sender['last_name'].'", "company_name":"'.$sender['company_name'].'", "phone":"'.$sender['phone'].'", "email":"'.$sender['email'].'", "address": {"street":"'.$sender['address']['street'].'", "building_number":"'.$sender['address']['building_number'].'" ,"city":"'.$sender['address']['city'].'", "post_code":"'.$sender['address']['post_code'].'", "country_code":"PL"}},'; if (in_array($service, $services)) { if ($parcels[0]['info'] != 'other') { $packInfo = $this->locker[$parcels[0]['info']]; $posts .= '"parcels": { "dimensions": { "length": "'.$packInfo['length'].'", "width": "'.$packInfo['width'].'", "height": "'.$packInfo['height'].'", "unit": "mm" }, "weight": { "amount": "'.$parcels[0]['weight'].'", "unit": "kg" }, "tracking_number":null, "is_non_standard":false }, '; } else { $parcel = $parcels[0]; $posts .= '"parcels": { "dimensions": { "length": "' . ($parcel['length']*10) . '", "width": "' . ($parcel['width']*10) . '", "height": "' . ($parcel['height']*10) . '", "unit": "mm" }, "weight": { "amount": "' . $parcel['weight'] . '", "unit": "kg" }, "tracking_number":null, "is_non_standard":false }, '; } } else { if ($service == 'inpost_letter_allegro') { $posts .= '"parcels": [{ "template":"letter_b", "weight" :{ "amount": "2", "unit": "kg" }, "tracking_number":null, "is_non_standard":false}],'; } else { $posts .= '"parcels": [{"id":"' . $parcels[0]['id'] . '", "template":"' . $parcels[0]['template'] . '", "weight" :{ "amount": "' . $parcels[0]['weight'] . '", "unit": "kg" }, "tracking_number":null, "is_non_standard":false}],'; } } $posts .= '"custom_attributes":{ "sending_method":"'.$custom_attrib['sending_method'].'"'; if ($service == 'inpost_locker_standard' || $service == 'inpost_locker_pass_thru') { $posts .= ',"target_point":"'.$custom_attrib['target_point'].'"'; if ($custom_attrib['sending_method'] == 'parcel_locker' || $custom_attrib['sending_method'] == 'pop') { // || $custom_attrib['sending_method'] == 'dispatch_order') { $posts .= ',"dropoff_point":"'.$custom_attrib['dropoff_point'].'", "service":"'.$service.'"'; } else { $posts .= ',"service":"'.$service.'"'; } } elseif ($service == 'inpost_courier_standard') { if ($custom_attrib['sending_method'] == 'pop') { $posts .= ',"dropoff_point":"'.$custom_attrib['dropoff_point'].'", "service":"'.$service.'"'; } else { $posts .= ''; } } elseif ($service == 'inpost_locker_allegro' || $service == 'inpost_courier_allegro' || $service == 'inpost_letter_allegro') { if ($service == 'inpost_locker_allegro') { $posts .= ',"dropoff_point":"'.$custom_attrib['dropoff_point'].'"'; } $posts .= ',"target_point":"'.$custom_attrib['target_point'].'"'; $posts .= ',"allegro_transaction_id":"'.$custom_attrib['allegro_transaction_id'].'","allegro_user_id":"'.$custom_attrib['allegro_user_id'].'"'; } if (!empty($additional_services)) { $cunt = count($additional_services) - 1; $posts .= ',"additional_services":['; foreach ($additional_services as $key => $as) { if ($key == $cunt) { $posts .= '"'.$as.'"'; } else { $posts .= '"'.$as . '",'; } } $posts .= ']'; } if ($only_choice_of_offer) { $posts .= ''; } $posts .= '},'; if ($weekPack == 1) { $posts .= '"end_of_week_collection": true,'; } $posts .= '"service" : "'.$service.'", "reference": "'.$reference.'"'; ($insurance)?($posts .= ',"insurance":{"amount":"'.$insurance['amount'].'", "currency": "PLN"}'):''; (!empty($cod))?($posts .= ',"cod":{"amount":"'.$cod['amount'].'", "currency": "PLN"}'):''; $posts .= '}'; return $this->request('organizations/'.(int)$organization_id.'/shipments', 'POST', $posts); } /** * Pobranie kalkulacji ceny za przesyłkę * @param $organization_id * @param $receiver * @param null $sender * @param $parcels * @param $custom_attrib * @param $cod * @param $insurance * @param $additional_services * @param $reference * @param string $service * @param bool $only_choice_of_offer * @param bool $weekPack * @return NULL[]|unknown[] */ public function shipmentCalculate($organization_id, $receiver, $sender = null, $parcels, $custom_attrib, $cod, $insurance, $additional_services, $reference, $service = 'inpost_locker_standard', $only_choice_of_offer = false, $weekPack = false) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; $posts = '{"shipments": [ { "id": "SHIPMENT1", "receiver": { "first_name":"'.$receiver['first_name'].'", "last_name":"'.$receiver['last_name'].'", "email":"'.$receiver['email'].'", "phone":"'.$receiver['phone'].'", "address": { "street":"'.$receiver['address']['street'].'", "building_number":"'.$receiver['address']['building_number'].'", "city":"'.$receiver['address']['city'].'", "post_code":"'.$receiver['address']['post_code'].'", "country_code":"PL" } }, "sender": {"first_name":"'.$sender['first_name'].'", "last_name":"'.$sender['last_name'].'", "company_name":"'.$sender['company_name'].'", "phone":"'.$sender['phone'].'", "email":"'.$sender['email'].'", "address": {"street":"'.$sender['address']['street'].'", "building_number":"'.$sender['address']['building_number'].'" ,"city":"'.$sender['address']['city'].'", "post_code":"'.$sender['address']['post_code'].'", "country_code":"PL"}},'; if ($service == 'inpost_courier_standard' || $service == 'inpost_locker_allegro' || $service == 'inpost_courier_allegro') { if ($parcels[0]['info'] != 'other') { $packInfo = $this->locker[$parcels[0]['info']]; $posts .= '"parcels": { "dimensions": { "length": "' . $packInfo['length'] . '", "width": "' . $packInfo['width'] . '", "height": "' . $packInfo['height'] . '", "unit": "mm" }, "weight": { "amount": "' . $parcels[0]['weight'] . '", "unit": "kg" }, "tracking_number":null, "is_non_standard":false }, '; } else { $parcel = $parcels[0]; $posts .= '"parcels": { "dimensions": { "length": "' . $parcel['length'] . '", "width": "' . $parcel['width'] . '", "height": "' . $parcel['height'] . '", "unit": "cm" }, "weight": { "amount": "' . $parcel['weight'] . '", "unit": "kg" }, "tracking_number":null, "is_non_standard":false }, '; } } else { if ($service == 'inpost_letter_allegro') { $posts .= '"parcels": [{ "template":"letter_b", "weight" :{ "amount": "2", "unit": "kg" }, "tracking_number":null, "is_non_standard":false}],'; } else { $posts .= '"parcels": [{"id":"' . $parcels[0]['id'] . '", "template":"' . $parcels[0]['template'] . '", "weight" :{ "amount": "' . $parcels[0]['weight'] . '", "unit": "kg" }, "tracking_number":null, "is_non_standard":false}],'; } } $posts .= '"custom_attributes":{ "sending_method":"'.$custom_attrib['sending_method'].'"'; if ($service == 'inpost_locker_standard' || $service == 'inpost_locker_pass_thru') { $posts .= ',"target_point":"'.$custom_attrib['target_point'].'"'; if ($custom_attrib['sending_method'] == 'parcel_locker' || $custom_attrib['sending_method'] == 'pop') { // || $custom_attrib['sending_method'] == 'dispatch_order') { $posts .= ',"dropoff_point":"'.$custom_attrib['dropoff_point'].'", "service":"'.$service.'"'; } else { $posts .= ',"service":"'.$service.'"'; } } elseif ($service == 'inpost_courier_standard') { $posts .= ''; } elseif ($service == 'inpost_locker_allegro' || $service == 'inpost_courier_allegro' || $service == 'inpost_letter_allegro') { if ($service == 'inpost_locker_allegro') { $posts .= ',"dropoff_point":"'.$custom_attrib['dropoff_point'].'"'; } $posts .= ',"target_point":"'.$custom_attrib['target_point'].'"'; $posts .= ',"allegro_transaction_id":"'.$custom_attrib['allegro_transaction_id'].'","allegro_user_id":"'.$custom_attrib['allegro_user_id'].'"'; } if (!empty($additional_services)) { $cunt = count($additional_services) - 1; $posts .= ',"additional_services":['; foreach ($additional_services as $key => $as) { if ($key == $cunt) { $posts .= '"'.$as.'"'; } else { $posts .= '"'.$as . '",'; } } $posts .= ']'; } if ($only_choice_of_offer) { $posts .= ''; } $posts .= '},'; if ($weekPack) { $posts .= '"end_of_week_collection": true,'; } $posts .= '"service" : "'.$service.'", "reference": "'.$reference.'"'; ($insurance)?($posts .= ',"insurance":{"amount":"'.$insurance['amount'].'", "currency": "PLN"}'):''; (!empty($cod))?($posts .= ',"cod":{"amount":"'.$cod['amount'].'", "currency": "PLN"}'):''; $posts .= '}]}'; return $this->request('organizations/'.(int)$organization_id.'/shipments/calculate', 'POST', $posts); } /** * Usunięcie przesyłki z systemu (tylko dla statusów created oraz offers_prepared) * @param $id_shipments * @return NULL[]|unknown[] */ public function deleteShipments($id_shipments) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('shipments/'.(int)$id_shipments, 'DELETE'); } /** * Pobranie informacji o przesyłce * @param int $id_shipments * @param int $organization_id * @return object of pack info */ public function getShipments($id_shipments) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('shipments/'.(int)$id_shipments, 'GET'); } /** * Pobranie etykiety wg. formatu i typu * @param int $shipment_id * @param string $format * @param string $type * @return file */ public function getLabel($shipment_id, $format, $type) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; $frm = ''; if ($format != 'PDF') { $frm = '&format='.Tools::strtolower($format); } return $this->request('shipments/'.(int)$shipment_id.'/label?type='.$type.$frm, 'GET', null, true); } /** * Pobranie etykiet * @param int $organization_id * @param array $shipment_ids * @param string $type * @param string $format * @return NULL[]|unknown[] */ public function getMultiLabels2($organization_id, $shipment_ids, $type, $format) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; $cunt = count($shipment_ids) - 1; foreach ($shipment_ids as $key => &$as) { if ($key == $cunt) { $as = '"'.$as.'"'; } else { $as = '"'.$as . '",'; } } $posts = '{ "format": "'.$format.'", "type" : "'.$type.'", "shipment_ids" : ['.implode(',', $shipment_ids).'] }'; return $this->request('organizations/'.$organization_id.'/shipments/labels', 'POST', $posts, true, 'labels'); } /** * Pobranie etykiet * @param int $organization_id * @param array $shipment_ids * @param string $type * @param string $format * @return NULL[]|unknown[] */ public function getMultiLabels($organization_id, $shipment_ids, $type, $format) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; $ship = '?format='.$format.'&type='.$type; foreach ($shipment_ids as $shipm) { $ship .= '&shipment_ids[]='.$shipm; } return $this->request('organizations/'.$organization_id.'/shipments/labels'.$ship, 'GET', null, true, 'labels'); } public function getReturnLabels($organization_id, $shipment_ids, $format) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; $posts = '{ "format": "'.$format.'", "shipment_ids" : ['.$shipment_ids.'] }'; $ship = '?shipment_ids[]='.$shipment_ids.'&format='.$format; return $this->request('organizations/'.$organization_id.'/shipments/return_labels'.$ship, 'GET', null, true, 'labels'); } /** * Pobranie informacji o przesyłce * @param int $tracking_number * @return object of package info */ public function getTracking($tracking_number) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('tracking/'.$tracking_number, 'GET'); } /** * Pobranie informacji o statusach Inpost * @return object of list */ public function getStatuses() { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('statuses?lang=pl_PL', 'GET'); } /** * Pobieranie informacji o przesylce * @param int $packcode - id paczki * @param int $organization_id - id organizacji * @return object of pack info */ public function searchPack($packcode, $organization_id) { $this->sandbox ? $this->api_url = self::API_ENDPOINT_SANDOX : $this->api_url = self:: API_ENDPOINT; return $this->request('organizations/'.$organization_id.'/shipments?id='.$packcode, 'GET'); } /** * Wygenerowanie danych do opcji "zamów kuriera" * @param array $package_ids * @param int $dispatch_point * @param int $organization_id * @return object of info */ public function setDispatchOrders($package_ids, $dispatch_point, $organization_id) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; if (!empty($package_ids)) { foreach ($package_ids as &$package_id) { $package_id = '"'.$package_id.'"'; } } $ids = implode(',', $package_ids); if ($dispatch_point == 0) { $posts = '{ "shipments": ['.$ids.'], "name" : "", "address": { "street": "'.Configuration::get('INPOSTSHIP_SENDER_STREET').'", "building_number": "'.Configuration::get('INPOSTSHIP_SENDER_BUILDING_NR').'", "city": "'.Configuration::get('INPOSTSHIP_SENDER_CITY').'", "post_code": "'.Configuration::get('INPOSTSHIP_SENDER_POSTCODE').'", "country_code": "PL" } }'; } else { $posts = '{ "shipments": ['.$ids.'], "name": "", "dispatch_point_id" : "'.(int)$dispatch_point.'" }'; } return $this->request('organizations/'.$organization_id.'/dispatch_orders', 'POST', $posts); } /** * Wygenerowanie zlecenia odbioru dla przesyłek * @param int $organization_id * @param array $shipment_ids * @param string $type * @param string $format * @return object of info */ public function getMultiDispatchOrder($organization_id, $shipment_ids, $type, $format) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; $shipments = ''; if (!empty($shipment_ids)) { foreach ($shipment_ids as $s) { $shipments .= "&shipment_ids[]=".$s; } } // nic nie robi if ($type) { $shipments .= ''; } return $this->request('organizations/'.$organization_id.'/dispatch_orders/printouts?format='.$format. $shipments, 'GET', null, true); } /** * Zlecenie odbioru przesyłki przez kuriera * @param int $package_id * @param int $dispatch_point * @param int $organization_id * @return object of info */ public function setDispatchOrder($package_id, $dispatch_point, $organization_id) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; if ($dispatch_point == 0) { $posts = '{ "shipments": ["'.(int)$package_id.'"], "address": { "street": "'.Configuration::get('INPOSTSHIP_SENDER_STREET').'", "building_number": "'.Configuration::get('INPOSTSHIP_SENDER_BUILDING_NR').'", "city": "'.Configuration::get('INPOSTSHIP_SENDER_CITY').'", "post_code": "'.Configuration::get('INPOSTSHIP_SENDER_POSTCODE').'", "country_code": "PL" } }'; } else { $posts = '{ "shipments": ["'.(int)$package_id.'"], "dispatch_point_id" : "'.(int)$dispatch_point.'" }'; } return $this->request('organizations/'.$organization_id.'/dispatch_orders', 'POST', $posts); } /** * Pobranie szczegółowych informacji nt. zlecenia odbioru przez kuriera * @param $dispatch_id int - number of dispatch ID * @return object of info */ public function getDispatchInfo($dispatch_id) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('dispatch_orders/'.(int)$dispatch_id, 'GET', null); } /** * Usunięcie zlecenia odbioru przez kuriera * TIP: działa tylko na statusach new oraz sent * @param $dispatch_id int - number of dispatch ID * @return object of info */ public function deleteDispatch($dispatch_id) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('dispatch_orders/'.(int)$dispatch_id, 'DELETE', null); } /** * Drukowanie zlecenia odbioru przez kuriera * format: PDF * @param $dispatch_id int - number of dispatch ID * @return object of info */ public function printDispatchPdf($dispatch_id) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('dispatch_orders/'.(int)$dispatch_id.'/printout?format=Pdf', 'GET', null, true); } public function calculateDispatches($organization_id, $dispatch_point_id) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; $posts = '{ "dispatch_point_id" : '.(int)$dispatch_point_id.', "shipments" : [] }'; return $this->request('organizations/'.(int)$organization_id.'/dispatch_orders/calculate', 'POST', $posts); } public function getDispatchOrder($organization_id) { $this->sandbox ? $this->api_url = $this->api_endpoint_sandbox_url : $this->api_url = $this->api_endpoint_url; return $this->request('organizations/'.(int)$organization_id.'/dispatch_orders', 'GET', null); } /** * * @param unknown $action * @param unknown $method * @param unknown $posts * @return NULL[]|unknown[] */ public function request($action, $method, $posts = null, $download = null, $name = null) { $url = $this->api_url.'v1/'.$action; if ($method == 'POST') { $post = $posts;//json_encode($posts, JSON_UNESCAPED_SLASHES); } else { $post = ''; } $authorization = "Authorization: Bearer ".$this->api_key; // $server = '91.216.25.111'; $server = '91.216.25.164'; $prev_server = $server; $resolveparam = [ $prev_server ? '-api-shipx-pl.easypack24.net:443:'.$prev_server : '', 'api-shipx-pl.easypack24.net:443:'.$server ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if ($download) { curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/pdf', $authorization)); } else { curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $authorization)); } curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RESOLVE, $resolveparam); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); if ($this->debug) { $fp = fopen(dirname(__FILE__).'/../log/errorlog'.date('YmdHis').'.txt', 'w'); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_STDERR, $fp); } else { if ($name == 'labels') { curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_VERBOSE, true); // curl_setopt($ch, CURLOPT_STDERR, $xxx); } } $result = curl_exec($ch); curl_close($ch); if ($download) { return $result; } if ($this->debug) { echo $url; echo "
";
print_r($posts);
echo "";
echo ""; print_r($result); echo ""; // exit(); } $result2 = json_decode($result); $request = array(); if (isset($result2->error)) { $request['error'] = $result2->message; } else { $request['error'] = null; } $request['result'] = $result2; return $request; } }