banxa/php-sdk
Composer 安装命令:
composer require banxa/php-sdk
包简介
Banxa Official PHP API SDK for partners
README 文档
README
Banxa official PHP SDK
Table of Contents
General info
The Banxa SDK is a plug and play ready to go implementation to access our services.
It allows for a simple and fast integration.
Installation
Install the package via composer
composer require banxa/php-sdk
Authentication
ApiKey and ApiSecret
While on-boarding with banxa, you will be provided with API keys and a subdomain ([partnername].banxa.com),
initially these will be for the sandbox
environment.
Once you are done testing the implementation, you will receive the credentials to use the production environment.
Dependencies
| PHP | Guzzle |
|---|---|
| ^8.0 | ^7.0 |
Usage
Banxa::create($subdomain, $apiKey, $apiSecret, $testMode)
| Property | type | required | description |
|---|---|---|---|
$subdomain |
string |
true |
The subdomain provided by banxa. ([partnername].banxa.com) |
$apiKey |
string |
true |
Given API key |
$apiSecret |
string |
true |
Given API Secret |
$testMode |
bool |
false |
Enable if testing, and provide sandbox api key and secret to method |
Sandbox
$subdomain = 'partner'; $sandboxApiKey = 'xxx-xxx-xxx-xxx-xxx'; $sandboxApiSecret = 'xxxx-xxxx-xxxx-xxxx'; $testMode = true; Banxa::create($subdomain, $sandboxApiKey, $sandboxApiSecret, $testMode)
Production
$subdomain = 'partner'; $apiKey = 'xxx-xxx-xxx-xxx-xxx'; $apiSecret = 'xxxx-xxxx-xxxx-xxxx'; Banxa::create($subdomain, $apiKey, $apiSecret)
Localisation
Countries
Global
Fetch all available countries
$banxa->getCountries()
Result Example
[
[
"country_code" => "AD",
"country_name" => "Andora"
],
[
"country_code" => "AE",
"country_name" => "United Arab Emirates"
],
]
US States
Fetch all available US States
$banxa->getUsStates()
Result Example
[
[
"state_code" => "AL",
"state_name" => "Alabama"
],
[
"state_code" => "AK",
"state_name" => "Alaska"
],
]
Currencies
Fiat
Buy order type
Fetch all available fiat currencies for buy order type.
$banxa->getBuyFiatCurrencies()Sell order type
Fetch all available fiat currencies for sell order type.
$banxa->getSellFiatCurrencies()
Result Example
[
[
"fiat_code" => "EUR",
"fiat_name" => "Euro",
"fiat_symbol" => "€",
],
[
"fiat_code" => "GBP",
"fiat_name" => "British Pound Sterling",
"fiat_symbol" => "£",
],
]
Crypto
Buy order type
Fetch all cryptocurrencies for buy order type.
$banxa->getBuyCryptoCurrencies()Sell order type
Fetch all cryptocurrencies for sell-order type.
$banxa->getSellCryptoCurrencies()
Result Example
[
[
"coin_code"=> "BTC",
"coin_name"=> "Bitcoin",
"blockchains"=> [
[
"code"=> "BTC",
"description"=> "Bitcoin",
"is_default"=> true
]
]
],
[
"coin_code"=> "ETH",
"coin_name"=> "Ethereum",
"blockchains"=> [
[
"code"=> "ETH",
"description"=> "Ethereum (ERC-20)",
"is_default"=> true
],
[
"code"=> "MATIC",
"description"=> "Polygon",
"is_default"=> false
]
]
]
]
Payment Methods
Buy & Sell order type payment methods
Fetch all available payment providers for buy and sell order type
$banxa->getAllPaymentMethods()
Result Example
[
[
"id" => 6036,
"paymentType" => "WORLDPAYCREDIT",
"name" => "Visa/Mastercard",
"description" => "Conveniently buy digital currency using your personal VISA or MasterCard.",
"logo_url" => "https://partner.banxa.com/images/payment-providers/worlpaycredit.png",
"status" => "ACTIVE",
"supported_agents" => [
[
"os" => "ios",
"browser" => "safari"
],
[
"os" => "macos",
"browser" => "safari"
],
[
"os" => "ipados",
"browser" => "safari"
]
],
"type" => "FIAT_TO_CRYPTO",
"supported_fiat" => [
"AED",
],
"transaction_fees" => [
[
"fiat_code" => "AED",
"coin_code" => "BTC",
"fees" => [
[
"name" => "surcharge",
"amount" => 3,
"type" => "fixed"
]
]
],
]
],
[
"id" => 6036,
"paymentType" => "WORLDPAYAPPLE",
"name" => "Apple Pay",
"description" => "Conveniently buy digital currency using your Apple Pay wallet.",
"logo_url" => "https://partner.banxa.com/images/payment-providers/apple-pay.png",
"status" => "ACTIVE",
"supported_agents" => [
[
"os" => "ios",
"browser" => "safari"
],
[
"os" => "macos",
"browser" => "safari"
],
[
"os" => "ipados",
"browser" => "safari"
]
],
"type" => "CRYPTO_TO_FIAT",
"supported_fiat" => [
"AED",
],
"transaction_fees" => [
[
"fiat_code" => "AED",
"coin_code" => "BTC",
"fees" => [
[
"name" => "surcharge",
"amount" => 3,
"type" => "fixed"
]
]
],
]
]
];
Buy order type payment methods
Fetch all available payment providers for buy order type
$banxa->getBuyPaymentMethods($fiatCode, $coinCode)
| Property | type | required | description |
|---|---|---|---|
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
Result Example
[ "id" => 6036, "paymentType" => "WORLDPAYAPPLE", "name" => "Apple Pay", "description" => "Conveniently buy digital currency using your Apple Pay wallet.", "logo_url" => "https://partner.banxa.com/images/payment-providers/apple-pay.png", "status" => "ACTIVE", "supported_agents" => [ [ "os" => "ios", "browser" => "safari" ], [ "os" => "macos", "browser" => "safari" ], [ "os" => "ipados", "browser" => "safari" ] ], "type" => "FIAT_TO_CRYPTO", "supported_fiat" => [ "AED", ], "transaction_fees" => [ [ "fiat_code" => "AED", "coin_code" => "BTC", "fees" => [ [ "name" => "surcharge", "amount" => 3, "type" => "fixed" ] ] ], ] ]
Sell order type payment methods
Fetch all available payment methods for sell order type
$banxa->getSellPaymentMethods($coinCode, $fiatCode)
| Property | type | required | description |
|---|---|---|---|
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
Result Example
[ "id" => 6036, "paymentType" => "DIRECTCREDIT", "name" => "Bank Transfer", "description" => "Sell digital currency to us and have the value directly credited to your bank account", "logo_url" => "https://partner.banxa.com/images/payment-providers/directcredit.png", "status" => "ACTIVE", "supported_agents" => [ [ "os" => "ios", "browser" => "safari" ], [ "os" => "macos", "browser" => "safari" ], [ "os" => "ipados", "browser" => "safari" ] ], "type" => "CRYPTO_TO_FIAT", "supported_fiat" => [ "AED", ], "transaction_fees" => [ [ "fiat_code" => "AED", "coin_code" => "BTC", "fees" => [ [ "name" => "surcharge", "amount" => 3, "type" => "fixed" ] ] ], ] ]
Prices
Get prices for Payment Methods to obtain a payment method id for each specific fiat.
Buy order types pricing
Fetch all available prices for buy order type
$banxa->getAllBuyPrices( $fiatCode, $coinCode, $fiatAmount, $blockchain )
| Property | description | required | description |
|---|---|---|---|
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$fiatAmount |
string/int/float |
true |
Fiat amount |
$blockchain |
string |
false |
Blockchain code e.g. 'ETH' or 'TRON' see Crypto to get a list all available blockchains per coin. |
Result Example
[
"spot_price" => "1.07",
"prices" => [
[
"payment_method_id" => 6047,
"type" => "FIAT_TO_CRYPTO",
"spot_price_fee" => "0.00",
"spot_price_including_fee" => "1.07",
"coin_amount" => "93.84000000",
"coin_code" => "USDT",
"fiat_amount" => "100.00",
"fiat_code" => "USD",
"fee_amount" => "0.00",
"network_fee" => "2.37"
],
[
"payment_method_id" => 6058,
"type" => "FIAT_TO_CRYPTO",
"spot_price_fee" => "0.00",
"spot_price_including_fee" => "1.09",
"coin_amount" => "93.84000000",
"coin_code" => "USDT",
"fiat_amount" => "100.00",
"fiat_code" => "USD",
"fee_amount" => "0.00",
"network_fee" => "2.37"
]
]
]
Buy order type pricing
Fetch single price for buy order type for a specific payment method
$banxa->getBuyPrice( $fiatCode, $coinCode, $fiatAmount, $paymentMethodId, $blockchain )
| Property | type | required | required |
|---|---|---|---|
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$fiatAmount |
string/int/float |
true |
Fiat amount |
$paymentMethodId |
string/int |
true |
Unique ID for the payment method that you want to get prices for. see Payment Methods to get a list of payment providers. |
$blockchain |
string |
false |
Blockchain code e.g. 'ETH' or 'TRON' see Crypto to get a list all available blockchains per coin. |
Result Example
[
"payment_method_id" => 6058,
"type" => "FIAT_TO_CRYPTO",
"spot_price_fee" => "0.00",
"spot_price_including_fee" => "1.09",
"coin_amount" => "93.84000000",
"coin_code" => "USDT",
"fiat_amount" => "100.00",
"fiat_code" => "USD",
"fee_amount" => "0.00",
"network_fee" => "2.37"
]
Sell order types pricing
Fetch all available prices for sell order type
$banxa->getAllSellPrices( $coinCode, $fiatCode, $coinAmount )
| Property | type | required | description |
|---|---|---|---|
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinAmount |
string/int/float |
true |
Crypto amount that will be used to calculate the fiat amount |
Result Example
[
"spot_price" => "1.07",
"prices" => [
[
"payment_method_id" => 6045,
"type" => "CRYPTO_TO_FIAT",
"spot_price_fee" => "0.00",
"spot_price_including_fee" => "32500.00",
"coin_amount" => "0.02000000",
"coin_code" => "BTC",
"fiat_amount" => "100.00",
"fiat_code" => "AUD",
"fee_amount" => "0.00",
"network_fee" => "0.00"
],
[
"payment_method_id" => 6046,
"type" => "CRYPTO_TO_FIAT",
"spot_price_fee" => "0.00",
"spot_price_including_fee" => "32500.00",
"coin_amount" => "0.04000000",
"coin_code" => "BTC",
"fiat_amount" => "650.00",
"fiat_code" => "AUD",
"fee_amount" => "0.00",
"network_fee" => "0.00"
],
]
]
Sell order type pricing
Fetch single price for buy order type for a specific payment method
$banxa->getSellPrice( $coinCode, $fiatCode, $coinAmount, $paymentMethodId )
| Property | type | required | description |
|---|---|---|---|
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinAmount |
string/int/float |
true |
Crypto amount that will be used to calculate |
$paymentMethodId |
string/int |
true |
Unique ID for the payment method that you want to get prices for. see Payment Methods to get a list of payment providers. |
Result Example
[
"payment_method_id" => 6033,
"type" => "CRYPTO_TO_FIAT",
"spot_price_fee" => "0.00",
"spot_price_including_fee" => "1.09",
"coin_amount" => "93.84000000",
"coin_code" => "USDT",
"fiat_amount" => "100.00",
"fiat_code" => "USD",
"fee_amount" => "0.00",
"network_fee" => "2.37"
]
Orders
Retrieving orders
Fetch orders
Fetch all orders within a specific time range. (paginated)
$banxa->getOrders( $startDate, $endDate, $statuses, $perPage, $page, $accountReference )
| Property | type | required | description |
|---|---|---|---|
$startDate |
string |
true |
Start date used for filtering orders. Must be a date in the format YYYY-MM-DD. |
$endDate |
string |
true |
End date used for filtering orders. Must be a date in the format YYYY-MM-DD. |
$statuses |
array |
false |
One or many order statuses (see 'Available Statuses') |
$perPage |
string/int |
false |
Page size. |
$page |
string/int |
false |
Page to retrieve. |
$accountReference |
string |
false |
Customer reference that was passed as a parameter when creating an order. Used to retrieve all orders for a customer. |
| Available Statuses |
|---|
OrderStatus::PENDING_PAYMENT |
OrderStatus::WAITING_PAYMENT |
OrderStatus::PAYMENT_RECEIVED |
OrderStatus::IN_PROGRESS |
OrderStatus::COIN_TRANSFERRED |
OrderStatus::CANCELLED |
OrderStatus::DECLINED |
OrderStatus::EXPIRED |
OrderStatus::COMPLETE |
OrderStatus::REFUNDED |
Result Example
[
[
"id" => "e7f3d4e436c8925af84a391f317aaa6e",
"account_id" => "ebfef819583ff4573e6db307abd9c126",
"account_reference" => "banxa-account",
"order_type" => "CRYPTO-BUY",
"ref" => 501903,
"country" => "AU",
"fiat_code" => "AUD",
"fiat_amount" => 100,
"coin_code" => "BTC",
"coin_amount" => 0.00704583,
"wallet_address" => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"wallet_address_tag" => null,
"fee" => 0,
"fee_tax" => 0,
"payment_fee" => 2.14,
"payment_fee_tax" => 0.19,
"commission" => 0,
"tx_hash" => "sync-tx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tx_confirms" => 10,
"created_date" => "01-Jul-2022",
"created_at" => "01-Jul-2022 07:51:18",
"payment_type" => "WorldPay Credit Card",
"status" => "complete",
"completed_at" => "01-Jul-2022 07:55:19",
"merchant_fee" => 0,
"merchant_commission" => 0,
"meta_data" => null,
"blockchain" => [
"code" => "BTC",
"description" => "Bitcoin"
]
],
[
"id" => "b719377e3541921297ebef33016fb068",
"account_id" => "ebfef819583ff4573e6db307abd9c126",
"account_reference" => "banxa-account",
"order_type" => "CRYPTO-BUY",
"ref" => 501902,
"country" => "AU",
"fiat_code" => "AUD",
"fiat_amount" => 320,
"coin_code" => "BTC",
"coin_amount" => 0.02255405,
"wallet_address" => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"wallet_address_tag" => null,
"fee" => 0,
"fee_tax" => 0,
"payment_fee" => 6.83,
"payment_fee_tax" => 0.62,
"commission" => 0,
"tx_hash" => "sync-tx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tx_confirms" => 10,
"created_date" => "01-Jul-2022",
"created_at" => "01-Jul-2022 07:51:18",
"payment_type" => "WorldPay Credit Card",
"status" => "complete",
"completed_at" => "01-Jul-2022 07:55:19",
"merchant_fee" => 0,
"merchant_commission" => 0,
"meta_data" => null,
"blockchain" => [
"code" => "BTC",
"description" => "Bitcoin"
]
]
]
Fetch order
Fetch single order
$banxa->getOrder($orderId);
| Property | description | required | description |
|---|---|---|---|
$orderId |
string |
true |
Unique ID of the order to retrieve |
Result Example
[
"id" => "b719377e3541921297ebef33016fb068",
"account_id" => "ebfef819583ff4573e6db307abd9c126",
"account_reference" => "banxa-account",
"order_type" => "CRYPTO-BUY",
"ref" => 501902,
"country" => "AU",
"fiat_code" => "AUD",
"fiat_amount" => 320,
"coin_code" => "BTC",
"coin_amount" => 0.02255405,
"wallet_address" => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"wallet_address_tag" => null,
"fee" => 0,
"fee_tax" => 0,
"payment_fee" => 6.83,
"payment_fee_tax" => 0.62,
"commission" => 0,
"tx_hash" => "sync-tx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tx_confirms" => 10,
"created_date" => "01-Jul-2022",
"created_at" => "01-Jul-2022 07:51:18",
"payment_type" => "WorldPay Credit Card",
"status" => "complete",
"completed_at" => "01-Jul-2022 07:55:19",
"merchant_fee" => 0,
"merchant_commission" => 0,
"meta_data" => null,
"blockchain" => [
"code" => "BTC",
"description" => "Bitcoin"
]
]
Creating orders
Allows your customer to create a buy or sell crypto order with Banxa. Upon success, the response will contain a checkout URL which will be unique for the order. The customer will be redirected to this URL to complete the checkout process, which will expire after 1 minute if a redirect does not occur.
When creating an order you will be required to create a BuyOrderTransaction/SellOrderTransaction/NftBuyOrderTransaction object. This object will allow you to create a transaction using a fiat amount, coin amount, or if you require both, you can specify your own amount using the createDynamic method, this will depend on your business use case.
Creating a buy order
$banxa->createBuyOrder( $buyOrderTransaction, $returnUrlOnSuccess, $returnUrlOnFailure, $returnUrlOnCancelled, $metadata, $readOnlyAmounts, $iframeRefererDomain, $optionalOrderParameters );
| Property | type | required | description |
|---|---|---|---|
$buyOrderTransaction |
Object |
true |
BuyOrderTransaction object |
$returnUrlOnSuccess |
string |
true |
The return url on success |
$returnUrlOnFailure |
string |
false |
The return url on failure |
$returnUrlOnCancelled |
string |
false |
The return url on cancelled |
$metadata |
string |
false |
Free form string that you can use to send us any information that will be returned in the Get Orders endpoint |
$readOnlyAmounts |
boolean |
false |
Will cause the cryptocurrency and fiat amounts on the Banxa screens to be read-only and un-editable. |
$iframeRefererDomain |
string |
false |
Used if you are embedding an iFrame. This must be the exact domain where the iFrame will be hosted. e.g. [yourCompany].com. Do not include https:// in front of the domain. |
$optionalOrderParameters |
Object |
false |
optionalOrderParameters object |
BuyOrderTransaction using Fiat as base amount
$buyOrderTransaction = BuyOrderTransaction::createFromFiatAmount( $accountReference, $fiatCode, $coinCode, $fiatAmount, $walletAddress, $paymentMethodId );
| Property | type | required | description |
|---|---|---|---|
$accountReference |
string |
true |
The customer's unique ID |
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$fiatAmount |
string/float |
true |
Fiat amount |
$walletAddress |
string |
true |
The target wallet address to transfer the coin to |
$paymentMethodId |
int/string |
false |
Unique ID for the payment method that you want to get prices for. see Payment Methods to get a list of payment providers. |
$blockchain |
string |
false |
Blockchain code, the list of available blockchains per coin see Crypto for all available blockchains per coin |
$walletAddressTag |
string |
false |
Wallet tag or memo associated with the wallet address. Should be sent for buy cryptocurrency orders only for BNB (Memo) or XRP (Tag). |
BuyOrderTransaction using Coin as base amount
$buyOrderTransaction = BuyOrderTransaction::createFromCoinAmount( $accountReference, $fiatCode, $coinCode, $coinAmount, $walletAddress, $paymentMethodId );
| Property | type | required | description |
|---|---|---|---|
$accountReference |
string |
true |
The customer's unique ID |
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$coinAmount |
string/float |
true |
The coin amount |
$walletAddress |
string |
true |
The target wallet address to transfer the coin to |
$paymentMethodId |
int/string |
false |
Unique ID for the payment method that you want to get prices for. see Payment Methods to get a list of payment providers. |
$blockchain |
string |
false |
Blockchain code, the list of available blockchains per coin see Crypto for all available blockchains per coin |
$walletAddressTag |
string |
false |
Wallet tag or memo associated with the wallet address. Should be sent for buy cryptocurrency orders only for BNB (Memo) or XRP (Tag). |
BuyOrderTransaction using dynamic sourceAmount or targetAmount
When using BuyOrderTransaction::createDynamic you will need to specify
$source(Fiat),$target(Coin), and either$sourceAmountor$targetAmount$buyOrderTransaction = BuyOrderTransaction::createDynamic( $accountReference, $source, $target, $sourceAmount, $targetAmount, $walletAddress, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag );
| Property | type | required | description |
|---|---|---|---|
$accountReference |
string |
true |
The customer's unique ID |
$source |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$target |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$sourceAmount |
string/float/null |
true |
Source amount - null if targetAmount is set |
$targetAmount |
string/float/null |
true |
Target amount - null if sourceAmount is set |
$walletAddress |
string/null |
true |
The target wallet address to transfer the coin to - For Buy orders only |
$refundAddress |
string/null |
true |
The refund wallet address - For sell orders only |
$paymentMethodId |
int/string |
false |
Unique ID for the payment method that you want to get prices for. see Payment Methods to get a list of payment providers. |
$blockchain |
string |
false |
Blockchain code, the list of available blockchains per coin see Crypto for all available blockchains per coin |
$walletAddressTag |
string |
false |
Wallet tag or memo associated with the wallet address. Should be sent for buy cryptocurrency orders only for BNB (Memo) or XRP (Tag). |
optionalOrderParameters
$optionalOrderParameters = optionalOrderParameters::create( $sourceAddress, $sourceAddressTag, $email, $mobile, );
| Property | type | required | description |
|---|---|---|---|
$sourceAddress |
string/null |
false |
Source wallet address. Should be sent for sell cryptocurrency orders only. |
$sourceAddressTag |
string/null |
false |
Source wallet address tag or memo. Should be sent for sell cryptocurrency orders only. Required when source wallet address for BNB (Memo) or XRP (Tag). |
$email |
string/null |
false |
Customer's email address. This will pre-populate the customers' email address field when they are redirected to Banxa checkout |
$mobile |
string/null |
false |
Customer's mobile number. This will pre-populate the customers' mobile number field when they are redirected to Banxa checkout |
Buy order full example
$buyOrderTransaction = BuyOrderTransaction::createFromFiatAmount($accountReference, $fiatCode, $coinCode, $fiatAmount, $walletAddress, $paymentMethodId, $blockchain, $walletAddressTag);// From Fiat Amount$buyOrderTransaction = BuyOrderTransaction::createFromCoinAmount($accountReference, $fiatCode, $coinCode, $coinAmount, $walletAddress, $paymentMethodId, $blockchain, $walletAddressTag);// From Coin Amount$buyOrderTransaction = BuyOrderTransaction::createDynamic($accountReference, $source, $target, $sourceAmount, null, $walletAddress, null, $paymentMethodId, $blockchain, $walletAddressTag); // Dynamic$buyOrderTransaction = BuyOrderTransaction::createDynamic($accountReference, $source, $target, null, $targetAmount, $walletAddress, null, $paymentMethodId, $blockchain, $walletAddressTag); // Dynamic$optionalOrderParameters = OptionalOrderParameters::create($sourceAddress, $sourceAddressTag, $email, $mobile);$banxa->createBuyOrder( $buyOrderTransaction, $returnUrlOnSuccess, $returnUrlOnFailure, $returnUrlOnCancelled, $metadata, $readOnlyAmounts, $iframeRefererDomain, $optionalOrderParameters );Result Example
[ "id" => "b890df4aee4583a25ca8da17eb863c81", "account_id" => "3ec8d3c67617af11d84a18931c4e369d", "account_reference" => "banxa-test-01", "order_type" => "CRYPTO-BUY", "fiat_code" => "AUD", "fiat_amount" => 1, "coin_code" => "BTC", "wallet_address" => "1LbQ1WNTsm1Nzj1hbh3WDCbEim1oUg5rfi", "blockchain" => [ "id" => 1, "code" => "BTC", "description" => "Bitcoin" ], "created_at" => "17-Aug-2022 00:09:03", "checkout_url" => "https://your-return-url" ]
Creating a NFT buy order
$banxa->createNftBuyOrder( $nftBuyOrderTransaction, $nftData, $returnUrlOnSuccess, $returnUrlOnFailure, $returnUrlOnCancelled, $iframeRefererDomain );
| Property | type | required | description |
|---|---|---|---|
$nftBuyOrderTransaction |
Object |
true |
NftBuyOrderTransaction object |
$nftData |
Object |
true |
NftData object |
$returnUrlOnSuccess |
string |
true |
The return url on success |
$returnUrlOnFailure |
string |
false |
The return url on failure |
$returnUrlOnCancelled |
string |
false |
The return url on cancelled |
$iframeRefererDomain |
string |
false |
Used if you are embedding an iFrame. This must be the exact domain where the iFrame will be hosted. e.g. [yourCompany].com. Do not include https:// in front of the domain. |
NftBuyOrderTransaction
$nftBuyOrderTransaction = NftBuyOrderTransaction::create( $accountReference, $fiatCode, $coinCode, $fiatAmount, $walletAddress, $paymentMethodId = null, $blockchain = null, $walletAddressTag = null );
| Property | type | required | description |
|---|---|---|---|
$accountReference |
string |
true |
The customer's unique ID |
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$fiatAmount |
string/float |
true |
Fiat amount |
$walletAddress |
string |
true |
The target wallet address to transfer the coin to |
$paymentMethodId |
int/string |
false |
Unique ID for the payment method that you want to get prices for. see Payment Methods to get a list of payment providers. |
$blockchain |
string |
false |
Blockchain code, the list of available blockchains per coin see Crypto for all available blockchains per coin |
$blockchain |
string |
false |
Blockchain code, the list of available blockchains per coin see Crypto for all available blockchains per coin |
$walletAddressTag |
string |
false |
Wallet tag or memo associated with the wallet address. Should be sent for buy cryptocurrency orders only for BNB (Memo) or XRP (Tag). |
NftData
$nftData = NftData::create( $purchaseReference, $nft, $metaData );
| Property | type | required | description |
|---|---|---|---|
$purchaseReference |
string |
true |
A reference of the purchase |
$nft |
Object |
true |
Nft object |
$metaData |
array |
false |
Array of metaData |
Nft
$nft = Nft::create( $name, $collection, $nftMedia, );
| Property | type | required | description |
|---|---|---|---|
$name |
string |
true |
The name of the NFT |
$collection |
string |
true |
The Collection the NFT |
$nftMedia |
object |
true |
NftMedia object |
Create VideoNftMedia
$nftMedia = VideoNftMedia::create($link);Create ImageNftMedia
$nftMedia = ImageNftMedia::create($link);
| Property | type | required | description |
|---|---|---|---|
link |
string |
true |
A link to the Nft video |
Nft buy order full example
$nftBuyOrderTransaction = NftBuyOrderTransaction::create( $accountReference, $fiatCode, $coinCode, $fiatAmount, $walletAddress, $paymentMethodId, $blockchain, $walletAddressTag ); $nftMedia = ImageNftMedia::create($link); // OR $nftMedia = VideoNftMedia::create($link) $nft = Nft::create( $name, $collection, $nftMedia, ); $nftData = NftData::create( $purchaseReference, $nft, $metaData ); $banxa->createNftBuyOrder( $nftBuyOrderTransaction, $nftData, $returnUrlOnSuccess, $returnUrlOnFailure, $returnUrlOnCancelled, $iframeRefererDomain, );Result Example
[ "id" => "b890df4aee4583a25ca8da17eb863c81", "account_id" => "3ec8d3c67617af11d84a18931c4e369d", "account_reference" => "Banxa-Testing-01", "order_type" => "NFT-BUY", "blockchain" => [ "id" => 1, "code" => "ETH", "description" => "Ethereum (ERC-20)" ], "created_at" => "17-Aug-2022 00:09:03", "checkout_url" => "https://your-return-url" ]
Creating a Sell order
$banxa->createSellOrder( $sellOrderTransaction, $returnUrlOnSuccess, $returnUrlOnFailure, $returnUrlOnCancelled, $metadata, $readOnlyAmounts, $iframeRefererDomain, $optionalOrderParameters, )
| Property | type | required | description |
|---|---|---|---|
$sellOrderTransaction |
Object |
true |
SellOrdertransaction object |
$returnUrlOnSuccess |
string |
true |
The return url on success |
$returnUrlOnFailure |
string |
false |
The return url on failure |
$returnUrlOnCancelled |
string |
false |
The return url on cancelled |
$metadata |
string |
false |
Free form string that you can use to send us any information that will be returned in the Get Orders endpoint |
$readOnlyAmounts |
boolean |
false |
Will cause the cryptocurrency and fiat amounts on the Banxa screens to be read-only and un-editable. |
$iframeRefererDomain |
string |
false |
Used if you are embedding an iFrame. This must be the exact domain where the iFrame will be hosted. e.g. [yourCompany].com. Do not include https:// in front of the domain. |
$optionalOrderParameters |
Object |
false |
optionalOrderParameters object |
SellOrderTransaction using Fiat as base amount
$sellOrderTransaction = SellOrderTransaction::createFromFiatAmount( $accountReference, $fiatCode, $coinCode, $fiatAmount, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag, );
| Property | type | required | description |
|---|---|---|---|
$accountReference |
string |
true |
The customer's unique ID |
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$fiatAmount |
string/float |
true |
Fiat amount |
$refundAddress |
string |
true |
The refund wallet address if the order gets rejected |
$paymentMethodId |
int/string |
false |
Unique ID for the payment method that you want to get prices for. see Payment Methods to get a list of payment providers. |
$blockchain |
string |
false |
Blockchain code, the list of available blockchains per coin see Crypto for all available blockchains per coin |
$walletAddressTag |
string |
false |
Wallet tag or memo associated with the wallet address. Should be sent for buy cryptocurrency orders only for BNB (Memo) or XRP (Tag). |
sellOrderTransaction using Coin as base amount
$sellOrderTransaction = SellOrderTransaction::createFromCoinAmount( $accountReference, $fiatCode, $coinCode, $coinAmount, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag, );
| Property | type | required | description |
|---|---|---|---|
$accountReference |
string |
true |
The customer's unique ID |
$fiatCode |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$coinCode |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$coinAmount |
string/float |
true |
The coin amount |
$refundAddress |
string |
true |
The refund wallet address if the order gets rejected |
$paymentMethodId |
int/string |
false |
Unique ID for the payment method that you want to get prices for. see Payment Methods to get a list of payment providers. |
$blockchain |
string |
false |
Blockchain code, the list of available blockchains per coin see Crypto for all available blockchains per coin |
$walletAddressTag |
string |
false |
Wallet tag or memo associated with the wallet address. Should be sent for buy cryptocurrency orders only for BNB (Memo) or XRP (Tag). |
sellOrderTransaction using dynamic sourceAmount or targetAmount
When using SellOrderTransaction::createDynamic you will need to specify
$source(Coin),$target(Fiat), and either$sourceAmountor$targetAmount$sellOrderTransaction = SellOrderTransaction::createDynamic( $accountReference, $source, $target, $sourceAmount, $targetAmount, $walletAddress, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag );
| Property | type | required | description |
|---|---|---|---|
$accountReference |
string |
true |
The customer's unique ID |
$source |
string |
true |
Fiat code e.g. 'USD' or 'EUR' see Fiat to get a list all available fiats |
$target |
string |
true |
Coin code e.g. 'BTC' or 'ETH' see Crypto to get a list all available crypto |
$sourceAmount |
string/float/null |
true |
Source amount - null if targetAmount is set |
$targetAmount |
string/float/null |
true |
Target amount - null if sourceAmount is set |
$walletAddress |
string/null |
true |
The target wallet address to transfer the coin to - For Buy orders only |
$refundAddress |
string/null |
true |
The refund wallet address - For sell orders only |
$paymentMethodId |
int/string |
false |
Unique ID for the payment method that you want to get prices for. see Payment Methods to get a list of payment providers. |
$blockchain |
string |
false |
Blockchain code, the list of available blockchains per coin see Crypto for all available blockchains per coin |
$walletAddressTag |
string |
false |
Wallet tag or memo associated with the wallet address. Should be sent for buy cryptocurrency orders only for BNB (Memo) or XRP (Tag). |
optionalOrderParameters
$optionalOrderParameters = optionalOrderParameters::create( $sourceAddress, $sourceAddressTag, $email, $mobile, );
| Property | type | required | description |
|---|---|---|---|
$sourceAddress |
string/null |
false |
Source wallet address. Should be sent for sell cryptocurrency orders only. |
$sourceAddressTag |
string/null |
false |
Source wallet address tag or memo. Should be sent for sell cryptocurrency orders only. Required when source wallet address for BNB (Memo) or XRP (Tag). |
$email |
string/null |
false |
Customer's email address. This will pre-populate the customers' email address field when they are redirected to Banxa checkout |
$mobile |
string/null |
false |
Customer's mobile number. This will pre-populate the customers' mobile number field when they are redirected to Banxa checkout |
Sell order full example
$sellOrderTransaction = SellOrderTransaction::createFromFiatAmount($accountReference, $fiatCode, $coinCode, $fiatAmount, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag);// From Fiat Amount$sellOrderTransaction = SellOrderTransaction::createFromCoinAmount($accountReference, $fiatCode, $coinCode, $coinAmount, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag);// From Coin Amount$sellOrderTransaction = SellOrderTransaction::createDynamic($accountReference, $source, $target, $sourceAmount, null, null, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag); // Dynamic$sellOrderTransaction = SellOrderTransaction::createDynamic($accountReference, $source, $target, null, $targetAmount, null, $refundAddress, $paymentMethodId, $blockchain, $walletAddressTag); // Dynamic$optionalOrderParameters = OptionalOrderParameters::create($sourceAddress, $sourceAddressTag, $email, $mobile);$banxa->createSellOrder( $sellOrderTransaction, $returnUrlOnSuccess, $returnUrlOnFailure, $returnUrlOnCancelled, $metadata, $readOnlyAmounts, $iframeRefererDomain, $optionalOrderParameters, );Result Example
[ "id" => "b890df4aee4583a25ca8da17eb863c81", "account_id" => "3ec8d3c67617af11d84a18931c4e369d", "account_reference" => "banxa-test-01", "order_type" => "CRYPTO-SELL", "fiat_code" => "AUD", "fiat_amount" => 1, "coin_code" => "BTC", "wallet_address" => "1LbQ1WNTsm1Nzj1hbh3WDCbEim1oUg5rfi", "blockchain" => [ "id" => 1, "code" => "BTC", "description" => "Bitcoin" ], "created_at" => "17-Aug-2022 00:09:03", "checkout_url" => "https://your-return-url" ]
Confirm sell order
Once the coin amount transfer for a Sell Order has been executed,
Banxa must be notified by sending a request to this endpoint with transaction hash, source and destination wallet address details.$banxa->confirmSellOrder( $orderId, $txHash, $sourceAddress, $destinationAddress, $sourceAddressTag, $destinationAddressTag )
| Property | type | required | description |
|---|---|---|---|
$orderId |
string |
true |
Unique ID for the the order |
$txHash |
string |
true |
Blockchain transaction hash of the order |
$sourceAddress |
string |
true |
The provided customer's source wallet address |
$destinationAddress |
string |
true |
The wallet address provided to merchants to transact to |
$sourceAddressTag |
string |
false |
The customer's source wallet address tag if the provided source wallet address requires it |
$destinationAddressTag |
string |
false |
The wallet address tag provided to merchants if the provided destination wallet address requires it |
Result Example
[
"id" => "ee94a43403fb608f341dd5c4c899b846",
"account_id" => "d6e7ab2b8f638bed61dc0ac5bec37d4d",
"account_reference" => "banxa-account",
"order_type" => "CRYPTO-SELL",
"payment_type" => "CLEARJCNSELLFP",
"ref" => 507000,
"fiat_code" => "AUD",
"fiat_amount" => 100,
"coin_code" => "BTC",
"coin_amount" => 0.00286436,
"wallet_address" => null,
"wallet_address_tag" => null,
"fee" => 9.1,
"fee_tax" => 0,
"payment_fee" => 0,
"payment_fee_tax" => 0,
"commission" => 0.1,
"tx_hash" => null,
"tx_confirms" => 0,
"created_date" => "01-Jul-2022",
"created_at" => "01-Jul-2022 07:51:18",
"status" => "in progress",
"completed_at" => null,
"merchant_fee" => 6.54,
"merchant_commission" => 0.05,
"meta_data" => null,
"blockchain" => [
"id" => 1,
"code" => "BTC",
"description" => "Bitcoin"
]
]
Identity
Create Identity
Allows you to share customer details with Banxa before an Order is created.
This reduces the need for customers to re-submit personal details and upload KYC documentation during the Banxa checkout flow.
Detailed guide on how to implement this API can be found here. You can also find Testing information here$banxa->createIdentity( $identitySharingCollection, $customerDetails, $residentialAddress $customerIdentity, $identityDocumentCollection, )
| Property | type | required | description |
|---|---|---|---|
$identitySharingCollection |
Object |
true |
IdentitySharingCollection object |
$customerDetails |
Object |
true |
CustomerDetail object |
$residentialAddress |
Object |
true |
ResidentialAddress object |
$customerIdentity |
Object |
true |
CustomerIdentity object |
$identityDocumentCollection |
Object |
false |
IdentityDocumentCollection object |
IdentitySharingCollection
IdentitySharingCollection::create($kycProviders)
| Property | type | required | description |
|---|---|---|---|
$kycProviders |
array |
true |
array of IdentityProvider objects |
IdentitySharingProvider
IdentitySharingProvider::create($provider, $token)
| Property | type | required | description |
|---|---|---|---|
$provider |
string |
true |
Name of the provider e.g. 'sumsub' |
$token |
string |
true |
The unique provider token |
CustomerDetail
$customerDetail = CustomerDetail::create($accountReference, $mobileNumber, $emailAddress);
| Property | type | required | description |
|---|---|---|---|
$accountReference |
string |
true |
Unique customer reference provided by you. This should be the same value that is passed when calling the calling the Create Order endpoint. |
$mobileNumber |
string |
true |
Mobile number of customer |
$emailAddress |
string |
true |
Email address of customer |
ResidentialAddress
$residentialAddress = ResidentialAddress::create($country, $addressLine, $suburb, $postCode, $state);
| Property | type | required | description |
|---|---|---|---|
$country |
string |
true |
Customer's country of residence. Required to be formatted using ISO 3166 two-letter country code e.g. "US" or "AU". |
$addressLine |
string |
false |
Customer's Street number, street name and street type/suffix. |
$suburb |
string |
false |
Customer's Address city or suburb. E.g. "2 Abbey Road". |
$postCode |
string |
false |
Customer's Address postal / PIN / ZIP code. |
$state |
string |
false |
Customer's Address state / region. |
CustomerIdentity
$customerIdentity = CustomerIdentity::create($givenName, $surname, $dateOfBirth);
| Property | type | required | description |
|---|---|---|---|
$givenName |
string |
true |
Customer's Customer's given / first name. |
$surname |
string |
true |
Customer's surname / last name. |
$dateOfBirth |
string |
false |
Customer's Customer's date of birth (e.g. "1985-01-31"). Required to format as ISO 8601 Date format : YYYY-MM-DD. |
IdentityDocumentCollection
| Property | type | description |
|---|---|---|
$documents |
array |
An Array holding IdentityDocument objects |
IdentityDocument
IdentityDocument::create($documentType, $imageLinks, $documentNumber)
| Property | type | required | description |
|---|---|---|---|
$documentType |
string |
true |
The document type (see 'Available document types') |
$imageLinks |
array |
true |
Array of image links for the documents type |
$documentNumber |
string |
true when document type is PASSPORT/IDENTIFICATION/DRIVING_LICENSE |
The document number, located on the document |
| Available document types |
|---|
IdentityDocument::DOCUMENT_TYPE_DRIVING_LICENCE |
IdentityDocument::DOCUMENT_TYPE_PASSPORT |
IdentityDocument::DOCUMENT_TYPE_IDENTIFICATION |
IdentityDocument::DOCUMENT_TYPE_SELFIE |
IdentityDocument::DOCUMENT_TYPE_PROOF_OF_ADDRESS |
Full Example
$kycProviders = [ IdentitySharingProvider::create($provider, $token), IdentitySharingProvider::create($provider, $token), ]; $documents = [ IdentityDocument::create($documentType, $imageLinks, $documentNumber), IdentityDocument::create($documentType, $imageLinks), ]; $identitySharingCollection = IdentitySharingCollection::create($kycProviders); $customerDetail = CustomerDetail::create($accountReference, $mobileNumber, $emailAddress); $residentialAddress = ResidentialAddress::create($country, $addressLine, $suburb, $postCode, $state); $customerIdentity = CustomerIdentity::create($givenName, $surname, $dateOfBirth); $identityDocumentCollection = IdentityDocumentCollection::create($documents); $banxa->createIdentity( $identitySharingCollection, $customerDetail, $residentialAddress, $customerIdentity, $identityDocumentCollection );
Result Example
[
"account_id" => "28d517af407a0566204acd75e3a8e5b7",
"account_reference" => "test001001"
]
banxa/php-sdk 适用场景与选型建议
banxa/php-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6.51k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2022 年 08 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「sdk」 「crypto」 「cryptocurrency」 「cryptocurrencies」 「banxa」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 banxa/php-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 banxa/php-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 banxa/php-sdk 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
High-level cryptographic primitives and security utilities for Maatify systems including password hashing, reversible encryption, HKDF key derivation, and key rotation.
Alfabank REST API integration
A simple PHP Cryptography Implementation for the Ark Blockchain.
A simple PHP API client for the Ark Blockchain.
A Laravel bridge for Ark Core.
Laravel Minimal Wallet Plugin
统计信息
- 总下载量: 6.51k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 21
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-08-22