使用格林菲尔德API / php的BTCPay服务器集成

nfs0ujit  于 2023-06-04  发布在  PHP
关注(0)|答案(1)|浏览(130)

所以我试图将btcpayserver集成到我的网站。我是相当新的php所以裸露与我,但我有一切工作,直到发票创建后。每当用户点击使用比特币支付时,它会成功创建新的发票,但之后不会重定向到结账链接。
我应该提到我正在使用以下内容来帮助集成过程https://github.com/btcpayserver/btcpayserver-greenfield-php
这里是我的create_invoice.php

session_start();

// Include autoload file.
require __DIR__ . '/../vendor/autoload.php';

// Import Invoice client class.
use BTCPayServer\Client\Invoice;
use BTCPayServer\Client\InvoiceCheckoutOptions;
use BTCPayServer\Util\PreciseNumber;

// Fill in with your BTCPay Server data.
$apiKey = 'aaaaaaaaaa';
$host = 'https://aa.demo.btcpayserver.org/';
$storeId = 'aaaaaa';
$amount = $_POST['amount'];
$currency = 'USD';
$orderId = $_SESSION['name']."#" . mt_rand(0, 1000);
$buyerEmail = $_SESSION['name'];

try {
    $client = new Invoice($host, $apiKey);
    var_dump(
        $client->createInvoice(
            $storeId,
            $currency,
            PreciseNumber::parseString($amount),
            $orderId,
            $buyerEmail
        )
    );
} catch (\Throwable $e) {
    echo "Error: " . $e->getMessage();
}

每当提交表单时,都会显示以下内容(我替换了敏感信息)

object(BTCPayServer\Result\Invoice)#6 (1) 
{ 
  ["data":"BTCPayServer\Result\AbstractResult":private] => array(16) 
  { 
    ["id"]=> string(22) "aaaaaaaaaaa" 
    ["storeId"]=> string(44) "ssssssssssssssssssssssssssss" 
    ["amount"]=> string(4) "18.0" 
    ["checkoutLink"]=> string(62) "https://demo.aa.btcpayserver.org/i/aaaaaaaaaaaaaa" 
    ["status"]=> string(3) "New" 
    ["additionalStatus"]=> string(4) "None" 
    ["monitoringExpiration"]=> int(1669087659) 
    ["expirationTime"]=> int(1669080459) 
    ["createdTime"]=> int(1669078659) 
    ["availableStatusesForManualMarking"]=> array(2) 
    { 
      [0]=> string(7) "Settled" 
      [1]=> string(7) "Invalid" 
    } 
    ["archived"]=> bool(false) 
    ["type"]=> string(8) "Standard" 
    ["currency"]=> string(3) "USD" 
    ["metadata"]=> array(1) 
    { 
      ["orderId"]=> string(4) "#501" 
    } 
    ["checkout"]=> array(10) { 
      ["speedPolicy"]=> string(9) "HighSpeed" 
      ["paymentMethods"]=> array(1) 
      { 
        [0]=> string(3) "BTC" 
      } 
      ["defaultPaymentMethod"]=> NULL 
      ["expirationMinutes"]=> int(30) 
      ["monitoringMinutes"]=> int(120) 
      ["paymentTolerance"]=> float(0) 
      ["requiresRefundEmail"]=> NULL 
      ["defaultLanguage"]=> NULL 
    } 
    ["receipt"]=> array(3) 
    { 
      ["enabled"]=> NULL 
      ["showQR"]=> NULL 
      ["showPayments"]=> NULL 
    } 
  } 
}

现在我的问题是,我需要重定向到“checkoutLink”后,发票创建。
更新 *
以下代码显示错误“Error:无法访问字符串“”上的字符串类型的偏移量

if ($response->getStatus() === 200) {
        $data1 = $response->getBody();
        $link1 = $data1["checkoutLink"];
        echo $link1;
        
    } else {
        throw $this->getExceptionByStatusCode($method, $url, $response);
    }
xriantvc

xriantvc1#

$client = new Invoice($host,$apiKey);

$response = $client->createInvoice(
        $storeId,
        $currency,
        PreciseNumber::parseString($amount),
        $orderId,
        $buyerEmail
    );

return redirect($response->getCheckoutLink());

相关问题