Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2012, 11:41   #1
volodja.volodja.85
 
Регистрация: 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;
}
volodja.volodja.85 вне форума Ответить с цитированием
Старый 16.07.2012, 11:41   #2
volodja.volodja.85
 
Регистрация: 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)
volodja.volodja.85 вне форума Ответить с цитированием
Старый 16.07.2012, 11:42   #3
volodja.volodja.85
 
Регистрация: 16.07.2012
Сообщений: 6
По умолчанию

Кто работал с системой? Говорят, что нужно создать тестовый профиль и подписать контракт. Опишите выход из этой ситуации. И еще если есть - подскажите где есть ZF класс.
На официальном сайте документации есть только на других языках http://download.chasepaymentech.com. На ZF или чистом PHP нет.
volodja.volodja.85 вне форума Ответить с цитированием
Старый 16.07.2012, 15:42   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

а че так кода мало то привели? надо было еще постов 20 создать уж....
а ваще вами поражаюсь.... ))) 4 сообщения и ни грамма мозгов.
выход из ситуации - создать тестовый профиль и подписать контракт ...)))
то что вы привели выше - самый что ни на есть php
ADSoft вне форума Ответить с цитированием
Старый 17.07.2012, 13:35   #5
volodja.volodja.85
 
Регистрация: 16.07.2012
Сообщений: 6
По умолчанию

Добрый день.
Выше я подал PHP код, который сам написал. Есть еще здесь все-таки умные и добрые люди? Что не обзывают а дадут хороший ответ? Я в PHP коде сделал ошибку? Кто работал с этой системой?
volodja.volodja.85 вне форума Ответить с цитированием
Старый 17.07.2012, 14:21   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

пишите нормально посты - будет нормальное отношение.
1. Судя по тому что написано в тексте ошибки - не хватает каких то секьюрных данных
обычно это бывает некий секъюрити код.. который комбинируют с передаваемыми параметрами - получают некий хэш и его передают ... по этому отпечатку система понимает что все ок.. и это именно тот мерчант.
а вообще - нужно подробно вникать в документацию именно этой системы.. смотреть примеры и реализовывать... это занимает вермя... а время - деньги... сами понимаете.
другое дело - если вы приводите какой то простой код.. .который на 10 строках и многие это делали- тогда можно ждать кучу отзывов о том где ошибка.... в вашем же случае - платежн система довольно экзотическая.. не думаю что найдется еще кто нибудь... кто её юзает
ADSoft вне форума Ответить с цитированием
Старый 23.07.2012, 12:58   #7
volodja.volodja.85
 
Регистрация: 16.07.2012
Сообщений: 6
По умолчанию

не понятно зачем нужно было хамить, даже если вы никогда не ошибаетесь и всегда пишете без ошибок
volodja.volodja.85 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЕАИСТО (единая автоматизированная информационная система технического осмотра)система 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