function resendPostback() { if ($this->plugin->getConfig('resend_postback')) { $urls = $this->plugin->getConfig('resend_postback_urls'); $urls = explode("\n", $urls); $urls = array_filter(array_map('trim', $urls)); foreach ($urls as $url) { try { $tm = microtime(true); $this->log->add("Resending postback to [{$url}]"); if ($url == $this->plugin->getPluginUrl('ipn')) { throw new Am_Exception_Configuration("DO NOT CONFIGURE RESENDING IPN TO ITSELF!"); } $req = new Am_HttpRequest($url); $req->setConfig('connect_timeout', 1000); $req->setConfig('timeout', 2000); $method = strtoupper($this->request->getMethod()); $req->setMethod($method); if ($method == 'POST') { foreach ($this->request->getPost() as $k => $v) { $req->addPostParameter($k, $v); } } else { $arr = $this->request->getQuery(); $req->setUrl($req->getUrl() . '?' . http_build_query($arr)); } $req->send(); $tm = sprintf('%.3f', microtime(true) - $tm); $this->log->add("Postback resent succesfully ({$tm} sec)"); } catch (Exception $e) { $tm = sprintf('%.3f', microtime(true) - $tm); $this->log->add("Cannot resend postback ({$tm} sec)"); $this->log->add($e); } } } }
/** * Send response handle failure, return parsed array * @return array */ public function sendRequest(InvoiceLog $log) { $log->paysys_id = $this->plugin->getId(); $log->add($this); $response = $this->send(); $log->add($response); if ($response->getStatus() != 200) { throw new Am_Exception_InputError("Error communicating to PayPal, unable to finish transaction. Your account was not billed, please try again"); } parse_str($response->getBody(), $vars); if (!count($vars)) { throw new Am_Exception_InputError("Error communicating to PayPay, unable to parse response "); } return $vars; }