当前位置: 首页 > 软件库 > Web3 > 开源货币/比特币 >

api-php

B2BinPay API client for PHP
授权协议 MIT License
开发语言 Python
所属分类 Web3、 开源货币/比特币
软件类型 开源软件
地区 不详
投 递 者 李洋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

B2BinPay API client for PHP

Accepting Bitcoin, Bitcoin Cash, Ethereum, DASH, Litecoin, Monero, NEO, NEM, Ripple, Cardano, Dogecoin, Zcash, Stellar, EOS, TRON, Binance Coin and any ERC20 and stablecoin, NEO tokens in one place!

Scrutinizer Code Quality

Requirements

  • B2BinPay account
  • PHP >= 7.1 (If you need 7.0, please, use version 1.1.0)
  • PHP extensions enabled: cURL, JSON

Composer Installation

The easiest way to install the B2BinPay API client is to require itwith Composer through command-line:

composer require b2binpay/api-php

or by editing composer.json:

{
  "require": {
    "b2binpay/api-php": "^1.2"
  }
}

Local installation

composer install --no-dev
cp .env.example .env

Support currencies

Currency Name Blockchain, links
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, Stablecoin
XEM NEM NEM
XLM Stellar Stellar
XMR Monero Monero
XRP Ripple Ripple
ZEC Zcash Zcash

Getting started

See examples with comments in examples/README.md

Create Provider instance

Use the API key and secret to access your B2BinPay account:

$provider = new B2Binpay\Provider(
    'API_KEY',
    'API_SECRET'
);

Test Mode

In order to use testing sandbox, pass true as a third parameter for B2Binpay\Provider:

$provider = new B2Binpay\Provider(
    'API_KEY',
    'API_SECRET',
    true
);

Warning: Sandbox and main gateway have their own pairs of key and secret!

Create a bill

The payment currency is considered to match the currency of your wallet.

Create a new bill:

$bill = $provider->createBill(  
        'WALLET_ID',
        'AMOUNT',
        'CURRENCY',
        'LIFETIME',
        'TRACKING_ID',
        'CALLBACK_URL',
        'SUCCESS_URL',
        'ERROR_URL'
  );
Params Description
WALLET_ID (int) Each wallet is responsible for creating bill only in the currency assigned to it
AMOUNT (string) Amount in the value of the currency being created
CURRENCY (string) See list of supported currencies in the table above
LIFETIME (int) Number in seconds that will set bill to expire from the current creation date
TRACKING_ID (string) Optional. Track for bill tracking. This value will be returned on callback
CALLBACK_URL (string) Optional. URL to which the callback will be sent
SUCCESS_URL (string) _
Optional_. URL to which the user can be sent after successful payment, is used only on the payment page
ERROR_URL (string) _
Optional_. URL to which the user can be sent after unsuccessful payment, is used only on the payment page

Convert currency

You can get actual rates and convert supported currencies respecting your wallet's parameters.

Get rates for BASE_CURRENCY:

$rates = $provider->getRates('BASE_CURRENCY', 'RATE_TYPE');
Params Description
BASE_CURRENCY (string) Optional. Currency to which the rates will be calculated. Default: USD
RATE_TYPE (string) Optional. Receiving the type of rates, for deposit and withdrawal. Default: deposit

Convert currency using actual rates:

$amount = $provider->convertCurrency('AMOUNT', 'BASE_CURRENCY', 'CURRENCY', $rates);
Params Description
AMOUNT (string) The amount in the currency to be converted
BASE_CURRENCY (string) The currency in which the amount is indicated
CURRENCY (string) Currency in which you want to convert the amount
$rates (array) _
Optional_. Current rates. If the parameter is not specified, then the rates will be requested again

Now you can provide $amount variable as a second parameter for createBill() method to set an accurate amount ofcryptocurrency.

Add markup

You can add some markup to the existing amount.

Set 10% markup for the current amount:

$amount = $provider->addMarkup($amount, 'CURRENCY', 10);
Params Description
$amount (string) Amount to add markup
CURRENCY (string) Currency in which markup is added
10 (int) Percentage on which to add markup

Callback

Once bill status changed, our server can send a callback to your configured Callback URL. Also, you can specify TrackingID, which will return with the callback to identify the exact order. To do that provide additional parametersto createBill() method:

$bill = $provider->createBill(
        'WALLET_ID',
        $amount,
        'CURRENCY',
        'LIFETIME',
        '202009051801',
        'https://my.callback.url/callback.php'
    );

Warning: If specified, your Callback URL should return the message "OK" with status 200. Until that payment will notbe considered complete!

header('HTTP/1.1 200 OK');
exit('OK');

Callback verification

You can verify Callback request headers by comparing it with the $provider->verifySign() method output:

$verifySign = $provider->verifySign($_POST['sign']['time'], $_POST['sign']['hash']);
if (!$verifySign) {
    header('HTTP/1.1 401 Unauthorized');
    exit();
}

WARNING: for each callback $ _POST ['sign'] ['hash'] a new one is generated - if youreceived $ _POST ['sign'] ['hash'] which was already used before, you should throw the same error as for signatureverification

Callback body

Bill callback request will contain the following data:

{
  "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
    }
  }
}

Withdraw callback request will contain the following data:

{
  "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
    }
  }
}

Create a withdrawal

From a virtual wallet, you can make withdrawals to any blockchain, for this you need to specify ADDRESS and CURRENCY.

Create a new withdraw:

$bill = $provider->createWithdrawal(  
        'VIRTUAL_WALLET_ID',
        'AMOUNT',
        'CURRENCY',
        'ADDRESS',
        'UNIQUE_ID',
        'TRACKING_ID',
        'CALLBACK_URL',
        'MESSAGE',
        'WITH_FEE'
    );
Params Description
VIRTUAL_WALLET_ID (int) ID virtual wallet. If the currency of the virtual wallet does not match the currency in which the withdrawal is to be made, the system will automatically convert at the current rate
AMOUNT (string) Amount to be withdrawn
CURRENCY (string) See list of supported currencies in the table above
ADDRESS (string) Blockchain address to which you want to withdraw
UNIQUE_ID (int) Any unique positive number. This number should not be repeated from withdrawal to withdrawal
TRACKING_ID (string) Optional. Track for withdraw tracking. This value will be returned on callback
CALLBACK_URL (string) Optional. URL to which the callback will be sent
MESSAGE (string) Optional. Used for Ripple blockchain, NEM, Stellar, EOS and Binance Chain
WITH_FEE (boolean) _
Optional_. Include the commission in the withdrawal amount. Not all blockchains support this method

System statuses lists

List of bills statuses

Status Description
-2 Failed
-1 Expired
1 Created
2 Paid

List of transactions statuses

Status Description
-4 Waiting for return
-3 Returned
-2 Failed
-1 Expired
0 Pending
1 Sent
2 Approved

List of withdraws statuses

Status Description
-2 Failed
0 Waiting
1 Pending
2 Sent

List of transfers statuses

Status Description
-1 Failed
0 Pending
1 Sent

List of transfers types

Status Description
0 Deposit from blockchain
1 Bank transfer
2 Auto withdraw
3 Withdraw blockchain fee
4 Token payout fee
5 Finance deposit
6 Bank transfer commission
7 Commissions

License

B2BinPay\API-PHP is licensed under the MIT License.

  • Ten·Api地址:https://tenapi.cn Ten·Api使用文档:https://docs.tenapi.cn/ 一言 随机动漫图片 二维码生成 每日Bing Ico站标获取 添加QQ好友 获取QQ头像 获取空间头像 QQ一键加群 获取昵称,头像 歌曲直链解析 QQ在线状态 历史上的今天 ICP备案查询 百度收录查询 蓝奏直链解析 哔哩哔哩信息 手机号归属地 爱站权重查询 IP签名档

  • 无法启动此程序因为计算机中丢失api-ms-win-crt-process-l1-1-0.dll的解决方案

  • 缺少 api-ms-win-crt-runtime-l1-1-0.dll php5 导致需安装 Visual C++ Redistributable for Visual Studio 2012 Update 4 缺少VCRUNTIME140.DLL php7 导致需安装 Visual C++ Redistributable for Visual Studio 2015

  • 重装了系统,要做php实验,安装Wampserver32是提示这个错误,去system32中没有找到这个dll,但是在system64中找到了。所以一开始以为卸载了32位的再安装Wampserver64就能解决,没想到仍然报错。又看了看驱动精灵也没检测出来到底缺什么。后来看了文章http://blog.csdn.net/huqiao1206/article/details/50768481,下载了

  • 前言 springmvc要进行数据校验,通常是利用hibernate中的校验框架validation,使用validation需要在项目中加入三个jar包: hibernate-validator-4.3.0.Final.jar jboss-logging-3.1.0.cr2.jar validation-api-1.0.0.GA.jar 这是学习ssm框架时老师说要导入的三个jar包 问题 在你

  • 无法启动此程序因为计算机中丢失 api-ms-win-crt-runtime-l1-1-0.dll的解决方案

  • 下载地址:http://www.jb51.net/dll/api-ms-win-crt-conio-l1-1-0.dll.html#download www.jb51.net/dll/部分dll文件中有多个目录分别表示多个系统专用文件 X86表示32位系统 x64表示64位系统 dll控件常规安装方法(仅供参考): 一、如果在运行某软件或编译程序时提示缺少、找不到dll等类似提示,您可将从脚本之家

  • 1.sp-api介绍: https://developer.amazonservices.com/ 2.github文档: https://github.com/amzn/selling-partner-api-docs 3.开发者文档: 3.1 英文版 3.2 中文版 4.php版sdk: https://github.com/clousale/amazon-sp-api-php PHP 的这个

  • 目前,语音识别,即将语音内容转换为文字的技术已经比较成熟,遥想当时锤子发布会上展示的讯飞输入法语音识别,着实让讯飞火了一把。由于此类语音识别需要采集大量的样本,才能达到一定的准确度,个人很难从零开始搭建。但是,许多拥有语音识别技术的公司,或多或少会提供一些API或者SDK供开发者使用,这样就把语音识别的门槛降到了一个很低的程度,只需几行代码即可实现。下面我介绍以下如何使用Python调用百度的RE

  • 传入姓名、身份证号,校验此二要素是否 一致。用来实名认证 请求地址 HTTPGET/POST https://www.youwk.cn/api/sm 请求参数 参数名 参数说明 key 用户请求密钥,可在 密钥管理页面 申请 name 姓名 idcard 身份证号码 请求结果参数说明 参数名 参数说明 code 状态码 msg 状态说明 data.name 姓名 data.idcard 身份证号码

  • PHP后端: 一、请求地址示例 1、请求地址 http://www.zhikev2.com/exam/seeTest?timeStamp=1525096310&apiSign=324owefldskfjsdk&userName=luowei 注:timeStamp为当前时间戳 2、参数说明 上述请求地址中附带了三个参数timeStamp、apiSign、userName 二、apiSign生成规

  • 短信发送API(SendSms)---PHP 更新时间:2017-08-17 15:16:35   分享:    发送短信接口(SendSms) 步骤 1 创建阿里云账号 为了访问短信服务,您需要有一个阿里云账号。如果没有,可首先按照如下步骤创建阿里云账号: 访问阿里云 官方网站,单击页面上的 免费注册 按钮。 按照屏幕提示完成注册流程并进行实名认证,短信服务只支持实名认证用户使用。为了更好地使用

  •  对于php的入学者来说,很少接触api,因此对于如何写不知所措,其实开发API 比开发WEB 更简洁,但可能逻辑更复杂,因为API 其实就是数据输出,不用呈现页面,所以也就不存在MVC(API 只有M 和C),和WEB 开发一样,首先需要一些相关的参数,这些参数,都会由客户端传过来,也许是GET也许是POST,这个需要开发团队相互之间约定好,或者制定统一规范。      1. 我们写接口就要有一

  • 1,xml报文不用附加"<?xml version="1.0" encoding="UTF-8" ?>",不支持,会报格式错误。 2,提交服务器时要重点注意。     直接使用curl方式的,一定要把数据做http_build_query,千万不要直接放数组里提交。 $params = array( 'xml' => 'your xml', 'verifyCode'

  • DeepL的翻译效果比google baidu 有道 必应强很多,目前只有科大讯飞的翻译可以和它比,因为公司自己是跨境公司,经常翻译外国人的语句。只有这俩比较OK。但是科大的翻译又好贵,DeepL的比较划算 function DeepL($value,$auth_key,$target){ $ch = curl_init(); curl_setopt($ch, CURLOPT_

  • 概述 目前市场上有很多家的语音识别接口可用,简单测试都不要钱。国内的BAT和科大讯飞,国外的微软和谷歌都提供了中文的语音识别接口,既有sdk又有webAPI。我的测试都是在python3环境下进行的。 最终选择百度和科大讯飞的接口。主要是考虑中文识别应该国内厂商做的更好。 免费试用阶段,科大讯飞每天限定500次调用。百度则只限制每秒20次,总次数没限制。 试用下来的感觉就是,科大讯飞的接口更快,断

  •    百度地图开放平台地理编码服务和逆地理编码服务的api文档地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding      Geocoding API 是一类接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# 、C++、Java等开发语言发送请求且接收JSON、XM

  • PHP中调用接口 如:http://localhost/operate.php?act=get_user_list&type=json 在这里operate.php相当于一个接口,其中get_user_list 是一个API(获取用户列表),讲求返回的数据类型为JSON格式。 你只需要在你PHP代码中执行这条链接他就会返回。 GET方式的直接使用 $file_contents = file_get

  • 安装 Google API php 客户端类库 安装 需求 PHP version 5.2.1 以上. JSON PHP 扩展. 支持一个可写的文件系统或机器。 获取客户端类库 有两种方式获取该客户端类库。 使用Composer 你可以通过添加到composer.json中,使该类库作为依赖进行安装. "require": {   "google/apiclient": "1.0.*@beta"

  • 做一些视频小程序都会用到的接口php源码 比如小程序解析接口请求方式调用接口示例: $url = ‘https://v.douyin.com/2Jfw4Mo/’; //请把此处的uid和token换成你自己的 这是GET请求方式 a p i = h t t p s : / / e e a p i . c n / a p i / v i d e o / 32886 D D 5 A 6 A 23 C

  • 废话不多说,一针见血,go! 一起来看 API Caching 缓存 缓存类允许您管理缓存AssetBundles,下载使用 WWW.LoadFromCacheOrDownload Caching.Authorize 授权 授权这个Unity内容使用缓存 Caching.CleanCache 清除缓存 删除这个内容相关的缓存文件夹 当你已经有一个缓存许可证时,这个函数才能激活 Caching.Au

 相关资料
  • MultiSearch API multi search API 允许在同一API中执行多个搜索请求。它的端点(endpoint)是 _msearch 。 首先请看MultiSearch API Query 文档 SearchRequestBuilder srb1 = client .prepareSearch().setQuery(QueryBuilders.queryStringQue

  • 6.6 ABP表现层 - AJAX API 6.6.2.1 AJAX操作问题 现代的应用经常会使用AJAX,尤其是单页应用,几乎是和服务器通信的唯一手段,执行AJAX通常会有以下步骤: 基本上:为了执行一个AJAX调用,首先你要在客户端提供一个可供请求的URL,选取提交数据和一个方法(GET,POST,PUT,DELETE)。 等待调用完成后,处理返回结果。当执行AJAX调用服务器端的时候,可能会

  • Criteria API是一个预定义的API,用于定义实体的查询。 它是定义JPQL查询的另一种方法。 这些查询是类型安全的,可移植且易于通过更改语法进行修改。 与JPQL类似,它遵循抽象模式(易于编辑模式)和嵌入对象。 元数据API与标准API混合以为标准查询建模持久实体。 标准API的主要优点是可以在编译期间更早地检测到错误。 基于字符串的JPQL查询和基于JPA标准的查询在性能和效率上是相同

  • 什么是REST架构? REST代表REpresentational State Transfer。 REST是基于Web标准的体系结构,使用HTTP协议。 它围绕资源,其中每个组件都是资源,资源由使用HTTP标准方法的公共接口访问。 REST最初由Roy Fielding于2000年推出。 REST服务器只提供对资源和REST客户端访问的访问,并使用HTTP协议修改资源。 这里每个资源都由URI

  • 问题内容: 此处的典型示例是Twitter的API。我从概念上了解REST API的工作原理,从本质上讲,它只是针对您的特定请求的服务器查询,然后您会在其中收到响应(JSON,XML等),很棒。 但是我不确定在后台如何使用流API。我了解如何食用。例如,使用Twitter收听回复。从响应中侦听数据,并在其中分批发送推文。在字符串缓冲区中建立块,然后等待换行指示Tweet的结束。但是他们正在做些什么

  • 我正在开发一个基于Apache JackRabbit OAK(1.3.2)的Web应用程序,它公开了2套API: JCR API 橡木原料药 我的问题是应用程序应该使用哪种API?我能够使用任一API实现应用程序操作。在特性/功能(如有)方面的权衡是什么。 谢啦

  • 自检API Stylus支持自我检测的API, 这允许混写以及函数反应调用者的相关性。 混写(mixin) mixin这个局部变量在函数体内自动赋值。如果调用的函数在根级别,则mixin包含字符串root, 如果其他情况,则是block, 如果调用函数有返回值,最终为false. 下面这个例子中,我们定义reset(), 根据其是混入了根部,还是混入块状域,还是混入返回值中,来修改其值,并作为fo

  • GDI +(图形绘制界面), CoreGraphics和Cairo libraries构成了wxPython中绘制API的框架。 wx.GraphicsContext是主要的可绘制对象,使用它可以创建各种Device Context对象。 wx.DC是一个抽象类。 其派生类用于在不同设备上呈现图形和文本。 设备上下文类是 - wx.ScreenDC - 使用它在屏幕上绘画,而不是单个窗口。 wx.