@ 2017-07-11T10:29:40Z <?php
/**
* Набор методов для запроса к API uCoz. Версия для uCoz PHP сервера
* @author Sergey Driver86 Pugovkin <sergey@pugovk.in> – разработчик методов для запроса (php версия)
* @author Dmitry Kiselev <api@ucoz.net> – модификация и адаптация под uAPI + images. api.ucoz.net
* @version 2.2 от 15 августа 2016 – fixed POST for category
*/
/**
Ссылка на ваш сайт в юкозе, для обращения к uAPI
Обратите внимание, что нужно вводить с / на конце.
Если у сайта есть прикрепленный домен – необходимо указывать его.
Если же сайт доступен по wwww – сайт необходимо указывать вместе с www. Например: http://www.mywebsite.ucoz.ru/ или http://www.mywebsite.com/
*/
$myWebsite = 'https://utemplate.pro/';
/**
Закончили формировать ссылку
*/
class Request {
/**
* Настройки
* @var array
*/
public $config;
/**
* Обязательные параметры, передаваемые через URL при запросе к API
* @var array
*/
private $params;
/**
* Конструктор класса
* @param array $config Настройки
*/
function __construct($config = array()) {
$this->config = $config;
$this->params = array(
'oauth_version' => '1.0',
'oauth_timestamp' => time(),
'oauth_nonce' => md5(microtime() . mt_rand()),
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_consumer_key' => $this->config['oauth_consumer_key'],
'oauth_token' => $this->config['oauth_token'],
);
}
/**
* Создание подписи запроса
* @param string $method Метод запроса, например GET
* @param string $url URL запроса, например /blog
* @param string $params Все параметры, передаваемые через URL при запросе к API
* @return string
*/
private function getSignature($method, $url, $params) {
ksort($params);
$baseString = strtoupper($method) . '&' . urlencode($url) . '&' . urlencode(strtr(http_build_query($params), array ('+' => '%20')));
return urlencode(base64_encode(hash_hmac('sha1', $baseString, $this->config['oauth_consumer_secret'] . '&' . $this->config['oauth_token_secret'], true)));
}
/**
* Возвращает базовое имя файла для использования в подписи запроса
* @param array $match Совпадения при поиске по регулярному выражению preg_replace_callback
* @return string
*/
private function getBaseName($match) {
return basename($match[1]);
}
/**
* Запрос к API методом GET
* @param string $url URL запроса, например /blog
* @param array $data Массив данных
* @return array
*/
public function get($url, $data = array()) {
global $myWebsite;
$this->params['oauth_nonce'] = md5(microtime() . mt_rand());
$url = $myWebsite.'uapi' . trim(strtolower($url), '').'';
$queryString = http_build_query($this->params + $data + array('oauth_signature' => $this->getSignature('GET', $url, $this->params + $data)));
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_URL, $url . '?' . $queryString);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
/**
* Запрос к API методом POST
* @param string $url URL запроса, например /blog
* @param array $data Массив данных
* @return array
*/
public function post($url, $data) {
global $myWebsite;
$this->params['oauth_nonce'] = md5(microtime() . mt_rand());
/**
Делаем так, чтобы изображения при отправке отправлялись,
а не валились в инвалид сигнутаре
*/
$x=1;
while ($x<50) {
if(empty($data['file'.$x])) break;
$getfile1others = basename($data['file'.$x]);
$findme = '@';
$pos = strpos($getfile1others, $findme);
if ($pos === false) {
$getfile1shop_array = array(
'file'.$x => '@'.$getfile1others
);
} else {
$getfile1shop_array = array(
'file'.$x => ''.$getfile1others
);
}
unset($data['file'.$x]);
$data = array_merge($getfile1shop_array, $data);
$x++;
}
if(!empty($data['file_add_cnt'])) {
$allcountfilesshop = $data['file_add_cnt'];
}
if ($url == '/shop/editgoods') {
$i= $allcountfilesshop;
while ($i<50) {
if(empty($data['file_add_'.$i]) && $data['file_add_'.$i] != 'file_add_cnt') break;
$getfile1shop = basename($data['file_add_'.$i]);
$findme = '@';
$pos = strpos($getfile1shop, $findme);
if ($pos === false) {
$getfile1shop_array = array(
'file_add_'.$i => '@'.$getfile1shop
);
} else {
$getfile1shop_array = array(
'file_add_'.$i => ''.$getfile1shop
);
}
unset($data['file_add_'.$i]);
$data = array_merge($getfile1shop_array, $data);
$i++;
}
}
$url = $myWebsite.'uapi' . trim(strtolower($url), '').'/';
$sign = array('oauth_signature' => $this->getSignature('POST', $url, $this->params + preg_replace_callback('/^@(.+)$/', array($this, 'getBaseName'), $data)));
$queryString = http_build_query($sign);
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_URL, $url . '?' . $forcurlpost);
curl_setopt($curl, CURLOPT_POST, true);
$forcurlpost = array_merge($this->params + $data, $sign);
curl_setopt($curl, CURLOPT_POSTFIELDS, $forcurlpost);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
/**
* Запрос к API методом PUT
* @param string $url URL запроса, например /blog
* @param array $data Массив данных
* @return array
*/
public function put($url, $data) {
global $myWebsite;
$this->params['oauth_nonce'] = md5(microtime() . mt_rand());
/**
Делаем так, чтобы изображения при отправке отправлялись,
а не валились в инвалид сигнутаре
*/
$x=1;
while ($x<50) {
if(empty($data['file'.$x])) break;
$getfile1others = basename($data['file'.$x]);
$findme = '@';
$pos = strpos($getfile1others, $findme);
if ($pos === false) {
$getfile1shop_array = array(
'file'.$x => '@'.$getfile1others
);
} else {
$getfile1shop_array = array(
'file'.$x => ''.$getfile1others
);
}
unset($data['file'.$x]);
$data = array_merge($getfile1shop_array, $data);
$x++;
}
if(!empty($data['file_add_cnt'])) {
$allcountfilesshop = $data['file_add_cnt'];
}
if ($url == '/shop/editgoods') {
$i= $allcountfilesshop;
while ($i<50) {
if(empty($data['file_add_'.$i]) && $data['file_add_'.$i] != 'file_add_cnt') break;
$getfile1shop = basename($data['file_add_'.$i]);
$findme = '@';
$pos = strpos($getfile1shop, $findme);
if ($pos === false) {
$getfile1shop_array = array(
'file_add_'.$i => '@'.$getfile1shop
);
} else {
$getfile1shop_array = array(
'file_add_'.$i => ''.$getfile1shop
);
}
unset($data['file_add_'.$i]);
$data = array_merge($getfile1shop_array, $data);
$i++;
}
}
$url = $myWebsite.'uapi' . trim(strtolower($url), '').'/';
$sign = array('oauth_signature' => $this->getSignature('PUT', $url, $this->params + preg_replace_callback('/^@(.+)$/', array($this, 'getBaseName'), $data)));
$queryString = http_build_query($sign);
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_URL, $url . '?' . $queryString);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
$forcurlpost = array_merge($this->params + $data, $sign);
curl_setopt($curl, CURLOPT_POSTFIELDS, $forcurlpost);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
/**
* Запрос к API методом DELETE
* @param string $url URL запроса, например /blog
* @param array $data Массив данных
* @return array
*/
public function delete($url, $data) {
global $myWebsite;
$this->params['oauth_nonce'] = md5(microtime() . mt_rand());
$url = $myWebsite.'uapi' . trim(strtolower($url), '').'/';
$queryString = http_build_query($this->params + $data + array('oauth_signature' => $this->getSignature('DELETE', $url, $this->params + $data)));
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_URL, $url . '?' . $queryString);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
$result = json_decode(curl_exec($curl), true);
curl_close($curl);
return $result;
}
}
// ==============================================================
// до сюда нельзя удалять
error_reporting(E_ERROR) ;
/**
* Набор методов для запроса к API uCoz
* @author Dmitry Kiselev <api@ucoz.net> – Демонстрация обращения к uAPImodule.php
* @version 2.0 от 24 марта 2016
*/
$request = new Request(array(
'oauth_consumer_key' => 'edl92g42SHm84bnRbZDW',
'oauth_consumer_secret' => 'wUClCAtSsjvCDs6nDR46zOYItvjKwn',
'oauth_token' => 'A9PL.uc1uujmmzFXmf13Gbeyx2BT1AEiVLiiOkLz',
'oauth_token_secret' => 'CWDmh4QfXOqzIXoEVfpPV9EUoSlEKjNEldItCgiD'
));
// Используем
// phpinfo(32);
$x = '0';
$response = $request->get('/shop/invoices/', array(
'page' => 0,
'id' => '49938,49937,49936,49935,49934,49933,49932,49931,49918,49915,49905,49904,49893,49867,49866,49865,49864,49861,49853,49852,49846,49845,49842,49833,49832,49831,49815,49814,49813,49801,49800,49799,49798,49797,49796,49795,49769,49768,49767,49766,49759,49744,49737,49736,49735,49720,49719,49718,49717,49716,49715,49687,49686,49675,49674,49673,49672,49660,49659,49658,49657,49652,49645,49644,49643,49642,49633,49632,49619,49618,49617,49616,49600,49599,49598,49586,49585,49583,49580,49576,49575,49574,49559,49555,49554,49553,49552,49551,49550,49549,49548,49547,49546,49545,49544,49543,49542,49541,49540,49539,49538,49536,49535,49534,49533'
));
$response = json_decode($response, true);
//echo '<pre>';
//print_r($response);
//echo '</pre>';
while ($x<21) //2090
{
$response2 = $request->get('/shop/order/', array(
'order' => $response['success']['orders'][$x]['order_hash']
));
$response2 = json_decode($response2, true);
// $response = $request->get('/shop/invoices/', array(
// 'page' => $x,
// 'id' => '40359,40360,40361,40366,40367,40368,40369,40394,40395,40396,40399,40400,40401,40402,40403,40406,40412,40413,40414,40415,40416,40432,40433,40434,40435,40448,40449,40453,40454,40455,40465,40466,40467,40471,40472,40473,40474,40475,40476,40483,40484,40485,40486,40487,40509,40510,40511,40535,40536,40537,40538,40539,40577,40578,40579,40581,40582,40583,40605,40606,40607,40608,40609,40610,40625,40626,40627,40646,40647,40648,40649,40650,40662,40663,40664,40665,40666,40667,40690,40691,40693,40694,40707,40708,40709,40710,40711,40712,40713,40714,40715,40727,40728,40729,40730,40731,40732,40744,40747,40748,40759,40760,40761,40768,40769,40782,40785,40786,40787,40806,40821,40822,40823,40826,40827,40855,40858,40859,40860,40861,40862,40863,40878,40879,40882,40883,40884,40885,40886,40891,40893,40911,40912,40913,40914,40915,40916,40928,40929,40930,40931,40963,40964,40965,40966,40967,40968,40969,40974,40975,40976'
// ));
// echo '<pre>';
// print_r(json_decode($response, true));
// echo '</pre>';
// нам нужны profit, id,
// echo '<br />'.$response['success']['orders'][$page]['order_hash'].'<br />';
// echo '<pre>';
// print_r(json_decode($response2, true));
// echo '</pre>';
$goods_id = $response2['success']['order_digital_goods']['goods'][0]['id'];
$name = $response2['success']['order_goods']['goods'][$goods_id]['added_user'];
$price = $response2['success']['order_goods']['goods'][$goods_id]['price']['price_raw'];
$num = $response2['success']['order_nom'];
$howmusch = '0';
echo ' <table>
<tr>
<td>'.$num.'</td>
<td>'.$name.'</td>
<td>'.$price.'</td>
</tr>
</table> ';
$x++;
}
?>
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 7.0.0 - 7.0.33 , 7.1.0 - 7.1.33 , 7.2.0 - 7.2.26 , 7.3.0 - 7.3.13 , 7.4.0 - 7.4.1 Fatal error: Uncaught Error: Call to undefined function curl_init() in /in/J4o3X:81
Stack trace:
#0 /in/J4o3X(297): Request->get('https://utempla...', Array)
#1 {main}
thrown in /in/J4o3X on line 81
Process exited with code 255 . Output for 5.6.0 - 5.6.40 Fatal error: Call to undefined function curl_init() in /in/J4o3X on line 81
Process exited with code 255 . preferences:dark mode live preview
128.8 ms | 401 KiB | 157 Q