Получил ответ "Аутентификация не удалась" от API, но он отлично работает с Почтальоном. Я думаю, что проблема с генерацией подписи, но перепробовал много вариантов для этого. oauth_token
не требуется в соответствии с руководством (и командой поддержки).
- независимо от того, что такое
$post_data
- Заголовки генерируются через Postman и модифицируются для применения переменных PHP
схема Библии oauth
Что здесь может быть не так?
$oauth_sig_m = "HMAC-SHA1";
$oauth_v = "1.0";
$postdata = json_encode($data);
$nonce = mt_rand();
$timestamp = time();
$base = 'POST&' . rawurlencode('https://www.wine-logistix.de/API/v3/order_create/') . '&'
. rawurlencode("oauth_consumer_key=" . rawurlencode($config['consumer_key']) . '&'
. '&oauth_nonce=' . rawurlencode($nonce)
. '&oauth_signature_method=' . rawurlencode('HMAC-SHA1')
. '&oauth_timestamp=' . rawurlencode($timestamp)
. '&oauth_token='
. '&oauth_version=' . rawurlencode('1.0'));
$key = rawurlencode($config['consumer_secret']);
$sig = base64_encode(hash_hmac("sha1", $base, $key, true));
$authHeader = "Authorization: OAuth oauth_consumer_key=\"{$key}\",oauth_nonce=\"{$nonce}\",oauth_signature_method=\"{$oauth_sig_m}\",oauth_timestamp=\"{$timestamp}\",oauth_token=,oauth_version=\"{$oauth_v}\",oauth_signature=\"{$sig}\"";
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.wine-logistix.de/API/v3/order_create/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => ["json" => $postdata],
CURLOPT_HTTPHEADER => array(
"Accept: */*",
"Accept-Encoding: gzip, deflate",
// "Authorization: " . 'OAuth oauth_consumer_key="' . rawurlencode($config["consumer_key"]) . '",oauth_nonce="' . rawurlencode($nonce) . '",oauth_signature_method="' . rawurlencode($oauth_sig_m) . '",oauth_timestamp="' . rawurlencode($timestamp) . '",oauth_version="' . rawurlencode($oauth_v) . '",oauth_signature="' . rawurlencode($sig) . '"' . "",
$authHeader,
"Cache-Control: no-cache",
"Connection: keep-alive",
"Content-Type: application/json",
"Host: www.wine-logistix.de",
"Postman-Token: 0782468f-3eab-4d93-9708-35d21029e95f,c3a3820b-e814-4e6f-ad05-4ecff69c6285",
"User-Agent: PostmanRuntime/7.18.0",
"cache-control: no-cache"
),
));