Criar uma ordem de compra usando a API da PIONEX e php
Budget: €10 – €15 EUR
Olá,
Gostaria de obter assistência para executar uma ordem de compra na PIONEX através da sua API, utilizando php.
Neste momento tenho um código, mas que vai dando alguns erros, e até ao momento ainda não consegui que a compra de crypto fosse bem sucedida. No fundo, preciso de um técnico que retifique o meu código, e o trabalho fica finalizado quando eu executar a primeira compra com sucesso.
Eis o código:
===============================================================
<?php
$apiKey = "xxxxxxxxxxxxxxxx"; // Substitui pela tua chave API
$apiSecret = "xxxxxxxxxxxxxxxx"; // Substitui pelo teu segredo API
$baseUrl = "https://api.pionex.com";
// 1) Endpoint + timestamp na query
$endpoint = "/api/v1/trade/order";
$timestamp = (int)(microtime(true) * 1000);
$queryString = "timestamp=" . $timestamp; // só o timestamp na query
$pathUrl = $endpoint . "?" . $queryString; // /api/v1/trade/order?timestamp=...
// 2) Corpo da requisição (JSON) - parâmetros da ordem
// Pionex (similar à Binance) exige "quoteOrderQty" para Market BUY
$bodyArray = [
"symbol" => "ETH_USDT",
"side" => "BUY",
"type" => "MARKET",
"quoteOrderQty" => "10" // gasta 10 USDT
];
// Transforma em JSON sem caracteres escapados
$bodyString = json_encode($bodyArray, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
// 3) Montar a string que será assinada:
// = "POST" + (endpoint + "?timestamp=...") + "&" + (JSON do body)
$signaturePayload = "POST" . $pathUrl . "&" . $bodyString;
// 4) Calcular a assinatura HMAC-SHA256
$signature = hash_hmac("sha256", $signaturePayload, $apiSecret);
// 5) Montar a URL completa
$url = $baseUrl . $pathUrl;
// 6) Preparar os headers (igual ao seu GET de saldo)
$headers = [
"PIONEX-KEY: $apiKey",
"PIONEX-SIGNATURE: $signature",
"Content-Type: application/json"
];
// 7) Executar a requisição POST
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $bodyString); // corpo em JSON
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Code: $httpCode\n";
echo "Response: $response\n";
?>
=======================================================
O output:
HTTP Code: 200 Response: {"result":false,"timestamp":1737581289440,"code":"INVALID_SIGNATURE","message":"invalid signature"}
Obrigado
Gostaria de obter assistência para executar uma ordem de compra na PIONEX através da sua API, utilizando php.
Neste momento tenho um código, mas que vai dando alguns erros, e até ao momento ainda não consegui que a compra de crypto fosse bem sucedida. No fundo, preciso de um técnico que retifique o meu código, e o trabalho fica finalizado quando eu executar a primeira compra com sucesso.
Eis o código:
===============================================================
<?php
$apiKey = "xxxxxxxxxxxxxxxx"; // Substitui pela tua chave API
$apiSecret = "xxxxxxxxxxxxxxxx"; // Substitui pelo teu segredo API
$baseUrl = "https://api.pionex.com";
// 1) Endpoint + timestamp na query
$endpoint = "/api/v1/trade/order";
$timestamp = (int)(microtime(true) * 1000);
$queryString = "timestamp=" . $timestamp; // só o timestamp na query
$pathUrl = $endpoint . "?" . $queryString; // /api/v1/trade/order?timestamp=...
// 2) Corpo da requisição (JSON) - parâmetros da ordem
// Pionex (similar à Binance) exige "quoteOrderQty" para Market BUY
$bodyArray = [
"symbol" => "ETH_USDT",
"side" => "BUY",
"type" => "MARKET",
"quoteOrderQty" => "10" // gasta 10 USDT
];
// Transforma em JSON sem caracteres escapados
$bodyString = json_encode($bodyArray, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
// 3) Montar a string que será assinada:
// = "POST" + (endpoint + "?timestamp=...") + "&" + (JSON do body)
$signaturePayload = "POST" . $pathUrl . "&" . $bodyString;
// 4) Calcular a assinatura HMAC-SHA256
$signature = hash_hmac("sha256", $signaturePayload, $apiSecret);
// 5) Montar a URL completa
$url = $baseUrl . $pathUrl;
// 6) Preparar os headers (igual ao seu GET de saldo)
$headers = [
"PIONEX-KEY: $apiKey",
"PIONEX-SIGNATURE: $signature",
"Content-Type: application/json"
];
// 7) Executar a requisição POST
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $bodyString); // corpo em JSON
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Code: $httpCode\n";
echo "Response: $response\n";
?>
=======================================================
O output:
HTTP Code: 200 Response: {"result":false,"timestamp":1737581289440,"code":"INVALID_SIGNATURE","message":"invalid signature"}
Obrigado