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许可证。