Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблема с FedEx службаой


Автор: paul ryazanov 20.11.2002, 02:32
Мне нужно заполнять форму в соответствии с требованиями по доставке:
страна для доставки, сроки доставки ... пересылать на FedEx и возвращать сумму в $, за которую FedEx это сделает и показывать оную клиенту.

Проблема:
искал скрипт для данного задания по пересылке и возврату данных FedEx на Google, но там ссылки на старые скрипты, которые не работают. Причина в том, что скрипт на которые посылают данные в FedEx указан не верно и пишет, что страница не найдена.

Буду признателен за помощь, может у кого есть "свежий" скрипт для данной задачи, хотя даже обычная ссылка на скрипт-обработчик таких запросов на FedEx очень поможет (сам раздолбаю далее)
Заранее спасибо

Автор: Cepera 20.11.2002, 15:56
одно уточнениние - что есть FedEx?

Автор: paul ryazanov 20.11.2002, 18:23
Цитата(Cepera @ 20.11.2002, 07:56)
одно уточнениние - что есть FedEx?

FedEx - служба почтовой рассылки.
На сайт с web магазином заходит клиент и выбирает товар. После наполнения корзины покупателя и подсчета общей суммы за товар мы получаем общую стоимость товара.
Теперь мы должны узнать сколько будет стоить доставка товара клиенту, для этого и нужен FedEd (http://www.fedex.com). Заполняем форму и пересылаем службе FedEd данные - страна в которую надо доставить и сроки доставки.
FedEx возвращая сумму за которую она осуществит пересылку.
Эта возвращенная сумма плюсуется к стоимости товара, что и составляет конечную цену.
Пример: http://www.newegg.com

Автор: Cepera 20.11.2002, 20:05
ну скрипт-форма прост:
Код
<?
if (!empty($action) && ($action == "true")) {
твоя_функция_по_добавлению_в_FedEx($country,$terms);
}
else {
?>
<form action="<?=$PHP_SELF?>" method="post">
<input type="hidden" name="action" value="true">
Страна для доставки: <input type="text" name="country"><br>
Сроки доставки: <input type="text" name="terms"><br>
<input type="submit">
</form>
<? } ?>

Автор: paul ryazanov 20.11.2002, 20:17
Цитата(Cepera @ 20.11.2002, 12:05)
ну скрипт-форма прост:
Код
<?
if (!empty($action) && ($action == "true")) {
твоя_функция_по_добавлению_в_FedEx($country,$terms);
}
else {
?>
<form action="<?=$PHP_SELF?>" method="post">
<input type="hidden" name="action" value="true">
Страна для доставки: <input type="text" name="country"><br>
Сроки доставки: <input type="text" name="terms"><br>
<input type="submit">
</form>
<? } ?>

Конечно, спасибо...
Но меня интересует как раз тот момент, который ты написал:

твоя_функция_по_добавлению_в_FedEx(...) - это как раз и есть моя проблема.
собственно как передать и как возвратить данные со скрипта на FedEx я знаю,
но мне нужен линк на скрипт, например, www.fedex.com.cgi-bin/rate.php?{ а тут я вставлю свои параметры}. Вообщем что-то вроде автосабмита, только с возвратом числового результата

P. S.
А передавать данные с формы в скрипт я уже да-а-а-а-а-а-вно научился.
Проблема, сам знаю не простая, задал вопрос в ненашенские форумы,
но там пока нет ответов.

Автор: Cepera 20.11.2002, 20:27
Цитата(paul @ 20.11.2002, 16:17)
Цитата(Cepera @ 20.11.2002, )
ну скрипт-форма прост:
Код
<?
if (!empty($action) && ($action == "true")) {
твоя_функция_по_добавлению_в_FedEx($country,$terms);
}
else {
?>
<form action="<?=$PHP_SELF?>" method="post">
<input type="hidden" name="action" value="true">
Страна для доставки: <input type="text" name="country"><br>
Сроки доставки: <input type="text" name="terms"><br>
<input type="submit">
</form>
<? } ?>

Конечно, спасибо...
Но меня интересует как раз тот момент, который ты написал:

твоя_функция_по_добавлению_в_FedEx(...) - это как раз и есть моя проблема.
собственно как передать и как возвратить данные со скрипта на FedEx я знаю,
но мне нужен линк на скрипт, например, www.fedex.com.cgi-bin/rate.php?{ а тут я вставлю свои параметры}. Вообщем что-то вроде автосабмита, только с возвратом числового результата

P. S.
А передавать данные с формы в скрипт я уже да-а-а-а-а-а-вно научился.
Проблема, сам знаю не простая, задал вопрос в ненашенские форумы,
но там пока нет ответов.

хорошо, напиши-ка структуру бд у FedEx'a :-)

Автор: paul ryazanov 20.11.2002, 22:05
Цитата(Cepera @ 20.11.2002, 12:27)
Цитата(paul @ 20.11.2002, 16:17)
[quote=Cepera,20.11.2002,12<!--emo&:0]ну скрипт-форма прост:
Код
<?
if (!empty($action) && ($action == "true")) {
твоя_функция_по_добавлению_в_FedEx($country,$terms);
}
else {
?>
<form action="<?=$PHP_SELF?>" method="post">
<input type="hidden" name="action" value="true">
Страна для доставки: <input type="text" name="country"><br>
Сроки доставки: <input type="text" name="terms"><br>
<input type="submit">
</form>
<? } ?>

Конечно, спасибо...
Но меня интересует как раз тот момент, который ты написал:

твоя_функция_по_добавлению_в_FedEx(...) - это как раз и есть моя проблема.
собственно как передать и как возвратить данные со скрипта на FedEx я знаю,
но мне нужен линк на скрипт, например, www.fedex.com.cgi-bin/rate.php?{ а тут я вставлю свои параметры}. Вообщем что-то вроде автосабмита, только с возвратом числового результата

P. S.
А передавать данные с формы в скрипт я уже да-а-а-а-а-а-вно научился.
Проблема, сам знаю не простая, задал вопрос в ненашенские форумы,
но там пока нет ответов.[/quote]
хорошо, напиши-ка структуру бд у FedEx'a :-)

Сереж, я знаю структуры БД у FedEx - это ведь серьезная контора,
не знаю даже где это узнать - у них на сайте я не нашел не одного слова.
Оставил вопрос у них в службе технической поддержки, но ответа нет...

Если тебя заинтересовала задачка посмотри пример
http://www.newegg.com - это магазин, там добавь себе в корзину чего-нибудь
Внизу при подсчете увидишь два combobox и кнопку. При нажатии на нее увидишь как получаются суммы. Это же собственно нужно и мне, однако
1) скрипт написан на asp, а мне надо на рнр
2) код скрипта я не могу узнать, ведь View Sorce показывает готовый    результат html.

Что бы расставить все точки над i выложу старый скрипт для данной операции:

Код

function getFEDEXPrice ($shipType,$sendZipcode,$recieveZipcode,$recieveCountry,$weight) {

// FPO - Fedex Priority Overnight - $price1
// FSO - Fedex Standard Overnight - $price2
// F2D - Fedex 2-Day Standard - $price3
// FES - Fedex Express Saver - $price4
// FFO - Fedex First Overnight - $price5
// FGD - Fedex Ground - $gndprice

if($shipType != "FGD") {
$tmp = "jsp_name=index&orig_country=US&language=english&portal=plain&account=&heavy_weight=NO&packet_zip=&hold_packaging=&orig_zip=$sendZipcode&dest_zip=$recieveZipcode&dest_country_val=U.S.A.&company_type=Express&packaging=1&weight=$weight&weight_units=lbs&dim_units=in&dim_length=&dim_width=&dim_height=&dropoff_type=4&submit_button=Get+Rate\n\n\n\n";
$request = "POST /servlet/RateFinderServlet HTTP/1.1\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, */*\nReferer: http://rate.dmz.fedex.com/servlet/RateFinderServlet\nAccept-Language: en-us\nContent-Type: application/x-www-form-urlencoded\nAccept-Encoding: gzip, deflate\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\nHost: rate.dmz.fedex.com\nContent-Length: ".strlen($tmp)."\nConnection: Keep-Alive\nCache-Control: no-cache\n\n" .$tmp;

$socket = fsockopen("rate.dmz.fedex.com", 80);

fputs($socket, $request);

while ($out = fread ($socket, 2048))
$iBuffer .= $out;

$preprice = addcslashes("</TD><TD BGCOLOR=\"", "\^.$|()[]*+?{}") . ".*". addcslashes("\" ALIGN=right class='resultstable'>", "\^.$|()[]*+?{}");
$postprice = addcslashes("</TD><TD>&nbsp;</TD><TD></TD><TD></TD></TR>", "\^.$|()[]*+?{}");
$price_match = '([0-9]+\.[0-9]+)';

$regexp = $preprice . $price_match . $postprice .".*".$preprice . $price_match . $postprice .".*". $preprice . $price_match . $postprice . ".*". $preprice . $price_match . $postprice  .".*".  $preprice . $price_match . $postprice;
ereg($regexp, $iBuffer, $regs);
list(,$FPO_fedex, $FSO_fedex, $F2D_fedex, $FES_fedex,$FFO_fedex) = $regs;

switch($shipType) {
case 'FPO':
return($FPO_fedex);
break;
case 'FSO':
return($FSO_fedex);
break;
case 'F2D':
return($F2D_fedex);
break;
case 'FES':
return($FES_fedex);
break;
case 'FFO':
return($FFO_fedex);
break;
}
} else {
$socket = fopen("http://grd.fedex.com/cgi-bin/rrr2010.exe?func=Rate&OriginZip=$sendZipcode&OriginCountryCode=US&DestZip=$recieveZipcode&DestCountryCode=US&Weight=$weight&WeightUnit=1&DimUnit=&Screen=Ground", "r");

while ($out = fread ($socket, 2048))
$iBuffer .= $out;

$regexp  = addcslashes("<!TotalCharges>", "\^.$|()[]*+?{}")."([0-9]+\.[0-9]+)".addcslashes("<!/TotalCharges>", "\^.$|()[]*+?{}");
ereg($regexp,$iBuffer,$regs);
list($gndprice) = $regs;

return($gndprice);
}
}


Как видишь идет обращение к http://rate.dmz.fedex.com/servlet/RateFinderServlet
http://grd.fedex.com/cgi-bin/rrr2010.exe?
Да это работало, пока служба FedEx не сменила на своей стороне скрипты обработчики. Это ведь не в их интересах - теряют же посетителей сайта, если мы умеем обращаться таким образом.
Так вот, мне нужен "свежий" скрипт, который обращается на FedEx куда надо,
или Link на скрипт обработчик со стороны FedEx.
P. S.
Может не все понятно, ведь задача специфическая, но все равно спасибо на том, что хоть кто-то читал: отослал на все форумы которые знал - никто не знает, даже заграничные программистыю

Автор: Cepera 21.11.2002, 00:19
хм... я просмотрел твой код (занятный :p), проверил запросы идущие на сайт, но отклик, видимо, не тот, что задумывался...
ага, извиняюсь, после дочитал твой постинг до конца...
хм... ну тогда я не уверен, что задачку можно решить - я ведь не знаю структуру сервака...
другое дело, что если это настолько задело тебя, можно просто распарсить их ответы... то скриптом проходить по адресу и выдирать нужные куски :)

если интересно - напиши точный урл откуда дергать, посмотрим

Автор: Cepera 21.11.2002, 00:21
то есть, покажи
1. страницу которая заполняется...
2. страница на которой будут нужные значения
3. что показать клиенту

Автор: paul ryazanov 21.11.2002, 05:24
Цитата(Cepera @ 20.11.2002, 16:21)
то есть, покажи
1. страницу которая заполняется...
2. страница на которой будут нужные значения
3. что показать клиенту

Сереж, если бы я сам знал URL я бы сам сделал, но как я писал ранее я не знаю URL (правда писал link) к скрипту-обработчику на FedEx.

Что касается
1. страницу которая заполняется...  - скрипт ты полность привел сам (см. выше, только вместо твоя_функция_FedEx - тот скрипт, что писал я)
2. страница на которой будут нужные значения  - таже страница которая заполняется
3. что показать клиенту - переменную возвращенную функцией (тот скрипт, что писал я)

Автор: Cepera 21.11.2002, 19:04
ну не зная урла имхо не реализовать

Автор: paul ryazanov 21.11.2002, 19:12
Цитата(Cepera @ 21.11.2002, 11:04)
ну не зная урла имхо не реализовать

Вот я и прошу помощи.
Я не хочу, чтобы Вы написали скрипт
Вы помогите найти URL , а  скрипт я сам напишу.
Может кто-то кто делал недавно интернет-магазин, столкнулся с такой проблемой и нашел ответ дайте ссылку на URL

Автор: Cepera 22.11.2002, 18:13
что ж - жди ответа других участников форума :)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)