Skip to content

Instantly share code, notes, and snippets.

@ugurunver
Created February 27, 2018 15:20
Show Gist options
  • Save ugurunver/d993c0e0e5b6802e39f77406d0d20b49 to your computer and use it in GitHub Desktop.
Save ugurunver/d993c0e0e5b6802e39f77406d0d20b49 to your computer and use it in GitHub Desktop.
<?php
/*
PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.22-0ubuntu0.16.04.1, Copyright (c) 1999-2017, by Zend Technologies
`apt-get install php-curl`
*/
define('API_ROOT', 'https://api.propars.net/api/v1/');
class SiparisClient
{
//public $customer_endpoint = API_ROOT.'core/customer/';
//public $customer_address_endpoint = API_ROOT.'core/customeraddress/';
//public $invoice_endpoint = API_ROOT.'finance/saleinvoice/';
//public $item_endpoint = API_ROOT.'core/item/';
public $sale_endpoint = API_ROOT.'core/sale/';
private $token;
function __construct($username, $password)
{
$this->token = $this->_api_request('api-token-auth/', 'POST', array('username'=>$username, 'password'=> $password))['token'];
}
private function _api_request($endpoint, $method='GET', $data=null){
$crl = curl_init();
$headr = array();
$headr[] = 'Content-type: application/json';
if($this->token){
$headr[] = 'Authorization: Token '.$this->token;
}
curl_setopt($crl, CURLOPT_URL, API_ROOT.$endpoint);
curl_setopt($crl, CURLOPT_HTTPHEADER, $headr);
curl_setopt($crl,CURLOPT_RETURNTRANSFER,1);
if(strtoupper($method) === 'POST'){
curl_setopt($crl, CURLOPT_POST,true);
curl_setopt($crl, CURLOPT_POSTFIELDS, json_encode($data));
}
$rest = curl_exec($crl);
$httpcode = curl_getinfo($crl, CURLINFO_HTTP_CODE);
curl_close($crl);
if($httpcode >= 400){
var_dump($rest);
die();
}
return json_decode($rest, true);
}
public function siparis_listele($sayfaNo, $sayi=30, $kaynak, $baslangicTarihi, $bitisTarihi){
$sayi = $sayi || 30;
$endpoint = $this->sale_endpoint.'?limit='.$sayi;
if($kaynak){
$endpoint = $endpoint.'&source='.$kaynak;
}
if($baslangicTarihi){
$endpoint = $endpoint.'&order_start_date='.$baslangicTarihi;
}
if($bitisTarihi){
$endpoint = $endpoint.'&order_end_date='.$bitisTarihi;
}
$sayfaNo = (int)$sayfaNo;
if($sayfaNo > 1){
$offset = ($sayfaNo-1) * $sayi;
$endpoint = $endpoint.'&offset'.$offset;
}
return $this->_api_request($endpoint);
}
public function siparis_detayi($siparisID){
$endpoint = $this->sale_endpoint.$siparisID.'/';
return $this->_api_request($endpoint);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////// SIPARIS LISTELEME ORNEKLERI //////////////////////////////////////////////////////
// panele giris yapilabilen bir eposta-parola cifti
define('EMAIL', '[email protected]');
define('PASSWORD', 'parola');
function tum_siparisler(){
/*
Sistemdeki tum siparisleri, bir sayfada en fazla 30 (varsayılan) sonuc donecek sekilde sayfalayarak listeler.
*/
$api_client = new SiparisClient(EMAIL, PASSWORD);
$sayfa = 1;
while (true) {
$siparis_response = $api_client->siparis_listele($sayfa, null, null, null, null);
$siparisler = $siparis_response['results'];
// sayi_bilgisi verilerini sayfalama yaparken kullanabilirsiniz
$sayi_bilgisi = $siparis_response['page_context'];
$toplam_siparis_sayisi = $siparis_response['count'];
// Bu kontrol sekliyle sistemdeki tum siparisleri birer kere getirene kadar devam eder.
if(count($siparisler) == 0){
break;
}
// siparis verileri ile yapilmak istenen islem burada yapilabilir.
foreach ($siparisler as $siparis) {
print_r($siparis);
print_r("------------------\n");
}
}
}
function tarihe_gore_filtreli(){
/*
15 ocak ve 15 subat arasindaki siparisleri 50'ser parcalar (sayfalar) halinde dondurur.
*/
$api_client = new SiparisClient(EMAIL, PASSWORD);
$baslangicTarihi = '2018-01-15T09:00:00'; // Yil-Ay-Gun(T)Saat:Dakika:Saniye
$bitisTarihi = '2018-02-15T00:00:00';
$sayfa = 1;
$siparisSayisi = 50; // bir sayfada donulecek olan siparis sayisi
while (true) {
$siparis_response = $api_client->siparis_listele($sayfa, $siparisSayisi, null, $baslangicTarihi, $bitisTarihi);
$siparisler = $siparis_response['results'];
// sayi_bilgisi verilerini sayfalama yaparken kullanabilirsiniz
$sayi_bilgisi = $siparis_response['page_context'];
$toplam_siparis_sayisi = $siparis_response['count'];
// Bu kontrol sekliyle sistemdeki filtreye uyan tum siparisleri birer kere getirene kadar devam eder.
if(count($siparisler) == 0){
break;
}
// siparis verileri ile yapilmak istenen islem burada yapilabilir.
foreach ($siparisler as $siparis) {
print_r($siparis);
print_r("------------------\n");
}
}
}
function tarih_ve_kaynaga_gore_filtreli(){
/*
15 ocak ve 15 subat arasindaki belirtilen kaynaktan gelmis olan tum siparisleri 50'ser parcalar (sayfalar) halinde dondurur.
Kaynak alani gg, n11, sp, hb, store degerlerini alabilmektedir. store degeri panelden girilmis siparisleri secmektedir.
*/
$api_client = new SiparisClient(EMAIL, PASSWORD);
$baslangicTarihi = '2018-01-15T09:00:00'; // Yil-Ay-Gun(T)Saat:Dakika:Saniye
$bitisTarihi = '2018-02-15T00:00:00';
$kaynak = 'n11';
$sayfa = 1;
$siparisSayisi = 50; // bir sayfada donulecek olan siparis sayisi
while (true) {
$siparis_response = $api_client->siparis_listele($sayfa, $siparisSayisi, $kaynak, $baslangicTarihi, $bitisTarihi);
$siparisler = $siparis_response['results'];
// sayi_bilgisi verilerini sayfalama yaparken kullanabilirsiniz
$sayi_bilgisi = $siparis_response['page_context'];
$toplam_siparis_sayisi = $siparis_response['count'];
// Bu kontrol sekliyle sistemdeki filtreye uyan tum siparisleri birer kere getirene kadar devam eder.
if(count($siparisler) == 0){
break;
}
// siparis verileri ile yapilmak istenen islem burada yapilabilir.
foreach ($siparisler as $siparis) {
print_r($siparis);
print_r("------------------\n");
}
}
}
//tum_siparisler();
//tarihe_gore_filtreli();
//tarih_ve_kaynaga_gore_filtreli();
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment