/** * Invoke request and return response */ private function _invoke(array $parameters) { $actionName = $parameters["Action"]; $response = array(); $responseBody = null; $statusCode = 200; /* Submit the request and read response body */ try { if (empty($this->_config['ServiceURL'])) { throw new OffAmazonPaymentsService_Exception(array('ErrorCode' => 'InvalidServiceURL', 'Message' => "Missing serviceUrl configuration value. You may obtain a list of valid MWS URLs by consulting the MWS Developer's Guide, or reviewing the sample code published along side this library.")); } /* Add required request parameters */ $parameters = $this->_addRequiredParameters($parameters); $shouldRetry = true; $retries = 0; do { try { $response = $this->_httpPost($parameters); if ($response['Status'] === 200) { $shouldRetry = false; } else { if ($response['Status'] === 500 || $response['Status'] === 503) { require_once 'OffAmazonPaymentsService/Model/ErrorResponse.php'; $errorResponse = OffAmazonPaymentsService_Model_ErrorResponse::fromXML($response['ResponseBody']); $errors = $errorResponse->getError(); $shouldRetry = $errors[0]->getCode() === 'RequestThrottled' ? false : true; if ($shouldRetry) { $this->_pauseOnRetry(++$retries, $response['Status']); } else { throw $this->_reportAnyErrors($response['ResponseBody'], $response['Status'], $response['ResponseHeaderMetadata']); } } else { throw $this->_reportAnyErrors($response['ResponseBody'], $response['Status'], $response['ResponseHeaderMetadata']); } } /* Rethrow on deserializer error */ } catch (Exception $e) { require_once 'OffAmazonPaymentsService/Exception.php'; if ($e instanceof OffAmazonPaymentsService_Exception) { throw $e; } else { require_once 'OffAmazonPaymentsService/Exception.php'; throw new OffAmazonPaymentsService_Exception(array('Exception' => $e, 'Message' => $e->getMessage())); } } } while ($shouldRetry); } catch (OffAmazonPaymentsService_Exception $se) { throw $se; } catch (Exception $t) { throw new OffAmazonPaymentsService_Exception(array('Exception' => $t, 'Message' => $t->getMessage())); } return array('ResponseBody' => $response['ResponseBody'], 'ResponseHeaderMetadata' => $response['ResponseHeaderMetadata']); }
/** * Invoke request and return response */ private function _invoke(array $parameters) { $actionName = $parameters["Action"]; $response = array(); $responseBody = null; $statusCode = 200; /* Submit the request and read response body */ try { /* Add required request parameters */ $parameters = $this->_addRequiredParameters($parameters); $shouldRetry = true; $retries = 0; do { try { $response = $this->_httpPost($parameters); if ($response['Status'] == 200) { $shouldRetry = false; } else { if ($response['Status'] == 500 || $response['Status'] == 503) { $errorResponse = OffAmazonPaymentsService_Model_ErrorResponse::fromXML($response['ResponseBody']); $errors = $errorResponse->getError(); $shouldRetry = $errors[0]->getCode() === 'RequestThrottled' ? false : true; if ($shouldRetry) { $this->_pauseOnRetry(++$retries, $response['Status']); } else { throw $this->_reportAnyErrors($response['ResponseBody'], $response['Status'], $response['ResponseHeaderMetadata']); } } else { throw $this->_reportAnyErrors($response['ResponseBody'], $response['Status'], $response['ResponseHeaderMetadata']); } } /* Rethrow on deserializer error */ } catch (Exception $e) { if ($e instanceof OffAmazonPaymentsService_Exception) { throw $e; } else { throw new OffAmazonPaymentsService_Exception(array('Exception' => $e, 'Message' => $e->getMessage())); } } } while ($shouldRetry); } catch (OffAmazonPaymentsService_Exception $se) { throw $se; } catch (Exception $t) { throw new OffAmazonPaymentsService_Exception(array('Exception' => $t, 'Message' => $t->getMessage())); } return array('ResponseBody' => $response['ResponseBody'], 'ResponseHeaderMetadata' => $response['ResponseHeaderMetadata']); }