Inheritance: implements paywithamazon\HttpCurlInterface
 private function getCertificate($certificatePath)
 {
     $httpCurlRequest = new HttpCurl($this->ipnConfig);
     $response = $httpCurlRequest->httpGet($certificatePath);
     return $response;
 }
 private function invokePost($parameters)
 {
     $response = array();
     $statusCode = 200;
     $this->success = false;
     // Submit the request and read response body
     try {
         $shouldRetry = true;
         $retries = 0;
         do {
             try {
                 $this->constructUserAgentHeader();
                 $httpCurlRequest = new HttpCurl($this->config);
                 $response = $httpCurlRequest->httpPost($this->mwsServiceUrl, $this->userAgent, $parameters);
                 $curlResponseInfo = $httpCurlRequest->getCurlResponseInfo();
                 $statusCode = $curlResponseInfo["http_code"];
                 $this->logMessage($this->userAgent);
                 $response = array('Status' => $statusCode, 'ResponseBody' => $response);
                 $statusCode = $response['Status'];
                 if ($statusCode == 200) {
                     $shouldRetry = false;
                     $this->success = true;
                 } elseif ($statusCode == 500 || $statusCode == 503) {
                     $shouldRetry = true;
                     if ($shouldRetry && strtolower($this->config['handle_throttle'])) {
                         $this->pauseOnRetry(++$retries, $statusCode);
                     }
                 } else {
                     $shouldRetry = false;
                 }
             } catch (\Exception $e) {
                 throw $e;
             }
         } while ($shouldRetry);
     } catch (\Exception $se) {
         throw $se;
     }
     $this->logMessage($this->sanitizeResponseData($response['ResponseBody']));
     return $response;
 }