/** * * * * */ public function get_rates( $order, $shipment, $package = '' ) { $this->get_auth(); $address = $this->account_info->Address; $authenticator = $this->authenticator; $service = $this->get_service( $order ); $service_code = $this->service_types[$service]; $total = 0.00; $packages = empty( $package ) ? $shipment['_packages'] : (array)$shipment['_packages'][$package]; foreach( $packages as $package ) { $type = $this->get_package_type( $package ); $params = array( 'Authenticator' => $authenticator, 'Rate' => array ( 'FromZIPCode' => $address->ZIPCode, 'ServiceType' => $service_code, 'WeightLb' => $package->weight, 'PackageType' => $type, 'Length' => $package->length, 'Width' => $package->width, 'Height' => $package->height, 'ShipDate' => date( 'Y-m-d' ), ) ); if( in_array( $order->shipping_country, $this->domestic ) ) { $params['Rate']['ToZIPCode'] = strlen( $order->shipping_postcode > 5 ) ? substr( $order->shipping_postcode, 0, 5 ) : $order->shipping_postcode; } else { $params['Rate']['ToCountry'] = $order->shipping_country; $params['Rate']['DeclaredValue'] = $order->get_subtotal(); } $rate = $this->stamps->getRates( $params ); if( is_soap_fault( $rate ) ) { slp_ajax_functions::error_handler( __FUNCTION__, __CLASS__, __LINE__, $rate->faultstring ); } else { $authenticator = $rate->Authenticator; unset( $rate->Rates->Rate->AddOns ); $total += $rate->Rates->Rate->Amount; $package->Rate = $rate->Rates->Rate; $package->PackageType = $type; } } $shipment['_packages'] = $packages; $shipment['_shipping_cost'] = $total; $xml = array( 'ShippingTotal' => $total ); slp_ajax_functions::confirm_rates( $order, $shipment ); }
/** * * * * */ public function get_rates( $order, $shipment ) { $package_requests = $this->get_package_request( $shipment['_packages'] ); //Create XML for Shipment Confirm Request $request = $this->xml_header(); $request .= "<ShipmentConfirmRequest xml:lang='en-US'> <Request> <RequestAction>ShipConfirm</RequestAction> <RequestOption>nonvalidate</RequestOption> </Request> <TransactionReference> <CustomerContext>Shipping Label Pro</CustomerContext> </TransactionReference> <Shipment>"; $request .= isset( $shipment['_customs'] ) ? $this->get_customs( $order, $shipment ) : ''; $request .= $this->get_shipper(); $request .= $this->get_shipping_address( $order ); $request .= " <PaymentInformation> <Type>01</Type> <Prepaid> <BillShipper> <AccountNumber>" . $this->settings['shipper_number'] . "</AccountNumber> </BillShipper> </Prepaid> </PaymentInformation>"; $request .= $this->get_service_code( $order ); foreach ( $package_requests as $package_request ) { $request .= $package_request; } $request .= " </Shipment> <LabelSpecification> <LabelPrintMethod> <Code>GIF</Code> <Description>gif file</Description> </LabelPrintMethod> <HTTPUserAgent>Mozilla/4.5</HTTPUserAgent> <LabelImageFormat> <Code>GIF</Code> </LabelImageFormat> </LabelSpecification> </ShipmentConfirmRequest>"; $request = str_replace( array( "\n", "\r" ), '', $request ); //var_dump( htmlentities( $request ) ); //send, receive and parse xml response $response = $this->xml_request( $request, $this->endpoints['production'] . 'ShipConfirm' ); //var_dump( $response ); $shipment['_shipment_digest'] = (string)$response->ShipmentDigest; $shipment['_shipping_cost'] = (float)$response->ShipmentCharges->TotalCharges->MonetaryValue; slp_ajax_functions::confirm_rates( $order, $shipment ); }