public function processRefund(InvoicePayment $payment, Am_Paysystem_Result $result, $amount) { $request = $this->createHttpRequest(); $ps = new stdclass(); $ps->type = 'rfnd'; $ps->reason = 'ticket.type.refund.8'; $ps->comment = 'refund request for aMember user (' . $payment->getUser()->login . ')'; if (doubleval($amount) == doubleval($payment->amount)) { $ps->refundType = 'FULL'; } else { $ps->refundType = 'PARTIAL_AMOUNT'; $ps->refundAmount = $amount; } $get_params = http_build_query((array) $ps, '', '&'); $request->setUrl($s = 'https://api.clickbank.com/rest/1.3/tickets/' . $payment->receipt_id . "?{$get_params}"); $request->setHeader(array('Content-Length' => '0', 'Accept' => 'application/xml', 'Authorization' => $this->getConfig('dev_key') . ':' . $this->getConfig('clerk_key'))); $request->setMethod(Am_HttpRequest::METHOD_POST); $this->logRequest($request); $request->setMethod('POST'); $response = $request->send(); $this->logResponse($response); if ($response->getStatus() != 200 && $response->getBody() != 'Refund ticket already open') { throw new Am_Exception_InputError("An error occurred during refund request"); } $trans = new Am_Paysystem_Transaction_Manual($this); $trans->setAmount($amount); $trans->setReceiptId($payment->receipt_id . '-clickbank-refund'); $result->setSuccess($trans); }
public function __construct(Am_Paysystem_Abstract $plugin, InvoicePayment $payment, $amount) { $this->plugin = $plugin; $this->user = $payment->getUser(); $this->invoice = $payment->getInvoice(); $this->request = new Am_HttpRequest(Am_Paysystem_PaymillDd::API_ENDPOINT . 'refunds/' . $payment->receipt_id, Am_HttpRequest::METHOD_POST); $this->request->setAuth($this->plugin->getConfig('private_key'), ''); $this->request->addPostParameter(array('amount' => ($amount ? $amount : $payment->amount) * 100)); }
public function processRefund(InvoicePayment $payment, Am_Paysystem_Result $result, $amount) { $isVoid = $payment->amount == $amount; if ($isVoid) { $request = $this->createHttpRequest(); $request->addPostParameter('x_Type', 'VOID'); $request->addPostParameter('x_Trans_Id', $payment->transaction_id); $request = $this->_sendRequest($request); $transaction = new Am_Paysystem_Transaction_AuthorizeAim_Refund($this, $payment->getInvoice(), $request, $payment->transaction_id); $transaction->run($result); } if (!$isVoid || $result->isFailure()) { // Transaction is settled already, attempt to run CREDIT $ccRecord = $this->getDi()->getInstance()->CcRecordTable->findFirstBy(array('user_id' => $payment->getUser()->pk())); if (!$ccRecord) { $result->setFailed('User does not have cc record on file'); return; } $result->reset(); $cc = str_replace('*', '', $ccRecord->cc); $request = $this->createHttpRequest(); $request->addPostParameter('x_Type', 'CREDIT'); $request->addPostParameter('x_Trans_Id', $payment->transaction_id); $request->addPostParameter('x_card_num', $cc); $request->addPostParameter('x_Amount', $amount); $request = $this->_sendRequest($request); $transaction = new Am_Paysystem_Transaction_AuthorizeAim_Refund($this, $payment->getInvoice(), $request, $payment->transaction_id); $transaction->run($result); } }