Chave da API) * no campo "key" e a operação no campo "action". A resposta é sempre JSON. * Ações disponíveis: services, add, status, cancel, refill, refill_status, balance. */ class PainelsmmApi { private $url = 'https://painelsmm.online/api/v2'; private $chave; public function __construct($chave) { $this->chave = $chave; } /** Lista de serviços: id, nome, tipo, categoria, preço por 1.000, mínimo, máximo, reposição. */ public function servicos() { return $this->chamar(['action' => 'services']); } /** * Novo pedido. Campos comuns: service (ID), link, quantity. * Conforme o tipo do serviço também: comments, runs + interval (drip-feed), username, * min + max + posts + delay + expiry (assinaturas). */ public function novoPedido(array $dados) { return $this->chamar(array_merge(['action' => 'add'], $dados)); } /** Status de um pedido. */ public function status($pedido) { return $this->chamar(['action' => 'status', 'order' => $pedido]); } /** Status de vários pedidos de uma vez (IDs separados por vírgula). */ public function statusVarios(array $pedidos) { return $this->chamar(['action' => 'status', 'orders' => implode(',', $pedidos)]); } /** Pede o cancelamento (só em serviços que permitem e com o pedido ainda em andamento). */ public function cancelar(array $pedidos) { return $this->chamar(['action' => 'cancel', 'orders' => implode(',', $pedidos)]); } /** Pede reposição de um pedido (serviços com reposição). */ public function reposicao($pedido) { return $this->chamar(['action' => 'refill', 'order' => $pedido]); } /** Status de uma reposição. */ public function statusReposicao($reposicao) { return $this->chamar(['action' => 'refill_status', 'refill' => $reposicao]); } /** Saldo da conta. */ public function saldo() { return $this->chamar(['action' => 'balance']); } private function chamar(array $campos) { $campos['key'] = $this->chave; $ch = curl_init($this->url); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($campos), CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30, CURLOPT_USERAGENT => 'PainelsmmApiExemplo/1.0', ]); $resposta = curl_exec($ch); $erro = curl_error($ch); curl_close($ch); if ($resposta === false) { throw new RuntimeException('Falha de conexão: ' . $erro); } return json_decode($resposta, true); } } // ---------------------------------------------------------------------------- // Uso // ---------------------------------------------------------------------------- $api = new PainelsmmApi('SUA_CHAVE_DA_API'); $saldo = $api->saldo(); // ['balance' => '10.50', 'currency' => 'BRL'] $servicos = $api->servicos(); // lista de serviços $pedido = $api->novoPedido([ 'service' => 1, 'link' => 'https://www.instagram.com/seu_perfil', 'quantity' => 1000, ]); // ['order' => 12345] $status = $api->status($pedido['order'] ?? 0); // charge, start_count, status, remains, currency