検索
ホームページバックエンド開発PHPチュートリアルPHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)

この記事の内容は、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

が渡された場合にのみ実行する必要があります。 <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>引き出し

引き出し注文のリスト

$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

が渡された場合に実行する必要があります。 <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>支払い方法

支払い方法のリスト

$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思否で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
PHPセッションの概念を簡単に説明してください。PHPセッションの概念を簡単に説明してください。Apr 26, 2025 am 12:09 AM

phpssionsStrackuserdataacrossmultiplepagerequestsusingauniqueidstoredinacookie.here'showtomanageetheemefectively:1)Startassession withsession_start()andstoredatain $ _ session.2)RegeneratesseSsessidafterloginwithsession_id(the topreventes_id)

PHPセッションに保存されているすべての値をどのようにループしますか?PHPセッションに保存されているすべての値をどのようにループしますか?Apr 26, 2025 am 12:06 AM

PHPでは、次の手順を通じてセッションデータを繰り返すことができます。1。session_start()を使用してセッションを開始します。 2。$ _Sessionアレイのすべてのキー価値ペアを介してforeachループを反復します。 3.複雑なデータ構造を処理する場合、is_array()またはis_object()関数を使用し、print_r()を使用して詳細情報を出力します。 4.トラバーサルを最適化する場合、ページングを使用して、一度に大量のデータの処理を避けることができます。これにより、実際のプロジェクトでPHPセッションデータをより効率的に管理および使用するのに役立ちます。

ユーザー認証にセッションを使用する方法を説明します。ユーザー認証にセッションを使用する方法を説明します。Apr 26, 2025 am 12:04 AM

このセッションは、サーバー側の状態管理メカニズムを介してユーザー認証を実現します。 1)セッションの作成と一意のIDの生成、2)IDはCookieを介して渡されます。3)サーバーストアとIDを介してセッションデータにアクセスします。

PHPセッションにユーザーの名前を保存する方法の例を挙げてください。PHPセッションにユーザーの名前を保存する方法の例を挙げてください。Apr 26, 2025 am 12:03 AM

tostoreauser'snameInappession、starthessession withsession_start()、thensignthenameto $ _session ['username']。1)ousession_start()toinitializethessession.2)assighttheuser'snameto $ _ session ['username']

PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール