|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.07.2012, 11:41 | #1 |
Регистрация: 16.07.2012
Сообщений: 6
|
Интересует система оплаты Orbital Paymentech
Интересует система оплаты Orbital Paymentech
Добрый день! Поискав материалы в Google написал такой класс: // file Orbital.php <?php class Orbital { protected $_url; protected $_payment = array(); protected $_billingAddress = array(); protected $_order = array(); protected $_amount; protected $_configData = array(); public function __construct( $url, $payment, $billingAddress, $order, $amount, $configData ) { $this->_url = $url; $this->_payment = $payment; $this->_billingAddress = $billingAddress; $this->_order = $order; $this->_amount = $amount; $this->_configData = $configData; } public function callDoDirectPayment() { $payment = $this->_payment; $billing = $this->_billingAddress; $order = $this->_order; $configData = $this->_configData; $amount = $this->_amount; if (strlen($payment['CcExpMonth'])==1) $exp="0".$payment['CcExpMonth'].substr($payment['CcExpYear'],-2); else $exp=$payment['CcExpMonth'].substr($payment['CcExpYear'],-2); $amt=str_replace('.','',$amount); $xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; $xml .= "<Request>"; $xml .= "<NewOrder>"; $xml .= "<IndustryType>EC</IndustryType>"; $xml .= "<MessageType>AC</MessageType>"; $xml .= "<BIN>".htmlentities(trim($configDa ta['bin_no']),ENT_QUOTES, 'UTF-8')."</BIN>"; $xml .= "<MerchantID>".htmlentities(trim($c onfigData['merchant_id']),ENT_QUOTES, 'UTF-8')."</MerchantID>"; $xml .= "<TerminalID>".htmlentities(trim($c onfigData['terminal_id']),ENT_QUOTES, 'UTF-8')."</TerminalID>"; $xml .= "<AccountNum>".htmlentities(trim($p ayment['CcNumber']),ENT_QUOTES, 'UTF-8')."</AccountNum>"; $xml .= "<Exp>".htmlentities(trim($exp),ENT _QUOTES, 'UTF-8')."</Exp>"; if (($payment['CcType']=='VI') || ($payment['CcType']=='DI')) $xml .= "<CardSecValInd>1</CardSecValInd>"; $xml .= "<CardSecVal>".htmlentities(trim($p ayment['CcCid']),ENT_QUOTES, 'UTF-8')."</CardSecVal>"; $xml .= "<AVSzip>".htmlentities(trim($billi ng['Postcode']),ENT_QUOTES, 'UTF-8')."</AVSzip>"; $xml .= "<AVSaddress1>".htmlentities(trim($ billing['Street1']),ENT_QUOTES, 'UTF-8')."</AVSaddress1>"; $xml .= "<AVSaddress2>".htmlentities(trim($ billing['Street2']),ENT_QUOTES, 'UTF-8')."</AVSaddress2>"; $xml .= "<AVScity>".htmlentities(trim($bill ing['City']),ENT_QUOTES, 'UTF-8')."</AVScity>"; $xml .= "<AVSstate>CA</AVSstate>"; $xml .= "<AVSname>".htmlentities(trim($bill ing['Firstname']),ENT_QUOTES, 'UTF-8')."</AVSname>"; $xml .= "<OrderID>".htmlentities(trim($orde r['IncrementId']),ENT_QUOTES, 'UTF-8')."</OrderID>"; $xml .= "<Amount>".htmlentities(trim($amt), ENT_QUOTES, 'UTF-8')."</Amount>"; $xml .= "<Comments>AC</Comments>"; $xml .= "<ShippingRef></ShippingRef>"; $xml .= "</NewOrder>"; $xml .= "</Request>"; $resultArr = $this->call($xml); if ($resultArr === false) return false; return $resultArr; } |
16.07.2012, 11:41 | #2 |
Регистрация: 16.07.2012
Сообщений: 6
|
public function call($xml)
{ $url = $this->_url; $header= "POST /AUTHORIZE HTTP/1.0\r\n"; $header.= "MIME-Version: 1.0\r\n"; $header.= "Content-type: application/PTI49\r\n"; $header.= "Content-length: " .strlen($xml) . "\r\n"; $header.= "Content-transfer-encoding: text\r\n"; $header.= "Request-number: 1\r\n"; $header.= "Document-type: Request\r\n"; $header.= "Interface-Version: Test 1.4\r\n"; $header.= "Connection: close \r\n\r\n"; $header.= $xml; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); if (curl_errno($ch)) print curl_error($ch); else curl_close($ch); $xml_parser = xml_parser_create(); xml_parser_set_option($xml_parser,X ML_OPTION_CASE_FOLDING,0); xml_parser_set_option($xml_parser,X ML_OPTION_SKIP_WHITE,1); xml_parse_into_struct($xml_parser, $response, $vals, $index); xml_parser_free($xml_parser); $parsedResArr = $this->parseXmlResponse($vals); var_dump($parsedResArr); if (@$parsedResArr['ProcStatus'] == 0) { if (@$parsedResArr['ApprovalStatus'] == 1) return $parsedResArr; } else { if ($parsedResArr['ProcStatus']!=0) { $message = 'System Error : '.$parsedResArr['StatusMsg']; $message = str_replace(' ','',$message); return $message; } else if ( $parsedResArr['ApprovalStatus'] == 0 || $parsedResArr['ApprovalStatus'] == 2 ) { $message = 'Card is in Decline State'; return $message; } else if ($parsedResArr['CVV2RespCode']!='M') { $message ='Cardholder Verification : '.$parsedResArr['RespMsg']; $message = str_replace(' ','',$message); return $message; } else if( $parsedResArr['AVSRespCode'] !='Z' || $parsedResArr['AVSRespCode'] !='9' || $parsedResArr['AVSRespCode'] !='H' ) { $message ='Address Verfication : '.$parsedResArr['RespMsg']; $message = str_replace(' ','',$message); return $message; } } return false; } private function parseXmlResponse($xmlResponse) { $newResArr = array(); foreach ($xmlResponse as $val) { $tagval=$val['tag']; if (($val['tag']!='Response') && ($val['tag']!='NewOrderResp')) { if (isset($val['value'])) $newResArr[$tagval]=$val['value']; else $newResArr[$tagval]=''; } } return $newResArr; } } ?> // file index.php <?php include_once "Orbital.php"; //$url = 'https://orbital1.paymentech.net'; $url = 'https://orbitalvar1.paymentech.net'; $payment['CcNumber'] = '2456750000012345'; $payment['CcType'] = 'VI'; $payment['CcCid'] = '124'; $payment['CcExpMonth'] = '01'; $payment['CcExpYear'] = '13'; $billing['Postcode'] = '25541'; $billing['Street1'] = '123 Test Street'; $billing['Street2'] = 'Suite 350'; $billing['City'] = 'Test City'; $billing['Firstname'] = 'Jon Smith'; $order['IncrementId'] = '1'; $amount = '100'; $configData['bin_no'] = '000002'; $configData['merchant_id'] = '22200208567'; $configData['terminal_id'] = '001'; $orbital = new Orbital( $url, $payment, $billing, $order, $amount, $configData ); var_dump( $orbital->callDoDirectPayment() ); ?> Но возникает ошибка: array 'QuickResponse' => string '' (length=0) 'ProcStatus' => string '20412' (length=5) 'StatusMsg' => string 'Precondition Failed: Security Information is missing' (length=52) string 'SystemError:PreconditionFailed:Sec urityInformationismissing' (length=59) |
16.07.2012, 11:42 | #3 |
Регистрация: 16.07.2012
Сообщений: 6
|
Кто работал с системой? Говорят, что нужно создать тестовый профиль и подписать контракт. Опишите выход из этой ситуации. И еще если есть - подскажите где есть ZF класс.
На официальном сайте документации есть только на других языках http://download.chasepaymentech.com. На ZF или чистом PHP нет. |
16.07.2012, 15:42 | #4 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,160
|
а че так кода мало то привели? надо было еще постов 20 создать уж....
а ваще вами поражаюсь.... ))) 4 сообщения и ни грамма мозгов. выход из ситуации - создать тестовый профиль и подписать контракт ...))) то что вы привели выше - самый что ни на есть php |
17.07.2012, 13:35 | #5 |
Регистрация: 16.07.2012
Сообщений: 6
|
Добрый день.
Выше я подал PHP код, который сам написал. Есть еще здесь все-таки умные и добрые люди? Что не обзывают а дадут хороший ответ? Я в PHP коде сделал ошибку? Кто работал с этой системой? |
17.07.2012, 14:21 | #6 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,160
|
пишите нормально посты - будет нормальное отношение.
1. Судя по тому что написано в тексте ошибки - не хватает каких то секьюрных данных обычно это бывает некий секъюрити код.. который комбинируют с передаваемыми параметрами - получают некий хэш и его передают ... по этому отпечатку система понимает что все ок.. и это именно тот мерчант. а вообще - нужно подробно вникать в документацию именно этой системы.. смотреть примеры и реализовывать... это занимает вермя... а время - деньги... сами понимаете. другое дело - если вы приводите какой то простой код.. .который на 10 строках и многие это делали- тогда можно ждать кучу отзывов о том где ошибка.... в вашем же случае - платежн система довольно экзотическая.. не думаю что найдется еще кто нибудь... кто её юзает |
23.07.2012, 12:58 | #7 |
Регистрация: 16.07.2012
Сообщений: 6
|
не понятно зачем нужно было хамить, даже если вы никогда не ошибаетесь и всегда пишете без ошибок
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ЕАИСТО (единая автоматизированная информационная система технического осмотра)система | ioff83 | HTML и CSS | 0 | 09.01.2012 16:43 |
Интересует разработки игр | bulochkin2 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 17.05.2011 14:24 |
Интересует несколько слов | Maxxtro123 | Помощь студентам | 0 | 19.04.2011 23:00 |
Новая система оплаты труда | Utkin | Свободное общение | 7 | 24.04.2009 17:13 |
Интересует удаленная работа | Ксенька | Фриланс | 1 | 05.11.2008 06:05 |