Author

Topic: Прикрутить автоприем MtGox кодов и BitPay (Read 1199 times)

sr. member
Activity: 462
Merit: 250
Хотя бы просто обработка MtGox redeemable code.
Code:
$ratio 1;
$mail = array (
 
'from' => '',
 
'to' => '',
 
'subject' => '',
 
'parameters' => '',
);
$mtgox_key '';
$mtgox_secret base64_decode ('');
$logfile 'mtgox.log';

$mtgox_error false;
function 
mtgox_error ($m$curl null) {
 global 
$mtgox_error;
 if (
$curl$m .= ': ' curl_error ($curl);
 
$mtgox_error "$m\n";
}
function 
mtgox_log ($result null$amount null) {
 global 
$code$msg$mtgox_error$logfile;
 
$m = array (
  
'time' => time (),
  
'code' => $code,
  
'msg' => $msg,
  
'addr' => $_SERVER ['REMOTE_ADDR'],
 );
 if (isset (
$result)) $m ['result'] = $result;
 if (
is_numeric ($amount)) $m ['amount'] = $amount;
 if (
is_string ($mtgox_error)) $m ['error'] = $mtgox_error;
 
$f fopen ($logfile'at');
 if (
$f) {
  
fwrite ($fserialize ($m) . "\n");
  
fclose ($f);
 }
}
function 
mtgox0 ($method$data = array ()) {
 global 
$mtgox_key$mtgox_secret;
 
$curl curl_init ("https://mtgox.com/api/0/$method.php");
 if (! 
$curl) return mtgox_error ('curl_init () failed');
 if (! 
curl_setopt ($curlCURLOPT_RETURNTRANSFERtrue)) return mtgox_error ('curl_setopt (CURLOPT_RETURNTRANSFER) failed'$curl);
 if (! 
curl_setopt ($curlCURLOPT_USERAGENT'Mozilla/4.0 (compatible; MtGox PHP client; ' php_uname ('s') . '; PHP/' phpversion () . ')')) mtgox_error ('curl_setopt (CURLOPT_USERAGENT) failed'$curl);
 
$r explode (' 'microtime ());
 
$data ['nonce'] = $r [1] . substr ((int) (($r [0] + 1) * 1000000), 1);
 
$r http_build_query ($data);
 if (! 
curl_setopt ($curlCURLOPT_POSTFIELDS$r)) return mtgox_error ('curl_setopt (CURLOPT_POSTFIELDS) failed'$curl);
 if (! 
curl_setopt ($curlCURLOPT_HTTPHEADER, array (
  
"Rest-Key: $mtgox_key",
  
'Rest-Sign: ' base64_encode (hash_hmac ('sha512'$r$mtgox_secrettrue)),
 ))) return 
mtgox_error ('curl_setopt (CURLOPT_HTTPHEADER) failed'$curl);
 
$r curl_exec ($curl);
 if (
curl_errno ($curl)) return mtgox_error ('curl_exec () failed'$curl);
 if (! 
is_string ($r)) return mtgox_error ('CURL did not return data');
 
$d json_decode ($rtrue);
 
$e json_last_error ();
 if (
$e) return mtgox_error ("json_decode () failed: $e; raw data: $r");
 return 
$d;
}
$msg array_key_exists ('msg'$_POST) ? trim ($_POST ['msg']) : '';
$code array_key_exists ('code'$_POST) ? trim ($_POST ['code']) : '';
if (
array_key_exists ('more'$_POST)) $code '';
echo 
'
';
?>




Код Mt.Gox




echo htmlspecialchars (basename ($_SERVER ['PHP_SELF'])); ?>" method="post">
if (strlen ($msg) && strlen ($code)) {
 
mtgox_log ();
?>

echo htmlspecialchars ($msgENT_NOQUOTES); ?>" />
echo htmlspecialchars ($code); ?>" />



 $success false;
 
$error '';
 
$r mtgox0 ('redeemCode', array ('code' => $code));
 if (
$r) {
  if (
is_array ($r)) {
   if (
array_key_exists ('amount'$r) && array_key_exists ('currency'$r) && is_numeric ($r ['amount']) && $r ['amount']) {
    
$c $r ['currency'];
    
$amount number_format ($r ['amount'] * $ratio2);
    
mtgox_log ($r$amount);
    
$m =
     
"К зачислению: $amount $c\n" .
     
"\nСообщение\n$msg\n\n" .
     
"Код: $code\n" .
     
"\nMt. Gox\n";
    foreach (
$r as $n => $v$m .= "$n$v\n";
    
$m .= "\nIP-адрес: " $_SERVER ['REMOTE_ADDR'] . "\n";
    
$m str_replace ("\r\n""\n"$m);
    
$m str_replace ("\r""\n"$m);
    
$m str_replace ("\n.""\n.."$m);
    
$m str_replace ("\n""\r\n"$m);
    
$success mail ($mail ['to'], $mail ['subject'], $m"Content-Type: text/plain; charset=UTF-8\r\nFrom: " $mail ['from'], $mail ['parameters']);
    echo 
'
Цена кода:'htmlspecialchars ($r ['amount'] . ' ' $cENT_NOQUOTES), '';
    echo 
'Будет зачислено:'htmlspecialchars ($amount ' ' $cENT_NOQUOTES), '';
    if (
array_key_exists ('reference'$r))
     echo 
'Код операции:'htmlspecialchars ($r ['reference'], ENT_NOQUOTES), '';
   }
   if (
array_key_exists ('error'$r) && is_string ($r ['error'])) $error 'Сообщение от Mt. Gox: ' $r ['error'];
  } else 
mtgox_log ($r);
 } else 
mtgox_log ();
?>
Сообщение:
echo htmlspecialchars ($msgENT_NOQUOTES); ?>
Код:echo htmlspecialchars ($codeENT_NOQUOTES); ?>

 if (! $success) echo '. (strlen ($error) ? htmlspecialchars ($errorENT_NOQUOTES) : 'Произошла ошибка. Пожалуйста, свяжитесь со службой поддержки.') . '

 '
;
 echo 
'';
} else {
?>



if (array_key_exists ('msg'$_POST) && ! strlen ($msg)) echo 'Напишите сообщение.
'?>



if (array_key_exists ('code'$_POST) && ! strlen ($code) && ! array_key_exists ('more'$_POST)) echo 'Введите код.
'?>


}
?>





hero member
Activity: 658
Merit: 536
Z-pay.io
Надо срочно.

Хотя бы просто обработка MtGox redeemable code. Оставим на потом все остальное.
Кто шарит в MtGox API?
0/redeemCode.php

hero member
Activity: 658
Merit: 536
Z-pay.io
Ищу исполнителей для небольшего задания.

Требования: Php, MySQL, знание MtGox api, BitPay.

Обменник полуавтомат - автоматически принимать гокс коды, btc (через сторонний процессинг).
Либо писать с нуля, либо запилить на какой-нибудь Joomla+BreezingForms например.

ТЗ еще нет, писать буду консультируясь с исполнителем.


Рассмотрю различные варианты сотрудничества. В идеале было бы долевое партнерство - с вас техническая реалиация и поддержка, с меня финансовая сторона, продвижение.

В личку пишите.
Jump to: