coinbase api通知中的$ _SERVER ['HTTP_CB_SIGNATURE']是什么?

时间:2019-07-09 17:02:00

标签: php webhooks coinbase-api

嗨,我正在尝试使用coinbase api,api实现正常,但在通知时遇到问题。根据我创建的文档,通知UR​​L如下所示

<?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);



?>    

但这会产生错误,如通知:

  

未定义的索引:/home/exhakduz/api/webhooks.php中的HTTP_CB_SIGNATURE   在第38行

我实际上不知道什么是server_cb_signature,如果有人可以解释的话,那将对我有很大帮助。

1 个答案:

答案 0 :(得分:1)

$_SERVER中以HTTP_开头的所有条目均反映HTTP请求标头的内容。标头名称将转换为大写,而-将转换为_。因此,如果客户端发送诸如Foo-Bar: blah之类的标头,则$_SERVER['HTTP_FOO_BAR']的值将为"blah"

Coinbase文档说,通知使用CB-SIGNATURE标头保护,因此$_SERVER['HTTP_CB_SIGNATURE']应该包含此标头的内容。我不确定为什么你不明白。您的代码与文档中的示例代码完全一样。

也许您的服务器配置中有某些内容正在过滤掉非标准标头?