Что такое $ _SERVER ['HTTP_CB_SIGNATURE'] в уведомлении API монетной базы? - PullRequest
0 голосов
/ 09 июля 2019

Привет. Я пытаюсь использовать API-интерфейс coinbase, API-интерфейс работает нормально, но при уведомлении возникла проблема.В соответствии с документацией, которую я создал, URL-адрес уведомления и коды приведены ниже

<?php
   require_once('vendor/autoload.php');

use Coinbase\Wallet\Client;
use Coinbase\Wallet\Configuration;


$apiKey=" xxxx";
$apiSecret="xxxx";



$configuration = Configuration::apiKey($apiKey, $apiSecret);
$client = Client::create($configuration);

$raw_body = file_get_contents('php://input');
$signature = $_SERVER['HTTP_CB_SIGNATURE'];
$authenticity = $client->verifyCallback($raw_body, $signature); // boolean
if($authenticity){
 $data = json_decode($raw_body, true);
    mail("sahid4745@gmail.com","Coinbase Payment Notifications",print_r($order, true));
}
$message=$raw_body;
mail('sahid4745@gmail.com', 'My Subject', $message);



?>    

Но это приводит к ошибке, как Уведомление:

Неопределенный индекс: HTTP_CB_SIGNATURE в / home / excekduz / api /webhooks.php в строке 38

На самом деле я не знаю, что такое server_cb_signature, если кто-нибудь сможет объяснить, что мне очень поможет.

1 Ответ

1 голос
/ 09 июля 2019

Все записи в $_SERVER, которые начинаются с HTTP_, отражают содержимое заголовков HTTP-запросов.Имя заголовка преобразуется в верхний регистр, а - преобразуется в _.Поэтому, если клиент отправляет заголовок, такой как Foo-Bar: blah, значение $_SERVER['HTTP_FOO_BAR'] будет "blah".

В документации Coinbase говорится, что уведомления защищены заголовком CB-SIGNATURE, поэтому $_SERVER['HTTP_CB_SIGNATURE'] следуетсодержать содержимое этого заголовка.Я не уверен, почему вы не получаете это.Ваш код точно такой же, как пример кода в документации.

Может быть, в конфигурации вашего сервера есть что-то, что отфильтровывает нестандартные заголовки?

...