【问题标题】:What is $_SERVER['HTTP_CB_SIGNATURE'] in coinbase api notification?coinbase api 通知中的 $_SERVER['HTTP_CB_SIGNATURE'] 是什么?
【发布时间】:2019-07-09 17:02:00
【问题描述】:

您好,我正在尝试使用 coinbase api,api 实现工作正常,但在通知时遇到问题。根据我创建的文档通知网址和代码如下

<?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,如果有人可以解释这对我有很大帮助。

【问题讨论】:

    标签: php webhooks coinbase-api


    【解决方案1】:

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

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

    也许您的服务器配置中有一些东西过滤掉了非标准的标头?

    【讨论】:

    • Tnx 为您提供宝贵的解释,这对我有帮助但尚未解决,我尝试在没有 verifyCallback 的情况下获取数据并且它有效,但是这样我只是获取正文数据,无论如何要获取标题数据,以便我可以确切地看到他们发送的内容?
    • 找到获取headers的方法
    • 我得到了标头数据和 cb-signature 类似于 "Cb-Signature":"sGIm6VAG5mjWy......."
    • 那应该翻译成$_SERVER['HTTP_CB_SIGNATURE'],我不知道为什么它不起作用。也许你的 php.ini 中有些东西阻止了它。
    • 但是如果你可以通过其他方式获取标题数据,你应该可以使用它而不是$_SERVER
    猜你喜欢
    • 2018-05-04
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多