b2binpay / api-php
B2BinPay 的 PHP 客户端
Requires
- php: ^7.1
- ext-json: *
- guzzlehttp/guzzle: ^6.3
- litipk/php-bignumbers: ^0.8
- vlucas/phpdotenv: ^2.5
Requires (Dev)
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^7 || ^8
README
B2BinPay API 的 PHP 客户端
接受以下加密货币:Bitcoin,Bitcoin Cash,Ethereum,DASH,Litecoin,Monero,NEO,NEM,Ripple,Cardano,Dogecoin,Zcash,Stellar,EOS,TRON,Binance Coin 以及任何 ERC20 和稳定币,NEO 代币均在一个地方!
要求
Composer 安装
安装 B2BinPay API 客户端最简单的方法是通过命令行使用 Composer 要求它
composer require b2binpay/api-php
或通过编辑 composer.json
{
"require": {
"b2binpay/api-php": "^1.2"
}
}
本地安装
composer install --no-dev cp .env.example .env
支持的货币
| 货币 | 名称 | 区块链,链接 |
|---|---|---|
| ADA | Cardano | Cardano |
| BCH | Bitcoin Cash | Bitcoin Cash |
| BNB | Binance Coin | Binance Chain, BEP2 |
| BTC | Bitcoin | Bitcoin |
| BUSD-ETH | Binance USD | Ethereum, Stablecoin |
| DAI-ETH | Dai | Ethereum, Stablecoin |
| DASH | Dash | Dash |
| DOGE | Dogecoin | Dogecoin |
| EOS | EOS | EOS |
| ETH | Ethereum | Ethereum |
| GUSD-ETH | Gemini Dollar | Ethereum, Stablecoin |
| LTC | Litecoin | Litecoin |
| NEO | Neo | Neo |
| PAX-ETH | Paxos Standard | Ethereum, Stablecoin |
| TRX | TRON | TRON |
| TUSD-ETH | TrueUSD | Ethereum, Stablecoin |
| USDC-ETH | USD Coin | Ethereum, Stablecoin |
| USDT-ETH | Tether | Ethereum, Stablecoin |
| USDT-OMNI | Tether | OMNI,稳定币 |
| XEM | NEM | NEM |
| XLM | Stellar | Stellar |
| XMR | Monero | Monero |
| XRP | Ripple | Ripple |
| ZEC | Zcash | Zcash |
入门
在examples/README.md中查看带注释的示例
创建Provider实例
使用API密钥和秘密访问您的B2BinPay账户
$provider = new B2Binpay\Provider( 'API_KEY', 'API_SECRET' );
测试模式
为了使用测试沙盒,将true作为B2Binpay\Provider的第三个参数传递
$provider = new B2Binpay\Provider( 'API_KEY', 'API_SECRET', true );
警告:沙盒和主网关有其自己的密钥和秘密对!
创建账单
支付货币被认为是与您的钱包货币匹配.
创建新的账单
$bill = $provider->createBill( 'WALLET_ID', 'AMOUNT', 'CURRENCY', 'LIFETIME', 'TRACKING_ID', 'CALLBACK_URL', 'SUCCESS_URL', 'ERROR_URL' );
| 参数 | 描述 |
|---|---|
| WALLET_ID | (int) 每个钱包只负责创建分配给它的货币的账单 |
| AMOUNT | (string) 创建的货币价值金额 |
| CURRENCY | (string) 请参阅上表中的支持货币列表 |
| LIFETIME | (int) 设置账单从当前创建日期到期的时间(秒) |
| TRACKING_ID | (string) 可选. 用于账单跟踪。此值将在回调中返回 |
| CALLBACK_URL | (string) 可选. 将发送回调的URL |
| SUCCESS_URL | (string) _ |
| 可选_. 用户成功支付后可以发送的URL,仅在支付页面上使用 | |
| ERROR_URL | (string) _ |
| 可选_. 用户支付失败后可以发送的URL,仅在支付页面上使用 |
货币转换
您可以获取实际汇率并按照您的钱包参数转换支持货币。
获取BASE_CURRENCY的汇率
$rates = $provider->getRates('BASE_CURRENCY', 'RATE_TYPE');
| 参数 | 描述 |
|---|---|
| BASE_CURRENCY | (string) 可选. 计算汇率的货币。默认:USD |
| RATE_TYPE | (string) 可选. 接收汇率的类型,对于 存款 和 取款。默认:存款 |
使用实际汇率进行货币转换
$amount = $provider->convertCurrency('AMOUNT', 'BASE_CURRENCY', 'CURRENCY', $rates);
| 参数 | 描述 |
|---|---|
| AMOUNT | (string) 要转换的货币金额 |
| BASE_CURRENCY | (string) 指示金额的货币 |
| CURRENCY | (string) 您要转换的金额的货币 |
| $rates | (array) _ |
| 可选_. 当前汇率。如果未指定参数,则将再次请求汇率 |
现在您可以提供$amount变量作为createBill()方法的第二个参数,以设置准确的加密货币金额。
添加加价
您可以在现有金额上添加一些加价。
为当前金额设置10%的加价
$amount = $provider->addMarkup($amount, 'CURRENCY', 10);
| 参数 | 描述 |
|---|---|
| $amount | (string) 添加加价的金额 |
| CURRENCY | (string) 添加加价的货币 |
| 10 | (int) 添加加价的百分比 |
回调
一旦账单状态发生变化,我们的服务器可以向您配置的回调URL发送回调。此外,您还可以指定跟踪ID,它将随回调返回以识别确切的订单。为此,请向createBill()方法提供附加参数
$bill = $provider->createBill( 'WALLET_ID', $amount, 'CURRENCY', 'LIFETIME', '202009051801', 'https://my.callback.url/callback.php' );
警告:如果指定,您的回调URL应该返回状态为200的消息“OK”。在此之前,将不会认为付款已完成!
header('HTTP/1.1 200 OK'); exit('OK');
回调验证
您可以通过将其与$provider->verifySign()方法的输出进行比较来验证回调请求头
$verifySign = $provider->verifySign($_POST['sign']['time'], $_POST['sign']['hash']); if (!$verifySign) { header('HTTP/1.1 401 Unauthorized'); exit(); }
警告:对于每个回调,$ _POST ['sign'] ['hash']将生成一个新的哈希值 - 如果您收到了之前已经使用过的$ _POST ['sign'] ['hash'],则应该抛出与签名验证相同的错误
回调体
账单回调请求将包含以下数据
{
"data": {
"id": BILL_ID,
"url": URL_TO_BILL_PAYMENT_PAGE,
"address": BLOCKCHAIN_ADDRESS,
"created": TIME,
"expired": TIME
|
NULL,
"status": BILL_STATUS,
"tracking_id": TRACKING_ID,
"callback_url": URL
|
NULL
"amount": AMOUNT_MULTIPLIED_BY_TEN_IN_POW,
"actual_amount": ALREADY_PAID_AMOUNT_MULTIPLIED_BY_TEN_IN_POW,
"pow": POW,
"message": MESSAGE
|
NULL,
"transactions": [
{
"id": TRANSACTION_ID,
"bill_id": BILL_ID,
"created": TIME,
"amount": TRANSACTION_AMOUNT_MULTIPLIED_BY_TEN_IN_POW
",
"pow": POW,
"status": TRANSACTION_STATUS,
"transaction": HASH_TRANSACTION_IN_BLOCKCHAIN,
"type": 0,
"currency": {
"iso": ISO_CODE_CURRENCY,
"alpha": SYMBOL_CURRENCY
}
}
],
"currency": {
"iso": ISO_CODE_CURRENCY,
"alpha": SYMBOL_CURRENCY
},
"sign": {
"time": TIME,
"hash": HASH
}
}
}
取款回调请求将包含以下数据
{
"data": {
"id": WITHDRAW_ID,
"virtual_wallet_id": VIRTUAL_WALLET_ID,
"with_fee": INCLUDE_COMMISSION_IN_WITHDRAW,
"created": TIME,
"address": BLOCKCHAIN_ADDRESS,
"amount": AMOUNT_MULTIPLIED_BY_TEN_IN_POW,
"fee": BLOCKCHAIN_FEE_MULTIPLIED_BY_TEN_IN_POW,
"pow": POW,
"status": WITHDRAW_STATUS,
"transaction": HASH_TRANSACTION_IN_BLOCKCHAIN
|
NULL
"tracking_id": TRACKING_ID
|
NULL,
"unique_id": UNIQUE_WITHDRAW_ID,
"callback_url": URL
|
NULL,
"message": MESSAGE
|
NULL,
"currency": {
"iso": ISO_CODE_CURRENCY,
"alpha": SYMBOL_CURRENCY
},
"sign": {
"time": TIME,
"hash": HASH
}
}
}
创建取款
从虚拟钱包中,您可以向任何区块链进行提款,为此您需要指定地址和货币.
创建新的提款
$bill = $provider->createWithdrawal( 'VIRTUAL_WALLET_ID', 'AMOUNT', 'CURRENCY', 'ADDRESS', 'UNIQUE_ID', 'TRACKING_ID', 'CALLBACK_URL', 'MESSAGE', 'WITH_FEE' );
| 参数 | 描述 |
|---|---|
| VIRTUAL_WALLET_ID | (int) 虚拟钱包的ID。如果虚拟钱包的货币与提款所需货币不匹配,系统将自动按当前汇率进行转换 |
| AMOUNT | (string) 要提款的金额 |
| CURRENCY | (string) 请参阅上表中的支持货币列表 |
| ADDRESS | (string) 您希望提款的区块链地址 |
| UNIQUE_ID | (int) 任何唯一的正数。这个数字在每次提款时不应重复 |
| TRACKING_ID | (string) 可选. 用于提款追踪。此值将在回调中返回 |
| CALLBACK_URL | (string) 可选. 将发送回调的URL |
| MESSAGE | (string) 可选. 用于Ripple区块链、NEM、Stellar、EOS和Binance Chain |
| WITH_FEE | (boolean) _ |
| 可选_. 将手续费包含在提款金额中。并非所有区块链都支持此方法 |
系统状态列表
账单状态列表
| 状态 | 描述 |
|---|---|
| -2 | 失败 |
| -1 | 过期 |
| 1 | 创建 |
| 2 | 已支付 |
交易状态列表
| 状态 | 描述 |
|---|---|
| -4 | 等待返回 |
| -3 | 已返回 |
| -2 | 失败 |
| -1 | 过期 |
| 0 | 待处理 |
| 1 | 已发送 |
| 2 | 已批准 |
提款状态列表
| 状态 | 描述 |
|---|---|
| -2 | 失败 |
| 0 | 等待中 |
| 1 | 待处理 |
| 2 | 已发送 |
转账状态列表
| 状态 | 描述 |
|---|---|
| -1 | 失败 |
| 0 | 待处理 |
| 1 | 已发送 |
转账类型列表
| 状态 | 描述 |
|---|---|
| 0 | 区块链存款 |
| 1 | 银行转账 |
| 2 | 自动提款 |
| 3 | 区块链提款手续费 |
| 4 | 代币支付手续费 |
| 5 | 财务存款 |
| 6 | 银行转账手续费 |
| 7 | 手续费 |
许可证
B2BinPay\API-PHP遵循MIT许可证。