Rumah > pembangunan bahagian belakang > tutorial php > PHP如何使用比特币Coinbase钱包库开发应用(详细步骤)

PHP如何使用比特币Coinbase钱包库开发应用(详细步骤)

不言
Lepaskan: 2023-04-04 10:30:02
ke hadapan
5515 orang telah melayarinya

本篇文章给大家带来的内容是关于PHP如何使用比特币Coinbase钱包库开发应用(详细步骤),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

这是Coinbase Wallet API v2的官方客户端库。我们提供直观,稳定的界面,将Coinbase Wallet集成到的PHP项目中。

重要提示:由于此库是针对较新的API v2的,因此需要v2权限(即wallet:accounts:read)。如果你仍在使用v1,请使用此库的旧版本。

安装

使用Composer安装库。如果你不熟悉Composer或依赖管理器,请阅读Composer文档。

"require": {
    "coinbase/coinbase": "~2.0"
}
Salin selepas log masuk

认证

API密钥

使用API密钥和密钥访问你自己的Coinbase帐户。

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

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$client = Client::create($configuration);
Salin selepas log masuk

OAuth2

使用OAuth2身份验证访问你自己以外的用户帐户。此库不处理握手过程,并假定你在初始化时具有访问token。你可以使用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);
Salin selepas log masuk

双因素身份验证

发送资金端点在某些情况下需要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',
    ]);
}
Salin selepas log masuk

分页

几个端点是分页的。默认情况下,库只会获取给定请求的第一页数据。你可以轻松加载不仅仅是第一页结果。

$transactions = $client->getAccountTransactions($account);
while ($transactions->hasNextPage()) {
    $client->loadNextTransactions($transactions);
}
Salin selepas log masuk

你还可以使用fetch_all参数让库发出加载完整集合的所有必要请求。

use Coinbase\Wallet\Enum\Param;

$transactions = $client->getAccountTransactions($account, [
    Param::FETCH_ALL => true,
]);
Salin selepas log masuk

 警告

注意警告是明智的。如果配置了一个标准PSR-3记录器,库将记录所有警告。

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

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$configuration->setLogger($logger);
$client = Client::create($configuration);
Salin selepas log masuk

资源引用

在某些情况下,API将返回资源引用来代替扩展的资源对象。可以通过刷新来扩展这些引用。

$deposit = $this->client->getAccountDeposit($account, $depositId);
$transaction = $deposit->getTransaction();
if (!$transaction->isExpanded()) {
    $this->client->refreshTransaction($transaction);
}
Salin selepas log masuk

你还可以使用expand参数请求API在初始请求中返回扩展资源。

use Coinbase\Wallet\Enum\Param;

$deposit = $this->client->getAccountDeposit($account, $depositId, [
    Param::EXPAND = ['transaction'],
]);
Salin selepas log masuk

创建新资源时可以使用资源引用,从而避免从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
]);
Salin selepas log masuk

响应

有多种方法可以访问原始响应数据。首先,每个资源对象都有一个getRawData()方法,你可以使用该方法访问未映射到对象属性的任何字段。

$data = $deposit->getRawData();
Salin selepas log masuk

来自最后一个HTTP响应的原始数据也可在客户端对象上使用。

$data = $client->decodeLastResponse();
Salin selepas log masuk

活动记录方法

该库包括对资源对象上的活动记录方法的支持。你必须在引导应用程序时启用此功能。

$client->enableActiveRecord();
Salin selepas log masuk

启用后,你可以在资源对象上调用活动记录方法。

use Coinbase\Wallet\Enum\Param;

$transactions = $account->getTransactions([
    Param::FETCH_ALL => true,
]);
Salin selepas log masuk

用法

这并不是为了提供API的完整文档。有关更多详细信息,请参阅官方文档。

市场数据

列出支持的本地货币

$currencies = $client->getCurrencies();
Salin selepas log masuk

列出汇率

$rates = $client->getExchangeRates();
Salin selepas log masuk

买入价

$buyPrice = $client->getBuyPrice('BTC-USD');
Salin selepas log masuk

卖出价

$sellPrice = $client->getSellPrice('BTC-USD');
Salin selepas log masuk

现货价格

$spotPrice = $client->getSpotPrice('BTC-USD');
Salin selepas log masuk

当前服务器时间

$time = $client->getTime();
Salin selepas log masuk

用户

获取授权信息

$auth = $client->getCurrentAuthorization();
Salin selepas log masuk
Salin selepas log masuk

查找用户信息

$auth = $client->getCurrentAuthorization();
Salin selepas log masuk
Salin selepas log masuk

获取当前用户

$user = $client->getCurrentUser();
Salin selepas log masuk

更新当前用户

$user->setName('New Name');
$client->updateCurrentUser($user);
Salin selepas log masuk

帐号

列出所有帐户

$accounts = $client->getAccounts();
Salin selepas log masuk

列出帐户详细信息

$account = $client->getAccount($accountId);
Salin selepas log masuk

列出主要帐户详细信息

$account = $client->getPrimaryAccount();
Salin selepas log masuk

将帐户设为主要帐户

$client->setPrimaryAccount($account);
Salin selepas log masuk

创建一个新的比特币账户

use Coinbase\Wallet\Resource\Account;

$account = new Account([
    'name' => 'New Account'
]);
$client->createAccount($account);
Salin selepas log masuk

更新帐户

$account->setName('New Account Name');
$client->updateAccount($account):
Salin selepas log masuk

删除帐户

$client->deleteAccount($account);
Salin selepas log masuk

地址

列出帐户的接收地址

$addresses = $client->getAccountAddresses($account);
Salin selepas log masuk

获取接收地址信息

$address = $client->getAccountAddress($account, $addressId);
Salin selepas log masuk

列出地址的交易

$transactions = $client->getAddressTransactions($address);
Salin selepas log masuk

创建一个新的接收地址

use Coinbase\Wallet\Resource\Address;

$address = new Address([
    'name' => 'New Address'
]);
$client->createAccountAddress($account, $address);
Salin selepas log masuk

交易

列出交易清单

$transactions = $client->getAccountTransactions($account);
Salin selepas log masuk

获取交易信息

$transaction = $client->getAccountTransaction($account, $transactionId);
Salin selepas log masuk

发送资金

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(); 
}
Salin selepas log masuk

将资金转入新帐户

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);
Salin selepas log masuk

申请资金

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);
Salin selepas log masuk

重新发送请求

$account->resendTransaction($transaction);
Salin selepas log masuk

取消请求

$account->cancelTransaction($transaction);
Salin selepas log masuk

完成请求

$account->completeTransaction($transaction);
Salin selepas log masuk

买入

列出购买清单

$buys = $client->getAccountBuys($account);
Salin selepas log masuk

获取购买信息

$buy = $client->getAccountBuy($account, $buyId);
Salin selepas log masuk

买入比特币

use Coinbase\Wallet\Resource\Buy;

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

$client->createAccountBuy($account, $buy);
Salin selepas log masuk

购买确认

如果在创建购买时传递commit=false,则只需执行此操作。

use Coinbase\Wallet\Enum\Param;

$client->createAccountBuy($account, $buy, [Param::COMMIT => false]);
$client->commitBuy($buy);
Salin selepas log masuk

卖出

出售清单

$sells = $client->getAccountSells($account);
Salin selepas log masuk

获取销售信息

$sell = $client->getAccountSell($account, $sellId);
Salin selepas log masuk

卖比特币

use Coinbase\Wallet\Resource\Sell;

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

$client->createAccountSell($account, $sell);
Salin selepas log masuk

出售确认

如果在创建sell时传递commit=false,则只需执行此操作。

use Coinbase\Wallet\Enum\Param;

$client->createAccountSell($account, $sell, [Param::COMMIT => false]);
$client->commitSell($sell);
Salin selepas log masuk

存款

列出存款清单

$deposits = $client->getAccountDeposits($account);
Salin selepas log masuk

获取存款信息

$deposit = $client->getAccountDeposit($account, $depositId);
Salin selepas log masuk

存款

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);
Salin selepas log masuk

提交押金

如果在创建存款时传递commit=false,则只需执行此操作。

use Coinbase\Wallet\Enum\Param;

$client->createAccountDeposit($account, $deposit, [Param::COMMIT => false]);
$client->commitDeposit($deposit);
Salin selepas log masuk

取款

列出提款单

$withdrawals = $client->getAccountWithdrawals($account);
Salin selepas log masuk

取消

$withdrawal = $client->getAccountWithdrawal($account, $withdrawalId);
Salin selepas log masuk

提款

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);
Salin selepas log masuk

提交退出

如果在调用提款方法时传递commit=true,则只需执行此操作。

use Coinbase\Wallet\Enum\Param;

$client->createAccountWithdrawal($account, $withdrawal, [Param::COMMIT => false]);
$client->commitWithdrawal($withdrawal);
Salin selepas log masuk

支付方式

列出付款方式

$paymentMethods = $client->getPaymentMethods();
Salin selepas log masuk

获取付款方式

$paymentMethod = $client->getPaymentMethod($paymentMethodId);
Salin selepas log masuk

商家

获得商家

$merchant = $client->getMerchant($merchantId);
Salin selepas log masuk

订单

列出订单

$orders = $client->getOrders();
Salin selepas log masuk

获得订单

$order = $client->getOrder($orderId);
Salin selepas log masuk

创建订单

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

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

$client->createOrder($order);
Salin selepas log masuk

退款订单

use Coinbase\Wallet\Enum\CurrencyCode;

$client->refundOrder($order, CurrencyCode::BTC);
Salin selepas log masuk

结账

列出结帐单

$checkouts = $client->getCheckouts();
Salin selepas log masuk

创建结帐单

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";
Salin selepas log masuk

结帐

$checkout = $client->getCheckout($checkoutId);
Salin selepas log masuk

获取结帐的订单

$orders = $client->getCheckoutOrders($checkout);
Salin selepas log masuk

创建结帐订单

$order = $client->createNewCheckoutOrder($checkout);
Salin selepas log masuk

通知webhook和验证

$raw_body = file_get_contents('php://input');
$signature = $_SERVER['HTTP_CB_SIGNATURE'];
$authenticity = $client->verifyCallback($raw_body, $signature); // boolean
Salin selepas log masuk

贡献和测试

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

phpunit
Salin selepas log masuk

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

phpunit --group integration
Salin selepas log masuk

Atas ialah kandungan terperinci PHP如何使用比特币Coinbase钱包库开发应用(详细步骤). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan