コード例 #1
0
ファイル: clickbank.php プロジェクト: alexanderTsig/arabic
 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);
 }
コード例 #2
0
ファイル: paymill-dd.php プロジェクト: alexanderTsig/arabic
 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));
 }
コード例 #3
0
 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);
     }
 }