protected static function handleReponse(TransactionData $txnData, $fields = array()) { if (!$txnData->getTransaction()) { return array(); } $methods = array('getAmount', 'getAmountRefunded', 'getCount', 'getPaymentMethod', 'getConsumerProtection', 'getStatus', 'getStatusReason', 'getStatusModifiedTime', 'getLanguageCode', 'getCurrency', 'getTransaction', 'getReason', 'getTime', 'getProjectId', 'getRecipientHolder', 'getRecipientAccountNumber', 'getRecipientBankCode', 'getRecipientCountryCode', 'getRecipientBankName', 'getRecipientBic', 'getRecipientIban', 'getSenderHolder', 'getSenderAccountNumber', 'getSenderBankCode', 'getSenderCountryCode', 'getSenderBankName', 'getSenderBic', 'getSenderIban'); // apply field list if ($fields) { $methods = array_intersect($methods, $fields); } $output = array(); foreach ($methods as $method) { $key = lcfirst(substr($method, 3)); switch ($method) { case 'getReason': $output[$key . '1'] = $txnData->{$method}(0, 0); $output[$key . '2'] = $txnData->{$method}(0, 1); break; default: $output[$key] = $txnData->{$method}(); } } return $output; }
/** * @param $transactionId * * @return array */ public function getTransactionData($transactionId) { $transactionData = new TransactionData($this->options['config_key']); $transactionData->addTransaction($transactionId); $transactionData->setApiVersion('2.0'); $transactionData->sendRequest(); $fields = array(); $methods = array('getAmount' => '', 'getAmountRefunded' => '', 'getCount' => '', 'getPaymentMethod' => '', 'getConsumerProtection' => '', 'getStatus' => '', 'getStatusReason' => '', 'getStatusModifiedTime' => '', 'getLanguageCode' => '', 'getCurrency' => '', 'getTransaction' => '', 'getReason' => array(0, 0), 'getUserVariable' => 0, 'getTime' => '', 'getProjectId' => '', 'getRecipientHolder' => '', 'getRecipientAccountNumber' => '', 'getRecipientBankCode' => '', 'getRecipientCountryCode' => '', 'getRecipientBankName' => '', 'getRecipientBic' => '', 'getRecipientIban' => '', 'getSenderHolder' => '', 'getSenderAccountNumber' => '', 'getSenderBankCode' => '', 'getSenderCountryCode' => '', 'getSenderBankName' => '', 'getSenderBic' => '', 'getSenderIban' => ''); foreach ($methods as $method => $params) { $varName = $method; $varName = strtolower(preg_replace('/([^A-Z])([A-Z])/', '$1_$2', substr($varName, 3))); if (count($params) == 2) { $fields[$varName] = $transactionData->{$method}($params[0], $params[1]); } elseif ($params !== '') { $fields[$varName] = $transactionData->{$method}($params); } else { $fields[$varName] = $transactionData->{$method}(); } } if ($transactionData->isError()) { $fields['error'] = $transactionData->getError(); } return $fields; }
/** * @param array|ArrayAccess $fields * @return TransactionData */ public function getTxnData($fields) { if (!is_array($fields) && !$fields instanceof \ArrayAccess) { throw new \RuntimeException('$fields must be array or implement ArrayAccess.'); } $data = new TransactionData($this->options['configkey']); $data->addTransaction($fields['txn']); $data->sendRequest(); return $data; }