• 30-01-2022, 20:32:03
    #1
    Merhaba,

    Bu konumuzda sizlere kendi özel sistemlerine API entegre etmek isteyen kişiler için SMM Panel API yazmanın temel kodlarını paylaşacağız.
    PHP ile bir örnek kod yapısı hazırladık, isteğe bağlı olarak (Sipariş sorgulama kısmı için veritabanı oluşturmanız zorunludur) veritabanına bağlayabilirsiniz.

    Hazırladığımız kodlar bizim global doküman olarak kabul ettiğimiz ve sektörün %90'ı tarafından kullanılan perfectpanel apilerine göredir.
    Örnek kodlarda direkt echo ile yazdırdığımız kısıları array() içerisine alarak en alt kısımda json_encode yaparak ekrana yazdırmanız daha kullanışlı olacaktır.

    1- API Key ve method detaylarını belirteceğimiz başlangıç kısmı.

    <?php
    
    ## API keyimizi bu kısma yazıyoruz, isterseniz rastgele bir şifre de yazabilirsiniz ##
    $api_key = "c41db44ed743673d3a839c8bbcc0d400";
    
    ## Bu kısım isteğe bağlıdır fakat her gönderim türüne uyumlu olması için biz POST ve GET aynı anda çalışabilecek şekilde yapıyoruz ##
    ## isset() yerine !empty() kullanmamızın nedeni bazı sunucularda POST olmamasına rağmen isset fonksiyonunun POST varmış gibi algılaması. ##
    if( !empty($_POST) ):
        $data = $_POST;
    else:
        $data = $_GET;
    endif;
    2- Gelmesi zorunlu olan verileri belirtelim ve if ile kontrol edelim.

    <?php
    
    $key          = $data["key"];
    $action     = $data["action"];
    $service    = $data["service"];
    $link          = $data["link"];
    $quantity = $data["quantity"];
    $order      = $data["order"];
    
    ## API Keyimiz doğru gönderildi mi kontrol ediyoruz ##
    if( $key != $api_key ):
        echo 'API key hatalı';
    ## Yapılacak işlem belirtildi mi kontrol ediyoruz ##
    elseif( !$action ):
       echo 'İşlem belirtilmedi';
    ## Sipariş oluşturulacak ise bağlantı, servis id ve miktar gönderildi mi kontrol ediyoruz ##
    elseif( $action == "add" && ( !$link || !$service || !$quantity  ) ):
       echo 'Lütfen boş alan bırakmayınız';
    ## Sipariş sorgulanacak ise sipariş numarası gönderildi mi kontrol ediyoruz ##
    elseif( $action == "status" && !$order ):
       echo 'Lütfen sipariş numarası belirtiniz';
    endif;
    3- Action'dan gelen verilerin işlenmesi ve çıktı verilmesi

    <?php
    
    ## Servisleri ve kategorileri listeliyoruz ##
    if( $action == "services" ):
    ## Bu kısmı ister veritabanınıza bağlarsınız isterseniz de kodlardan manuel yazarsınız, eğer özel sisteminiz ve sadece 1 servis için kullanacaksanız veritabanı kullanmanıza gerek bulunmamakta ##
        echo ' [
        {
            "service": 1,
            "name": "Followers",
            "type": "Default",
            "category": "First Category",
            "rate": "0.90",
            "min": "50",
            "max": "10000"
        },
        {
            "service": 2,
            "name": "Likes",
            "type": "Default",
            "category": "Second Category",
            "rate": "8",
            "min": "10",
            "max": "1500"
        }
    ]';
    
    ## Bakiye sorgulama ##
    elseif( $action == "balance" ):
     ## Users tablomuzdan gelen API KEY ile SELECT yapıyor ve bakiyeyi aşağıdaki formatta ekrana yazdırıyoruz ##
    echo '{
        "balance": "100.84292",
        "currency": "TRY"
    }';
    
    ## Sipariş sorgulama ##
    elseif( $action == "status" ):
               ## Siparişin sorgulanacağı bir veritabanına ihtiyacınız var o nedenle bu kısımda $data["order"]'dan gelen ID ile orders tablonuzdan SELECT yapınız ##
              ## Vereceğiniz örnek çıktı aşağıdadır ##
              echo '{
        "charge": "0.27819",
        "start_count": "3572",
        "status": "Partial",
        "remains": "157",
        "currency": "TRY"
    } ';
    
    ## Yeni sipariş oluşturma ##
    elseif( $action == "add" ):
               ## Bu kısımda siparişi veritabanına kayıt ettikten sonra sipariş numarasını aşağıdaki şekilde çıktı olarak vermeniz gerekmektedir ##
              echo '{ "order": 23501 }';
    
    ## Sipariş Miktarı ##
    $data["quantity"];
    
    ## Servis ID ##
    $data["service"];
    
    # Sipariş verilen bağlantı ##
    $data["link"];
    else:
    ## Mevcut Aciton'ların dışında gelen isteklerin düşeceği kısım ##
    echo 'Geçersiz istek';
    endif;
    Sipariş durumu çıktısında status olarak çıktı vereceğiniz durum kodları ve Türkçeleri;
    • Sipariş Alındı -> pending
    • Yükleniyor -> inprogress
    • Tamamlandı -> completed
    • Kısmi Tamamlandı -> partial
    • Gönderim Sırasında -> processing
    • İptal Edildi -> canceled
    Yukarıdaki kodlar ile uyumlu bir şekilde veri gönderme için ise aşağıdaki hazır olarak paylaşılan PHP kodlarını kullanabilirsiniz;

    <?php
    class Api
    {
        public $api_url = 'https://smm.com/api/v2'; // API URL
    
        public $api_key = ''; // Your API key
    
        public function order($data) { // add order
            $post = array_merge(array('key' => $this->api_key, 'action' => 'add'), $data);
            return json_decode($this->connect($post));
        }
    
        public function status($order_id) { // get order status
            return json_decode($this->connect(array(
                'key' => $this->api_key,
                'action' => 'status',
                'order' => $order_id
            )));
        }
    
        public function services() { // get services
            return json_decode($this->connect(array(
                'key' => $this->api_key,
                'action' => 'services',
            )));
        }
    
        public function balance() { // get balance
            return json_decode($this->connect(array(
                'key' => $this->api_key,
                'action' => 'balance',
            )));
        }
    
    
        private function connect($post) {
            $_post = Array();
            if (is_array($post)) {
                foreach ($post as $name => $value) {
                    $_post[] = $name.'='.urlencode($value);
                }
            }
    
            $ch = curl_init($this->api_url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            if (is_array($post)) {
                curl_setopt($ch, CURLOPT_POSTFIELDS, join('&', $_post));
            }
            curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
            $result = curl_exec($ch);
            if (curl_errno($ch) != 0 && empty($result)) {
                $result = false;
            }
            curl_close($ch);
            return $result;
        }
    }
    
    // Examples
    
    $api = new Api();
    
    $services = $api->services(); # return all services
    
    $balance = $api->balance(); # return user balance
    
    // add order
    
    $order = $api->order(array('service' => 1, 'link' => 'http://example.com/test', 'quantity' => 100)); # Default
    
    $status = $api->status($order->order); # return status, charge, remains, start count, currency
  • 30-01-2022, 20:33:29
    #2
    güzel fakat tüm smm api get sisteminde bunlar txt olarak indirilebilir, farkı nedir ?
  • 30-01-2022, 20:35:10
    #3
    Tartaros adlı üyeden alıntı: mesajı görüntüle
    güzel fakat tüm smm api get sisteminde bunlar txt olarak indirilebilir, farkı nedir ?
    Her panelde örnek paylaşılan kod sadece API Çekmek içindir bizim üst kısımda paylaştığımız kodlar ise API vermek içinde geçerlidir. Yani her 2 aşamanın da kodları da konuda yer almakta, incelerseniz görebilirsiniz.
  • 30-01-2022, 20:36:33
    #4
    Eline sağlık faydalı, teşekkürler.
  • 30-01-2022, 23:17:01
    #5
    Elinize sağlık, yararlı bir konu.
  • 01-02-2022, 05:18:56
    #6
    sanırım pythona alışmış eliniz. if else lerde python formatı hakim...
  • 01-02-2022, 09:26:15
    #7
    recepozmen_67 adlı üyeden alıntı: mesajı görüntüle
    sanırım pythona alışmış eliniz. if else lerde python formatı hakim...
    https://www.php.net/manual/tr/contro...ive-syntax.php
  • 01-02-2022, 17:42:17
    #8
    Php de de mi böyleymiş. Bak sen... Thanks....