PDA

Zobacz pełną wersję : Integracja z pasaż.onet.pl



marcin_olo
21-08-2006, 10:33
Czy integrował juz ktoś VM z pasażem Onetu? Próbuję właśnie to zrobić, ale instrukcja jaką daje Onet jest dla mnie bardzo uboga, czy mógłby mi ktoś dać jakieś wskazówki jak to zrobić?
Wiem, że potrzebny jest skrypt, który będzie komunikował się z onetem podczas transakcji, ale gdzie go podpiąć (co trzeba zmodyfikować w VM) i jak on mniej więcej ma wyglądać?
Będę szczerze wdzięczny za wszelaką pomoc.

marcin_olo
23-08-2006, 14:47
Ok, próbowałem coś stworzyć samemu i tak, napisałem funkcję, która komunikuje się z pasażem onetu, ale jak ją podpinam do sklepu (niestety na razie tylko w zmiany w kodzie plików bo nie potrafię jeszcze pisać własnych komponentów/rozszerzeń :( ) to niestety sklep przestaje mi działać, tzn wszystkie zmiany zachodzą tak jak powinny, zarówno te oryginalne ze sklepu jak i z mojej funkcji, ale w przeglądarce pojawia mi się pusta strona. Czy ktoś mógłby mi w tym pomóc?

Tutaj zmiany jakie zrobiłem w pliku i moja funkcja.
Zmiany w pliku: administrator\components\com_virtuemart\classes\ps _checkout.php


/* Get the order id just stored */

$q = "SELECT order_id FROM #__{vm}_orders WHERE order_number = ";
$q .= "'" . $order_number . "'";

$db->query($q);
$db->next_record();

$d["order_id"] = $order_id = $db->f("order_id");

/*moje zmiany start*/
include_once( CLASSPATH. "onet.php" );
onet ( $d["order_id"], $order_total, 1 );
/*moje zmiany koniec*/


/**
* Insert the initial Order History.
*/
//dalej juz bez zmian

Funkcja:


<?php


function onet ( $order_id = 0, $amount = 0, $type = null ) {


$amount = $amount * 100; //kwoto w groszach

$dbo = new ps_DB();
//jeśli zamówienie akceptowane przez klienta to dajemy typ 1...
if ($type == 1 ) {
$sql = "INSERT INTO #__{vm}_onet (order_id, amount, type) VALUES ('".$order_id."', '".$amount."', 1)";

$dbo->query($sql) or die($dbo->getErrorMsg());
$dbo->next_record();

}
else { //...a typ 2 jeśli przez sklep

$sql = "SELECT type FROM #__{vm}_onet WHERE order_id = ".$order_id." ";
$dbo->query($sql) or die($dbo->getErrorMsg());
$dbo->next_record();
print_r("cos");
if ( $dbo->f("type") == 1 ) {
$sql = "UPDATE #__{vm}_onet SET type = 2 WHERE order_id = ".$order_id." ";

$dbo->query($sql) or die($dbo->getErrorMsg());
$dbo->next_record();
}
else return false;
}
$transactionId = md5($order_id);

/* Łączysz się z hostem */
$resPolalczenie = fsockopen ( "partnerzy.pasaz.onet.pl", 80 );

if ( $resPolalczenie ) {
/* Przygotowujesz żadanie do transaction wraz za parametrami */
$strHeaders = 'GET transaction?shopId=dfd8eb6cffffffc0000eacbef72b569 2&transactionId='.$transactionId.'&currency=PLN&amount='.$amount.'&type='.$type.' HTTP/1.0' . "\r\n";
$strHeaders .= 'Host: partnerzy.pasaz.onet.pl' . "\r\n";
/* Przedstawiasz się */
$strHeaders .= 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6' . "\r\n\r\n";

/* Wysyłasz żądanie */
fputs ( $resPolalczenie, $strHeaders );

/* Zamykasz połączenie */
fclose ( $resPolalczenie );
return true;
}
elseif ( isset ($_GET['transactionId']) ) {
$id = $_GET['transactionId'];
$sql = "SELECT order_id FROM #__{vm}_onet WHERE md5(order_id) = ".$order_id." ";

$wykonaj = $dbo->query($sql) or die($dbo->getErrorMsg());

if ( $dbo->num_rows() == 1 ) {
echo "OK";
return true;
}
else {
echo "ERROR";
return true;
}
}
}
?>

Dylek
24-09-2006, 19:25
I jaki jest final tych zmagan?

keran
26-03-2008, 18:57
No właśnie. Czy ktoś przeprowadził już integracje VM z pasażem onetu?
Proszę o odpowiedź na forum lub PW