Проблема с отправкой денег на egold

  • Автор темы Viktor K
  • Дата начала

Viktor K

Guest
Проблема с отправкой денег на egold

Проблема заключается вот в чем:
Есть скрипт который принимает деньги, а потом отсылает их на 2 разных egold аккаунта. Допустим, приходят 10$, а потом 4$ уходят на 1-ый акк и 3$ на 2-ой. Так вот последнее время, иногда стали происходить повторы. То есть пришло 10$, а отправилось например два раза по 3$. Притом, что это случается не всегда. Если бы дело было в скриптах, это было бы регулярно. Может быть дело в egold.com. При каком-нибудь таймауте, он повторно отправляет данные, толи еще в чем дело.
Ниже функция отправки денег на эти два аккаунта:
PHP:
function TransEgoldMoney($to, $ammount, $dsc)
{
global $AccountID, $PassPhrase;
$Memo = urlencode(stripslashes($dsc));
$vars = "AccountID=" . $AccountID . "&PassPhrase=" . $PassPhrase . "&Payee_Account=" . $to .
 "&Amount=" . $ammount . "&Memo=" . $Memo . "&PAY_IN=1&WORTH_OF=Gold&IGNORE_RATE_CHANGE=Y";
$cu = curl_init();
curl_setopt($cu, CURLOPT_URL, "https://www.e-gold.com/acct/confirm.asp");
curl_setopt($cu, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($cu, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($cu, CURLOPT_POST, 1);
curl_setopt($cu, CURLOPT_POSTFIELDS, $vars);
curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cu, CURLOPT_TIMEOUT, 100);
curl_setopt($cu, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($cu);
$succeeded = curl_errno($cu) == 0 ? true : false;
curl_close($cu);
if(!$succeeded)
{
   return false;   
}
else
{
   if (preg_match_all("/<input type=hidden name=([^?]*?) value=\"([^?]*?)\">/", $output, $matches))
   {
      $num = count($matches[1]);
      for($i=0;$i<$num;$i++)
      {
         $output_vars[$matches[1][$i]] = $matches[2][$i];
      }
      if($output_vars["ERROR"])
      {
         return false;
      }
      elseif ($output_vars["PAYMENT_BATCH_NUM"] && $output_vars["PAYMENT_AMOUNT"])
      {
         return true;
      }
      else
      {
         return false;
      }
   }
   else
   {
      return false;
   }
   //echo "-----------\n\n\n\n\n\n\n".$output."\n\n\n\n\n\n\n-----------";
}
//end func
}
В скрипте эта функция выполняется только дважды и нигде не зацикливается.
Может быть есть какие-то идеи или кто-то с похожим уже сталкивался...
 

Solid

Drosera anglica
Попросим значения переменных $AccountID, $PassPhrase в студию...
 

facelift

Новичок
Автор оригинала: Solid
Попросим значения переменных $AccountID, $PassPhrase в студию...
Боюсь значение остальных параметров тоже понадобится. Если уж делать, то делать серьезно.
 

Viktor K

Guest
$AccountID=мой голд номер
$PassPhrase=пароль от него
$to=кому отсылать
$ammount=сумма
$Memo=описание
 

Kane

Новичок
Без точных значений не получится. И лучше в приват.
 

magic

lancer
Viktor K
Прикалываются товарищи и разводят тебя на пароль к счету :)

Странно конечно, но попробуй curl_setopt($cu, CURLOPT_TIMEOUT, 100); поменять на большее значение и проверь все такие еще раз, как у тебя ф-ция TransEgoldMoney() вызывается.
 

Viktor K

Guest
Solid, facelift, Kane:
Egold no:2728592
pass:vbl_dubbl
magic, пасибо, попробую...
 

Andreika

"PHP for nubies" reader
скока ж щас народу побежит проверять правильные они или нет
 

Viktor K

Guest
Winnie Pooh, да ладно, мне же не жалко ;) И кто сказал что это мои? :))
 

goldb

Guest
Ребята у меня таже проблема (еще хуже)!
Повторы отправки egold доходят до 10 раз, но не всегда.

Что делать посоветуйте?
 

goldb

Guest
Да там вроде все правильно.

мож что-то в таймауте?
что означает таймаут для данного случая с egold?

curl_setopt($cu, CURLOPT_TIMEOUT, 100);

может таймаут поставить равным 5?
 
goldb, означает тоже, что и во всех других случаях.

curl

зы. клинический случай.. вы, простите, с PHP знакомы?
может сразу cюда ?
 

goldb

Guest
Да знаком!
Вот мне бы ответ получить.
Помогите!
Ни где никто не знает.
 

Alexandre

PHPПенсионер
кажется у еголд есть АПИ-интерфейс, почему бы его не использовать, а иммитировать мазиллу?
 

goldb

Guest
Да, но еголд-класс создан для Java.
А я в этом не разбираюсь.

А что если эту строку не писать
curl_setopt($cu, CURLOPT_TIMEOUT, 100).
По умолчанию тайаут какой будет?
А откуда узнать чему он должен быть равен?

Кажеться из-зи этого косяки.

А что если вот так попробовать, по простому?

function getcurl($url)
{
$handler=curl_init($url);
ob_start();
curl_exec($handler);
$content=ob_get_contents();
ob_end_clean();
curl_close($handler);
return $content;
}


$res = getcurl("https://www.e-gold.com/acct/confirm.asp?AccountID=$egoldaccount&PassPhrase=$egoldpassphrase&Payee_Account=$transdetails[0]&Amount=$transdetails[1]&PAY_IN=$egoldpaymentunit&WORTH_OF=$egoldpaymentmetal&Memo=$memo&PAYMENT_ID=0");
 
goldb, не при чем эта строка к твоей проблеме...
хоть 200 там напиши.. от этого не произойдет 200 раз отправка денег.
 
Сверху