使用 Greenfield API 进行 BTCPay 服务器集成未进行身份验证

问题描述 投票:0回答:1

当前正在运行此软件包:“btcpayserver/btcpayserver-greenfield-php”:“^2.8” 我不断收到此错误:

错误:POST 到 https://mainnet.demo.btcpayserver.org/api/v1/stores/__STORE_ID/invoices 时出错。得到响应 (401): {"code":"unauthenticated","message":"访问此端点需要身份验证"} 警告:第 79 行 D:\xampp\htdocs\my_app\file.php 中的数组到字符串转换 数组

当我运行下面的代码时,我没有看到数组到字符串的转换来自:

use BTCPayServer\Client\Invoice;
use BTCPayServer\Client\InvoiceCheckoutOptions;
use BTCPayServer\Util\PreciseNumber;
public function createInvoice($amount, $orderId, $buyerEmail)
    {
        // Create a basic invoice.
        try {
            $client = new Invoice($this->host, $this->apiKey);
            $result =
                $client->createInvoice(
                    $this->storeId,
                    $this->currency,
                    PreciseNumber::parseString($amount),
                    $orderId,
                    $buyerEmail
                );
            return $result;
        } catch (\Exception $e) {
            echo "Error: " . $e->getMessage();
            echo $e->getTrace();
        }
    }

实施:

require_once "vendor/autoload.php";

use Dotenv\Dotenv;
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

$ObjBtcServer = new \MyApp\CryptoDepositClasses\BTCPayServerClass();
print_r($ObjBtcServer->createInvoice(amount: '600', orderId: "#303", buyerEmail: '[email protected]'));

任何人都可以帮我解决这个问题吗?

我从仪表板和 API 中获取了商店 ID,但尚未进行身份验证。

btcpay-server
1个回答
0
投票

解决方案似乎是等待大约 24 小时才能显示该选项,因为我一开始直到第二天才看到它。 我之前使用的 API 来自商店级别

我在菜单上找到了它 帐户 > API 密钥 > 生成密钥 并给予它您想要给予的适当授权级别

现在代码工作正常,数组到字符串的转换来自我打印请求结果的方式;我应该这样称呼它:

$结果 = 新发票(..., ...);

$result->getData(): // 修复此处

© www.soinside.com 2019 - 2024. All rights reserved.