protected function potentially_update_selected_payment_method_from_payment_methods($payment_methods) { $payment_method_count = count($payment_methods); // No payment methods at all? Clear anything we have stored if (0 === $payment_method_count) { $this->service_settings_store->set_selected_payment_method_id(0); return; } $payment_method_ids = array(); foreach ((array) $payment_methods as $payment_method) { $payment_method_id = intval($payment_method->payment_method_id); if (0 !== $payment_method_id) { $payment_method_ids[] = $payment_method_id; } } // Just one? Go ahead and use it if (1 === $payment_method_count) { $this->service_settings_store->set_selected_payment_method_id($payment_method_ids[0]); return; } // Is the stored method id not in the list? Select the first one $selected_payment_method_id = $this->service_settings_store->get_selected_payment_method_id(); if (!in_array($selected_payment_method_id, $payment_method_ids)) { $this->service_settings_store->set_selected_payment_method_id($payment_method_ids[0]); } }
public function update_items($request) { $request_body = $request->get_body(); $settings = json_decode($request_body, true, WOOCOMMERCE_CONNECT_MAX_JSON_DECODE_DEPTH); $order_id = $settings['order_id']; $settings['payment_method_id'] = $this->settings_store->get_selected_payment_method_id(); $settings['carrier'] = 'usps'; $settings['label_size'] = 'default'; $settings['ship_date'] = date('Y-m-d', time() + 86400); // tomorrow $service_names = array(); foreach ($settings['packages'] as $index => $package) { $service_names[] = $package['service_name']; unset($package['service_name']); $settings['packages'][$index] = $package; } $response = $this->api_client->send_shipping_label_request($settings); if (is_wp_error($response)) { $error = new WP_Error($response->get_error_code(), $response->get_error_message(), array('message' => $response->get_error_message())); $this->logger->log($error, __CLASS__); return $error; } $labels_order_meta = array(); $labels_data = array(); foreach ($response->labels as $index => $label_data) { if (isset($label_data->error)) { $error = new WP_Error($label_data->error->code, $label_data->error->message, array('message' => $label_data->error->message)); $this->logger->log($error, __CLASS__); return $error; } $labels_data[] = $label_data->label; $labels_order_meta[] = array('label_id' => $label_data->label->label_id, 'tracking' => $label_data->label->tracking_id, 'refundable_amount' => $label_data->label->refundable_amount, 'created' => $label_data->label->created, 'carrier_id' => $settings['carrier'], 'service_name' => $service_names[$index]); } update_post_meta($order_id, 'wc_connect_labels', json_encode($labels_order_meta)); return array('labels' => $labels_order_meta, 'success' => true); }