Heim > Backend-Entwicklung > PHP-Tutorial > So verwenden Sie die Wallet-Bibliothek Bitcoin Coinbase, um Anwendungen mit PHP zu entwickeln (detaillierte Schritte)

So verwenden Sie die Wallet-Bibliothek Bitcoin Coinbase, um Anwendungen mit PHP zu entwickeln (detaillierte Schritte)

不言
Freigeben: 2023-04-04 10:30:02
nach vorne
5457 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Verwendung der Bitcoin-Coinbase-Wallet-Bibliothek zur Entwicklung von Anwendungen in PHP (detaillierte Schritte). Ich hoffe, dass er für Sie hilfreich ist .

Dies ist die offizielle Client-Bibliothek für Coinbase Wallet API v2. Wir bieten eine intuitive und stabile Schnittstelle zur Integration von Coinbase Wallet in Ihr PHP-Projekt.

Wichtig: Da diese Bibliothek auf die neuere API v2 abzielt, sind v2-Berechtigungen erforderlich (d. h. wallet:accounts:read). Wenn Sie noch v1 verwenden, verwenden Sie bitte eine ältere Version dieser Bibliothek.

Installieren

Verwenden Sie Composer, um die Bibliothek zu installieren. Wenn Sie mit Composer oder dem Abhängigkeitsmanager nicht vertraut sind, lesen Sie bitte die Composer-Dokumentation.

"require": {
    "coinbase/coinbase": "~2.0"
}
Nach dem Login kopieren

Authentifizierung

API-Schlüssel

Verwenden Sie API-Schlüssel und Geheimnisse, um auf Ihr eigenes Coinbase-Konto zuzugreifen.

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

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$client = Client::create($configuration);
Nach dem Login kopieren

OAuth2

Verwenden Sie die OAuth2-Authentifizierung, um auf andere Benutzerkonten als Ihre eigenen zuzugreifen. Diese Bibliothek übernimmt den Handshake-Prozess nicht und geht davon aus, dass Sie zum Zeitpunkt der Initialisierung über das Zugriffstoken verfügen. Sie können einen OAuth2-Client (z. B. league/oauth2-client) verwenden, um den Handshake-Prozess abzuwickeln.

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

// with a refresh token
$configuration = Configuration::oauth($accessToken, $refreshToken);

// without a refresh token
$configuration = Configuration::oauth($accessToken);

$client = Client::create($configuration);
Nach dem Login kopieren

Zwei-Faktor-Authentifizierung

Der Endpunkt „Geld senden“ erfordert in einigen Fällen ein 2FA-Token (mehr erfahren Sie hier). Löst bei Bedarf eine bestimmte Ausnahme aus.

use Coinbase\Wallet\Enum\Param;
use Coinbase\Wallet\Exception\TwoFactorRequiredException;
use Coinbase\Wallet\Resource\Transaction;

$transaction = Transaction::send([
    'toEmail' => 'test@test.com',
    'bitcoinAmount' => 1
]);

$account = $client->getPrimaryAccount();
try {
    $client->createAccountTransaction($account, $transaction);
} catch (TwoFactorRequiredException $e) {
    // show 2FA dialog to user and collect 2FA token

    // retry call with token
    $client->createAccountTransaction($account, $transaction, [
        Param::TWO_FACTOR_TOKEN => '123456',
    ]);
}
Nach dem Login kopieren

Paginierung

Mehrere Endpunkte sind paginiert. Standardmäßig ruft die Bibliothek nur die erste Datenseite für eine bestimmte Anfrage ab. Sie können problemlos mehr als nur die erste Ergebnisseite laden.

$transactions = $client->getAccountTransactions($account);
while ($transactions->hasNextPage()) {
    $client->loadNextTransactions($transactions);
}
Nach dem Login kopieren

Sie können auch den Parameter fetch_all verwenden, damit die Bibliothek alle erforderlichen Anforderungen zum Laden der gesamten Sammlung stellt.

use Coinbase\Wallet\Enum\Param;

$transactions = $client->getAccountTransactions($account, [
    Param::FETCH_ALL => true,
]);
Nach dem Login kopieren

WARNUNG

Es ist ratsam, die Warnungen zu beachten. Wenn ein Standard-PSR-3-Logger konfiguriert ist, protokolliert die Bibliothek alle Warnungen.

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

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$configuration->setLogger($logger);
$client = Client::create($configuration);
Nach dem Login kopieren

Ressourcenreferenz

In einigen Fällen gibt die API eine Ressourcenreferenz anstelle des erweiterten Ressourcenobjekts zurück. Diese Referenzen können durch Auffrischen erweitert werden.

$deposit = $this->client->getAccountDeposit($account, $depositId);
$transaction = $deposit->getTransaction();
if (!$transaction->isExpanded()) {
    $this->client->refreshTransaction($transaction);
}
Nach dem Login kopieren

Sie können auch die Parameteranforderungs-API expand verwenden, um erweiterte Ressourcen in der ersten Anforderung zurückzugeben.

use Coinbase\Wallet\Enum\Param;

$deposit = $this->client->getAccountDeposit($account, $depositId, [
    Param::EXPAND = ['transaction'],
]);
Nach dem Login kopieren

Sie können beim Erstellen neuer Ressourcen Ressourcenreferenzen verwenden und so den Mehraufwand beim Anfordern von Ressourcen über die API vermeiden.

use Coinbase\Wallet\Resource\Deposit;
use Coinbase\Wallet\Resource\PaymentMethod;

$deposit = new Deposit([
    'paymentMethod' => PaymentMethod::reference($paymentMethodId)
]);

// or use the convenience method
$deposit = new Deposit([
    'paymentMethodId' => $paymentMethodId
]);
Nach dem Login kopieren

Antwort

Es gibt mehrere Möglichkeiten, auf die rohen Antwortdaten zuzugreifen. Erstens verfügt jedes Ressourcenobjekt über eine getRawData()-Methode, mit der Sie auf alle Felder zugreifen können, die nicht Objekteigenschaften zugeordnet sind.

$data = $deposit->getRawData();
Nach dem Login kopieren

Die Rohdaten der letzten HTTP-Antwort sind auch auf dem Client-Objekt verfügbar.

$data = $client->decodeLastResponse();
Nach dem Login kopieren

Methoden zur Aktivitätsaufzeichnung

Diese Bibliothek bietet Unterstützung für die Aktivitätsaufzeichnungsmethode für Ressourcenobjekte. Sie müssen diese Funktion beim Booten der Anwendung aktivieren.

$client->enableActiveRecord();
Nach dem Login kopieren

Wenn diese Option aktiviert ist, können Sie aktive Aufzeichnungsmethoden für Ressourcenobjekte aufrufen.

use Coinbase\Wallet\Enum\Param;

$transactions = $account->getTransactions([
    Param::FETCH_ALL => true,
]);
Nach dem Login kopieren

Verwendung

Dies ist nicht als vollständige Dokumentation der API gedacht. Weitere Einzelheiten finden Sie in der offiziellen Dokumentation.

Marktdaten

Unterstützte lokale Währungen auflisten

$currencies = $client->getCurrencies();
Nach dem Login kopieren

Wechselkurse auflisten

$rates = $client->getExchangeRates();
Nach dem Login kopieren

Kaufpreis

$buyPrice = $client->getBuyPrice('BTC-USD');
Nach dem Login kopieren

Verkaufspreis

$sellPrice = $client->getSellPrice('BTC-USD');
Nach dem Login kopieren

Spotpreis

$spotPrice = $client->getSpotPrice('BTC-USD');
Nach dem Login kopieren

Aktuelle Serverzeit

$time = $client->getTime();
Nach dem Login kopieren

Benutzer

Autorisierungsinformationen abrufen

$auth = $client->getCurrentAuthorization();
Nach dem Login kopieren
Nach dem Login kopieren

Benutzerinformationen finden

$auth = $client->getCurrentAuthorization();
Nach dem Login kopieren
Nach dem Login kopieren

Abrufen Aktueller Benutzer

$user = $client->getCurrentUser();
Nach dem Login kopieren

Aktuellen Benutzer aktualisieren

$user->setName('New Name');
$client->updateCurrentUser($user);
Nach dem Login kopieren

Konten

Alle Konten auflisten

$accounts = $client->getAccounts();
Nach dem Login kopieren

Kontodetails auflisten

$account = $client->getAccount($accountId);
Nach dem Login kopieren

Primäre Kontodetails auflisten

$account = $client->getPrimaryAccount();
Nach dem Login kopieren

Konto zum primären Konto machen

$client->setPrimaryAccount($account);
Nach dem Login kopieren

Neues Bitcoin-Konto erstellen

use Coinbase\Wallet\Resource\Account;

$account = new Account([
    'name' => 'New Account'
]);
$client->createAccount($account);
Nach dem Login kopieren

Konto aktualisieren

$account->setName('New Account Name');
$client->updateAccount($account):
Nach dem Login kopieren

Konto löschen

$client->deleteAccount($account);
Nach dem Login kopieren

Adresse

Empfangsadresse des Kontos auflisten

$addresses = $client->getAccountAddresses($account);
Nach dem Login kopieren

Informationen zur Empfangsadresse abrufen

$address = $client->getAccountAddress($account, $addressId);
Nach dem Login kopieren

Transaktion der Adresse auflisten

$transactions = $client->getAddressTransactions($address);
Nach dem Login kopieren

Neue Empfangsadresse erstellen

use Coinbase\Wallet\Resource\Address;

$address = new Address([
    'name' => 'New Address'
]);
$client->createAccountAddress($account, $address);
Nach dem Login kopieren

Transaktion

Transaktionen auflisten

$transactions = $client->getAccountTransactions($account);
Nach dem Login kopieren

Transaktionsinformationen abrufen

$transaction = $client->getAccountTransaction($account, $transactionId);
Nach dem Login kopieren

Geld senden

use Coinbase\Wallet\Enum\CurrencyCode;
use Coinbase\Wallet\Resource\Transaction;
use Coinbase\Wallet\Value\Money;

$transaction = Transaction::send([
    'toBitcoinAddress' => 'ADDRESS',
    'amount'           => new Money(5, CurrencyCode::USD),
    'description'      => 'Your first bitcoin!',
    'fee'              => '0.0001' // only required for transactions under BTC0.0001
]);

try { $client->createAccountTransaction($account, $transaction); }
catch(Exception $e) {
     echo $e->getMessage(); 
}
Nach dem Login kopieren

Geld auf neues Konto überweisen

use Coinbase\Wallet\Resource\Transaction;
use Coinbase\Wallet\Resource\Account;

$fromAccount = Account::reference($accountId);

$toAccount = new Account([
    'name' => 'New Account'
]);
$client->createAccount($toAccount);

$transaction = Transaction::transfer([
    'to'            => $toAccount,
    'bitcoinAmount' => 1,
    'description'   => 'Your first bitcoin!'
]);

$client->createAccountTransaction($fromAccount, $transaction);
Nach dem Login kopieren

Geld anfordern

use Coinbase\Wallet\Enum\CurrencyCode;
use Coinbase\Wallet\Resource\Transaction;
use Coinbase\Wallet\Value\Money;

$transaction = Transaction::request([
    'amount'      => new Money(8, CurrencyCode::USD),
    'description' => 'Burrito'
]);

$client->createAccountTransaction($transaction);
Nach dem Login kopieren

Anfrage erneut senden

$account->resendTransaction($transaction);
Nach dem Login kopieren

Anfrage abbrechen

$account->cancelTransaction($transaction);
Nach dem Login kopieren

Anfrage abschließen

$account->completeTransaction($transaction);
Nach dem Login kopieren

Kaufen

Käufe auflisten

$buys = $client->getAccountBuys($account);
Nach dem Login kopieren

Kaufinformationen abrufen

$buy = $client->getAccountBuy($account, $buyId);
Nach dem Login kopieren

Bitcoin kaufen

use Coinbase\Wallet\Resource\Buy;

$buy = new Buy([
    'bitcoinAmount' => 1
]);

$client->createAccountBuy($account, $buy);
Nach dem Login kopieren

Kaufbestätigung

Sie müssen dies nur tun, wenn Sie commit=false beim Erstellen des Kaufs bestehen.

use Coinbase\Wallet\Enum\Param;

$client->createAccountBuy($account, $buy, [Param::COMMIT => false]);
$client->commitBuy($buy);
Nach dem Login kopieren

Verkaufen

Verkaufsliste

$sells = $client->getAccountSells($account);
Nach dem Login kopieren

Verkaufsinformationen abrufen

$sell = $client->getAccountSell($account, $sellId);
Nach dem Login kopieren

Bitcoin verkaufen

use Coinbase\Wallet\Resource\Sell;

$sell = new Sell([
    'bitcoinAmount' => 1
]);

$client->createAccountSell($account, $sell);
Nach dem Login kopieren

Verkaufsbestätigung

Sie müssen dies nur tun, wenn Sie beim Erstellen des Verkaufs commit=false übergeben.

use Coinbase\Wallet\Enum\Param;

$client->createAccountSell($account, $sell, [Param::COMMIT => false]);
$client->commitSell($sell);
Nach dem Login kopieren

Einzahlung

Einzahlungsliste auflisten

$deposits = $client->getAccountDeposits($account);
Nach dem Login kopieren

Einzahlungsinformationen abrufen

$deposit = $client->getAccountDeposit($account, $depositId);
Nach dem Login kopieren

Einzahlung

use Coinbase\Wallet\Enum\CurrencyCode;
use Coinbase\Wallet\Resource\Deposit;
use Coinbase\Wallet\Value\Money;

$deposit = new Deposit([
    'amount' => new Money(10, CurrencyCode::USD)
]);

$client->createAccountDeposit($account, $deposit);
Nach dem Login kopieren

Einzahlung übermitteln

Sie müssen dies nur tun, wenn Sie beim Erstellen der Einzahlung commit=false übergeben.

use Coinbase\Wallet\Enum\Param;

$client->createAccountDeposit($account, $deposit, [Param::COMMIT => false]);
$client->commitDeposit($deposit);
Nach dem Login kopieren

Auszahlung

Auszahlungsauftrag auflisten

$withdrawals = $client->getAccountWithdrawals($account);
Nach dem Login kopieren

Stornieren

$withdrawal = $client->getAccountWithdrawal($account, $withdrawalId);
Nach dem Login kopieren

Auszahlung

use Coinbase\Wallet\Enum\CurrencyCode;
use Coinbase\Wallet\Resource\Withdrawal;
use Coinbase\Wallet\Value\Money;

$withdrawal = new Withdrawal([
    'amount' => new Money(10, CurrencyCode::USD)
]);

$client->createAccountWithdrawal($account, $withdrawal);
Nach dem Login kopieren

Senden zum Beenden

Sie Sie müssen dies nur tun, wenn Sie beim Aufruf der Auszahlungsmethode commit=true übergeben.

use Coinbase\Wallet\Enum\Param;

$client->createAccountWithdrawal($account, $withdrawal, [Param::COMMIT => false]);
$client->commitWithdrawal($withdrawal);
Nach dem Login kopieren

Zahlungsmethoden

Zahlungsmethoden auflisten

$paymentMethods = $client->getPaymentMethods();
Nach dem Login kopieren

Zahlungsmethoden abrufen

$paymentMethod = $client->getPaymentMethod($paymentMethodId);
Nach dem Login kopieren

Händler

Händler abrufen

$merchant = $client->getMerchant($merchantId);
Nach dem Login kopieren

Bestellungen

Bestellungen auflisten

$orders = $client->getOrders();
Nach dem Login kopieren

Bestellungen erhalten

$order = $client->getOrder($orderId);
Nach dem Login kopieren

Bestellungen erstellen

use Coinbase\Wallet\Resource\Order;
use Coinbase\Wallet\Value\Money;

$order = new Order([
    'name' => 'Order #1234',
    'amount' => Money::btc(1)
]);

$client->createOrder($order);
Nach dem Login kopieren

Bestellungen erstatten

use Coinbase\Wallet\Enum\CurrencyCode;

$client->refundOrder($order, CurrencyCode::BTC);
Nach dem Login kopieren

Zur Kasse gehen

Kaufliste auflisten

$checkouts = $client->getCheckouts();
Nach dem Login kopieren

Kasse erstellen

use Coinbase\Wallet\Resource\Checkout;

$params = array(
    'name'               => 'My Order',
    'amount'             => new Money(100, 'USD'),
    'metadata'           => array( 'order_id' => $custom_order_id )
);

$checkout = new Checkout($params);
$client->createCheckout($checkout);
$code = $checkout->getEmbedCode();
$redirect_url = "https://www.coinbase.com/checkouts/$code";
Nach dem Login kopieren

Kasse

$checkout = $client->getCheckout($checkoutId);
Nach dem Login kopieren

Bestellungen zur Kasse erhalten

$orders = $client->getCheckoutOrders($checkout);
Nach dem Login kopieren

Kasse erstellen Kontobestellung

$order = $client->createNewCheckoutOrder($checkout);
Nach dem Login kopieren

通知webhook和验证

$raw_body = file_get_contents('php://input');
$signature = $_SERVER['HTTP_CB_SIGNATURE'];
$authenticity = $client->verifyCallback($raw_body, $signature); // boolean
Nach dem Login kopieren

贡献和测试

测试套件使用PHPUnit构建。通过运行phpunit命令运行单元测试套件。

phpunit
Nach dem Login kopieren

还有一组集成测试,它们向API发出实际请求并检查生成的对象。要运行这些测试,必须将phpunit.xml.dist复制到phpunit.xml,为CB_API_KEYCB_API_SECRET变量提供值,并在运行测试套件时指定integration组。

phpunit --group integration
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Wallet-Bibliothek Bitcoin Coinbase, um Anwendungen mit PHP zu entwickeln (detaillierte Schritte). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage