예제 #1
0
 public function calculate_shipping($package = array())
 {
     $request = array('recipient' => array('address1' => $package['destination']['address'], 'address2' => $package['destination']['address_2'], 'city' => $package['destination']['city'], 'state_code' => $package['destination']['state'], 'country_code' => $package['destination']['country'], 'zip' => $package['destination']['postcode']), 'items' => array(), 'currency' => get_woocommerce_currency());
     foreach ($package['contents'] as $item) {
         if (!empty($item['data']) && ($item['data']->is_virtual() || $item['data']->is_downloadable())) {
             continue;
         }
         $request['items'][] = array('external_variant_id' => $item['variation_id'] ? $item['variation_id'] : $item['product_id'], 'quantity' => $item['quantity']);
     }
     if (!$request['items']) {
         return false;
     }
     try {
         $client = Printful_Integration::instance()->get_client();
     } catch (PrintfulException $e) {
         $this->set_error($e);
         return false;
     }
     try {
         $response = $client->post('shipping/rates', $request, array('expedited' => true));
         foreach ($response as $rate) {
             $rateData = array('id' => $this->id . '_' . $rate['id'], 'label' => $rate['name'], 'cost' => $rate['rate'], 'taxes' => false, 'calc_tax' => 'per_order');
             $this->add_rate($rateData);
         }
     } catch (PrintfulException $e) {
         $this->set_error($e);
         return false;
     }
 }
예제 #2
0
 /**
  * Allow remotely get plugin version for debug purposes
  */
 public function get_status()
 {
     $error = false;
     try {
         $client = Printful_Integration::instance()->get_client();
         $storeData = $client->get('store');
     } catch (Exception $e) {
         $error = $e->getMessage();
     }
     return array('version' => Printful_Base::VERSION, 'api_key' => !empty(Printful_Integration::instance()->settings['printful_key']), 'store_id' => !empty($storeData['id']) ? $storeData['id'] : false, 'error' => $error);
 }