/** * @param Response\TransactionInfo $response */ public function transactionInfoResponse(Response\TransactionInfo $response) { $transactionData = []; if (null !== $response->getApiResponse('a001')) { parse_str($response->getApiResponse('a001'), $transactionData); } $transactionInfo = function ($key) use($transactionData) { return false === isset($transactionData[$key]) ? null : $transactionData[$key]; }; $response->setSuccess($transactionInfo('FinalStatus') === 'success'); if ($transactionInfo('FinalStatus') !== null) { $creditCard = new Helper\CreditCard(); $cardExp = $transactionInfo('card-exp'); $cardExpMonth = null; $cardExpYear = null; if (sizeOf($cardExp)) { list($cardExpMonth, $cardExpYear) = explode('/', $cardExp); $cardExpYear += 2000; $creditCard->setCardExpiry($cardExpMonth, $cardExpYear); } $creditCard->setName($transactionInfo('card-name')); $creditCard->setAddress1($transactionInfo('card-address1')); $creditCard->setAddress2($transactionInfo('card-address2')); $creditCard->setCity($transactionInfo('card-city')); $creditCard->setState($transactionInfo('card-state')); $creditCard->setZipCode($transactionInfo('card-zip')); $creditCard->setCountry($transactionInfo('card-country')); $creditCard->setCardNumber($transactionInfo('card-number')); $response->setCreditCard($creditCard); $response->setAmount($transactionInfo('card-amount')); $response->setOperation($transactionInfo('operation')); $response->setDate(new \DateTime($transactionInfo('trans_date'))); } }
/** * @param Response\TransactionInfo $response */ public function transactionInfoResponse(Response\TransactionInfo $response) { $transactionData = []; if (null !== $response->getApiResponse('a001')) { parse_str($response->getApiResponse('a001'), $transactionData); } $transactionInfo = function ($key) use($transactionData) { return false === isset($transactionData[$key]) ? null : $transactionData[$key]; }; $this->setSuccess($response, $transactionInfo('status') === 'Approved'); if ($transactionInfo('status') !== null) { $creditCard = new Helper\CreditCard(); $cardExp = $transactionInfo('expiration'); if (sizeOf($cardExp)) { $creditCard->setCardExpiry(substr($cardExp, 0, 2), (int) substr($cardExp, 2) + 2000); } $creditCard->setCardNumber($transactionInfo('account')); $response->setCreditCard($creditCard); $response->setAmount($transactionInfo('total')); $response->setOperation($transactionInfo('trantype')); $response->setVoided($transactionInfo('voided') === 'true'); $response->setDate(new \DateTime($transactionInfo('transdatetime'))); } }
/** * @param Helper\Transaction $transaction * @param callable $success * @param callable $failure * * @return Response\TransactionInfo */ public final function transactionInfo(Helper\Transaction $transaction, callable $success, callable $failure) { $this->apiCheck(__FUNCTION__); $response = new Response\TransactionInfo($this->getApi()); $response->setTransaction($transaction); $this->execute($response, __FUNCTION__, $success, $failure); return $response; }