/** * Attempt to settle the payment with cashnet * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function settlePayment(\Jazzee\Entity\Payment $payment, \Foundation\Form\Input $input) { $client = new \SoapClient(self::CASHNET_WSDL); $parameters = array('OperatorID' => $this->_paymentType->getVar('operatorId'), 'Password' => $this->_paymentType->getVar('operatorPassword'), 'VirtualDirectory' => $this->_controller->getConfig()->getStatus() == 'PRODUCTION' ? self::CASHNET_VIRTUALDIRECTORY : self::CASHNET_TEST_VIRTUALDIRECTORY, 'TransactionNo' => $payment->getVar('tx')); $results = $client->CASHNetSOAPRequestInquiry(array('inquiryParams' => $parameters)); $xml = new \SimpleXMLElement($results->CASHNetSOAPRequestInquiryResult); if ($xml->result != 0) { return "Unable to get transaction details from cashnet for payment: {$payment->getId()}, transaction: {$payment->getVar('tx')} for applicant {$payment->getAnswer()->getApplicant()->getId()}. Cashnet said: {$xml->respmessage}"; } if ($xml->transactions[0]->transaction->txno == $payment->getVar('tx') and $xml->transactions[0]->transaction->totalamount == $payment->getAmount()) { if (strtolower($xml->transactions[0]->transaction->txstatus) == 'c') { $payment->settled(); } else { $payment->setVar('rejectedReason', $xml->transactions[0]->transaction->respmessage); $payment->rejected(); } return true; } else { throw new \Jazzee\Exception("Transaction details differ between cashnet and payment: {$payment->getId()} for applicant {$payment->getAnswer()->getApplicant()->getId()}."); } }
/** * Once checks have been cashed we settle the payment * @see ApplyPaymentInterface::settlePayment() */ public function settlePayment(\Jazzee\Entity\Payment $payment, \Foundation\Form\Input $input) { $payment->settled(); $payment->setVar('checkNumber', $input->get('checkNumber')); $payment->setVar('checkSettlementDate', $input->get('checkSettlementDate')); return true; }
/** * Attempt to settle the payment with authorize.net * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function settlePayment(\Jazzee\Entity\Payment $payment, \Foundation\Form\Input $input) { $transactionDetails = new \AuthorizeNetTD($this->_paymentType->getVar('gatewayId'), $this->_paymentType->getVar('gatewayKey')); $transactionDetails->setSandBox($this->_paymentType->getVar('testAccount')); //test accounts get sent to the sandbox // Get Transaction Details $transactionId = $payment->getVar('transactionId'); $response = $transactionDetails->getTransactionDetails($transactionId); if (!$response->response or $response->isError()) { throw new \Jazzee\Exception('Unable to get transaction details for payment #' . $payment->getId() . " transcation id {$transactionId} authorize.net said " . $response->getMessageText(), E_ERROR, 'There was a problem getting payment information.'); } //has this transaction has been settled already if ($response->xml->transaction->transactionStatus == 'settledSuccessfully') { $payment->settled(); $payment->setVar('settlementTimeUTC', (string) $response->xml->transaction->batch->settlementTimeUTC); return true; } else { if ($response->xml->transaction->transactionStatus == 'voided') { $payment->rejected(); $payment->setVar('rejectedReason', 'This payment was voided.'); return true; } } return "Unable to settle transaction #{$payment->getVar('transactionId')} authorize.net said: " . $response->getMessageText(); }
/** * @see ApplyPaymentInterface::settlePayment() */ function settlePayment(\Jazzee\Entity\Payment $payment, \Foundation\Form\Input $input) { $payment->settled(); return true; }