PHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)

不言
リリース: 2023-04-04 10:30:02
転載
5300 人が閲覧しました

この記事の内容は、Bitcoin Coinbase ウォレット ライブラリを使用して PHP でアプリケーションを開発する方法 (詳細な手順) に関するものです。一定の参考価値があります。必要な友人は参照できます。お役に立てれば幸いです。 。

これは、Coinbase Wallet API v2 の公式クライアント ライブラリです。 Coinbase Wallet を PHP プロジェクトに統合するための直感的で安定したインターフェイスを提供します。

重要: このライブラリは新しい API v2 をターゲットとしているため、v2 権限が必要です (つまり、wallet:accounts:read)。まだ v1 を使用している場合は、このライブラリの古いバージョンを使用してください。

インストール

Composer を使用してライブラリをインストールします。 Composer や依存関係マネージャーに詳しくない場合は、Composer のドキュメントを読んでください。

"require": {
    "coinbase/coinbase": "~2.0"
}
ログイン後にコピー

認証

API キー

API キーと秘密キーを使用して、自分の Coinbase アカウントにアクセスします。

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

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$client = Client::create($configuration);
ログイン後にコピー

OAuth2

OAuth2 認証を使用して、自分以外のユーザー アカウントにアクセスします。このライブラリはハンドシェイク プロセスを処理せず、初期化時にアクセス トークンがあることを前提としています。 OAuth2 クライアント (league/oauth2-client など) を使用してハンドシェイク プロセスを処理できます。

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);
ログイン後にコピー

2 要素認証

Send Funds エンドポイントでは、場合によって 2FA トークンが必要になります (詳細はこちらをご覧ください)。必要に応じて特定の例外をスローします。

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',
    ]);
}
ログイン後にコピー

ページング

いくつかのエンドポイントがページ分割されます。デフォルトでは、ライブラリは特定のリクエストのデータの最初のページのみをフェッチします。結果の最初のページ以外の内容も簡単に読み込むことができます。

$transactions = $client->getAccountTransactions($account);
while ($transactions->hasNextPage()) {
    $client->loadNextTransactions($transactions);
}
ログイン後にコピー

fetch_all パラメータを使用して、完全なコレクションをロードするために必要なすべてのリクエストをライブラリに実行させることもできます。

use Coinbase\Wallet\Enum\Param;

$transactions = $client->getAccountTransactions($account, [
    Param::FETCH_ALL => true,
]);
ログイン後にコピー

警告

警告に従うのが賢明です。標準の PSR-3 ロガーが設定されている場合、ライブラリはすべての警告をログに記録します。

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

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$configuration->setLogger($logger);
$client = Client::create($configuration);
ログイン後にコピー

リソース参照

場合によっては、API は拡張リソース オブジェクトの代わりにリソース参照を返します。これらの参照は、更新することで拡張できます。

$deposit = $this->client->getAccountDeposit($account, $depositId);
$transaction = $deposit->getTransaction();
if (!$transaction->isExpanded()) {
    $this->client->refreshTransaction($transaction);
}
ログイン後にコピー

expand パラメータ リクエスト API を使用して、最初のリクエストで拡張されたリソースを返すこともできます。

use Coinbase\Wallet\Enum\Param;

$deposit = $this->client->getAccountDeposit($account, $depositId, [
    Param::EXPAND = ['transaction'],
]);
ログイン後にコピー

新しいリソースを作成するときにリソース参照を使用できるため、API からリソースを要求するオーバーヘッドを回避できます。

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
]);
ログイン後にコピー

Response

生の応答データにアクセスするには、複数の方法があります。まず、すべてのリソース オブジェクトには、オブジェクト プロパティにマップされていないフィールドにアクセスするために使用できる getRawData() メソッドがあります。

$data = $deposit->getRawData();
ログイン後にコピー

最後の HTTP 応答からの生データは、クライアント オブジェクトでも利用できます。

$data = $client->decodeLastResponse();
ログイン後にコピー

アクティブ レコーディング メソッド

このライブラリには、リソース オブジェクトに対するアクティブ レコーディング メソッドのサポートが含まれています。アプリケーションの起動時にこの機能を有効にする必要があります。

$client->enableActiveRecord();
ログイン後にコピー

有効にすると、リソース オブジェクトでアクティブな記録メソッドを呼び出すことができます。

use Coinbase\Wallet\Enum\Param;

$transactions = $account->getTransactions([
    Param::FETCH_ALL => true,
]);
ログイン後にコピー

使用法

これは、API の完全なドキュメントを提供することを目的としたものではありません。詳細については、公式ドキュメントを参照してください。

市場データ

サポートされている現地通貨のリスト

$currencies = $client->getCurrencies();
ログイン後にコピー

為替レートのリスト

$rates = $client->getExchangeRates();
ログイン後にコピー

購入価格

$buyPrice = $client->getBuyPrice('BTC-USD');
ログイン後にコピー

販売価格

$sellPrice = $client->getSellPrice('BTC-USD');
ログイン後にコピー

スポット価格

$spotPrice = $client->getSpotPrice('BTC-USD');
ログイン後にコピー

現在のサーバー時間

$time = $client->getTime();
ログイン後にコピー

ユーザー

認証情報の取得

$auth = $client->getCurrentAuthorization();
ログイン後にコピー
ログイン後にコピー

ユーザー情報の検索

$auth = $client->getCurrentAuthorization();
ログイン後にコピー
ログイン後にコピー

Get現在のユーザー

$user = $client->getCurrentUser();
ログイン後にコピー

現在のユーザーの更新

$user->setName('New Name');
$client->updateCurrentUser($user);
ログイン後にコピー

アカウント

すべてのアカウントのリスト

$accounts = $client->getAccounts();
ログイン後にコピー

アカウントの詳細のリスト

$account = $client->getAccount($accountId);
ログイン後にコピー

プライマリ アカウントの詳細のリスト

$account = $client->getPrimaryAccount();
ログイン後にコピー

アカウントをプライマリにします

$client->setPrimaryAccount($account);
ログイン後にコピー

新しいビットコインアカウントを作成します

use Coinbase\Wallet\Resource\Account;

$account = new Account([
    'name' => 'New Account'
]);
$client->createAccount($account);
ログイン後にコピー

アカウントを更新

$account->setName('New Account Name');
$client->updateAccount($account):
ログイン後にコピー

アカウントを削除

$client->deleteAccount($account);
ログイン後にコピー

アドレス

アカウントの受信アドレスを一覧表示します

$addresses = $client->getAccountAddresses($account);
ログイン後にコピー

受信アドレス情報を取得します

$address = $client->getAccountAddress($account, $addressId);
ログイン後にコピー

アドレスのトランザクションを一覧表示します

$transactions = $client->getAddressTransactions($address);
ログイン後にコピー

新しい受信アドレスを作成します

use Coinbase\Wallet\Resource\Address;

$address = new Address([
    'name' => 'New Address'
]);
$client->createAccountAddress($account, $address);
ログイン後にコピー

トランザクション

トランザクションリストのリスト

$transactions = $client->getAccountTransactions($account);
ログイン後にコピー

トランザクション情報の取得

$transaction = $client->getAccountTransaction($account, $transactionId);
ログイン後にコピー

資金の送金

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(); 
}
ログイン後にコピー

新しいアカウントへの資金の送金

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);
ログイン後にコピー

資金の適用

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);
ログイン後にコピー

リクエストの再送信

$account->resendTransaction($transaction);
ログイン後にコピー

リクエストのキャンセル

$account->cancelTransaction($transaction);
ログイン後にコピー

リクエストの完了

$account->completeTransaction($transaction);
ログイン後にコピー

購入

リスト購入

$buys = $client->getAccountBuys($account);
ログイン後にコピー

購入情報の取得

$buy = $client->getAccountBuy($account, $buyId);
ログイン後にコピー

ビットコインの購入

use Coinbase\Wallet\Resource\Buy;

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

$client->createAccountBuy($account, $buy);
ログイン後にコピー

購入確認

これは、commit=false が渡された場合にのみ実行する必要があります。購入を作成するとき。

use Coinbase\Wallet\Enum\Param;

$client->createAccountBuy($account, $buy, [Param::COMMIT => false]);
$client->commitBuy($buy);
ログイン後にコピー

販売

販売リスト

$sells = $client->getAccountSells($account);
ログイン後にコピー

販売情報の取得

$sell = $client->getAccountSell($account, $sellId);
ログイン後にコピー

ビットコインの販売

use Coinbase\Wallet\Resource\Sell;

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

$client->createAccountSell($account, $sell);
ログイン後にコピー

販売確認

#これは、販売の作成時に

commit=false が渡された場合にのみ実行する必要があります。

use Coinbase\Wallet\Enum\Param;

$client->createAccountSell($account, $sell, [Param::COMMIT => false]);
$client->commitSell($sell);
ログイン後にコピー
デポジット

デポジットリストの一覧表示

$deposits = $client->getAccountDeposits($account);
ログイン後にコピー
デポジット情報の取得

$deposit = $client->getAccountDeposit($account, $depositId);
ログイン後にコピー
デポジット

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);
ログイン後にコピー
デポジットの送信

これは、デポジットの作成時に

commit=false

が渡された場合にのみ実行する必要があります。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Coinbase\Wallet\Enum\Param; $client-&gt;createAccountDeposit($account, $deposit, [Param::COMMIT =&gt; false]); $client-&gt;commitDeposit($deposit);</pre><div class="contentsignin">ログイン後にコピー</div></div>引き出し

引き出し注文のリスト

$withdrawals = $client->getAccountWithdrawals($account);
ログイン後にコピー

キャンセル

$withdrawal = $client->getAccountWithdrawal($account, $withdrawalId);
ログイン後にコピー

引き出し

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);
ログイン後にコピー

終了の送信

これのみ引き出しメソッドを呼び出すときに

commit=true

が渡された場合に実行する必要があります。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Coinbase\Wallet\Enum\Param; $client-&gt;createAccountWithdrawal($account, $withdrawal, [Param::COMMIT =&gt; false]); $client-&gt;commitWithdrawal($withdrawal);</pre><div class="contentsignin">ログイン後にコピー</div></div>支払い方法

支払い方法のリスト

$paymentMethods = $client->getPaymentMethods();
ログイン後にコピー

支払い方法の取得

$paymentMethod = $client->getPaymentMethod($paymentMethodId);
ログイン後にコピー

販売者

販売者の取得

$merchant = $client->getMerchant($merchantId);
ログイン後にコピー

注文

注文の一覧表示

$orders = $client->getOrders();
ログイン後にコピー

注文の取得

$order = $client->getOrder($orderId);
ログイン後にコピー

注文の作成

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

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

$client->createOrder($order);
ログイン後にコピー

注文の払い戻し

use Coinbase\Wallet\Enum\CurrencyCode;

$client->refundOrder($order, CurrencyCode::BTC);
ログイン後にコピー

チェックアウト

List Checkout

$checkouts = $client->getCheckouts();
ログイン後にコピー

チェックアウトの作成

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";
ログイン後にコピー

チェックアウト

$checkout = $client->getCheckout($checkoutId);
ログイン後にコピー

チェックアウト注文の取得

$orders = $client->getCheckoutOrders($checkout);
ログイン後にコピー

チェックアウト アカウント注文の作成

$order = $client->createNewCheckoutOrder($checkout);
ログイン後にコピー

通知webhook和验证

$raw_body = file_get_contents('php://input');
$signature = $_SERVER['HTTP_CB_SIGNATURE'];
$authenticity = $client->verifyCallback($raw_body, $signature); // boolean
ログイン後にコピー

贡献和测试

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

phpunit
ログイン後にコピー

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

phpunit --group integration
ログイン後にコピー

以上がPHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!