ForgingBlock Universal API
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
The Forgingblock API provides a unified, user friendly and secure layer for developers to build their applications with support for different cryptocurrencies.
Baseurl:
- MainNet https://api.forgingblock.io
Dashboard:
- MainNet Dashboard https://dash.forgingblock.io
Legacy V1 Dashboard Cryptocurrency Support
Create Demo Invoice:
Shows invoice example, non refundable
Start
Use Dashboard to register new account and to create a new store.
Most operations are perfomed using trade
and token
access tokens. Those access tokens are private and shouldn't be shared with anyone, including Forgingblock Support.
- Trade is used as proof of ownership of certain storeId.
- Token gives access to create invoices.
Email and password are recommended to use for only Dashboard access.
- Email and password are used for access and control over your user account.
Support:
Could accept multiple payments simultaneously. Scalable, generates client-side mnemonic on the setup that merchant need to keep safe, as it couldn't be restored.
Connecting Wallet
You could connect supported currency wallets using Dashboard
- For
Multiple Wallet
if you are using Dashboard multiple addresses are already connected to your store after setup.
Wallets Connection Status
curl 'https://api.forgingblock.io/v2/wallet-connection-status-store' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/wallet-connection-status-store',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/wallet-connection-status-store');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/wallet-connection-status-store"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"eth": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "0x8157c36b935cf49bd7459720c216bedc21229771",
"multiple": false
}
],
"ethTokens": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "0x8157c36b935cf49bd7459720c216bedc21229771",
"name": "USDT"
}
],
"bch": [],
"eos": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "newdex.bp"
}
],
"eosTokens": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "newdex.bp",
"name": "IQ"
}
],
"trx": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "TLHYqouJuXAa5QCDiYRCpKPFL6XwiKvac1"
}
],
"trxTokens": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "TLHYqouJuXAa5QCDiYRCpKPFL6XwiKvac1",
"name": "USDT"
}
],
"xmr": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "42AGmeEkmMFXx4xCQRD89Kft2ubjAWLsFPBkJGnacMQa8wFQh9xLrRWQhoERTLwFeLVrMPmdJX9ecTsumFMJNcbuEAYPBjg",
"viewkey": "bf4f63a10dbf7aa6a0633ed4b33589768e4af9a698b646d38c543d04f6f5640e"
}
],
"dgb": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "DFf3P5fE4ckcQnCTdvNtbmUjdL24gXZMVr"
}
],
"rdd": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "RTnQDje3k5Ng6Us445sn4cgRSivy6Gonpw"
}
],
"rvn": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "RTnQDje3k5Ng6Us445sn4cgRSivy6Gonpw"
}
],
"xtz": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "tz1RZ51oZ6cNuxGYoZfGDhb9xP9XWLRumK5c"
}
],
"xnc": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "ZNbUTLe12opB89JX5zjffm3zNevbc5qS1S"
}
],
"ksm": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "FBL1t4FnLy274B7wnLckFeNrSmqSHjhf58SHYtBvZNDf4U2"
}
],
"owc": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "ATafhu2LJpuD2t35P4dgavsXE2tV5VnEWZ"
}
],
"tusc": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "testtest"
}
],
"polygon": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "0x8157c36b935cf49bd7459720c216bedc21229771"
}
],
"polygonTokens": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "0x8157c36b935cf49bd7459720c216bedc21229771",
"name": "ETH"
}
],
"bsc": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "0x8157c36b935cf49bd7459720c216bedc21229771"
}
],
"bscTokens": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "0x8157c36b935cf49bd7459720c216bedc21229771",
"name": "BUSD"
}
],
"default": "eth",
"hidden": [
{
"btc": false,
"ltc": false,
"eth": false,
"ethTokensDai": false,
"ethTokensUsdt": false,
"eos": false,
"eosTokensEveripedia": false,
"eosTokensTelos": false,
"bch": false,
"trx": false,
"trxTokensBtt": false,
"trxTokensUsdt": false,
"xmr": false,
"dgb": false,
"xtz": false,
"rdd": false,
"rvn": false,
"xnc": false,
"ksm": false,
"owc": false,
"tusc": false,
"polygon": false,
"polygonTokensUsdt": false,
"polygonTokensDai": false,
"polygonTokensEth": false,
"ethTokensLusd": false,
"bsc": false,
"bscTokensBusd": false,
"bscTokensWbnb": false,
"bscTokensZina": false,
"ethTokensCrvNew": false,
"ethTokensPickleNew": false,
"ethTokensAngleNew": false,
"ethTokensFxsNew": false,
"ethTokensIdleNew": false
}
],
"btc": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"address": "1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF"
}
],
"ltc": [
{
"store": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"xpub": ""
}
]
}
POST /wallet-connection-status-store
Shows all connected wallets for the store
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
Wallet Default Currency
curl 'https://api.forgingblock.io/v2/wallet-default-currency' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T¤cy=eth'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'currency': 'eth'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/wallet-default-currency',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/wallet-default-currency');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'currency' => 'eth'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/wallet-default-currency"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T¤cy=eth")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "Default currency information updated"
}
POST /wallet-default-currency
Set default cryptocurrency for the payment form
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
currency | body | [string] | true | cryptocurrency code |
Supported cryptocurrency codes: btc
, ltc
, eth
, ethTokensUsdt
, ethTokensDai
, eos
, eosTokensEveripedia
, eosTokensTelos
, bch
, trx
, trxTokensBtt
, trxTokensUsdt
, xmr
, dgb
, xtz
, rdd
, rvn
, xnc
, ksm
, owc
, tusc
, polygon
, polygonTokensEth
, polygonTokensDai
, ethTokensLusd
, bsc
, bscTokensWbnb
, bscTokensBusd
, bscTokensZina
Wallet Hide Currency
curl 'https://api.forgingblock.io/v2/wallet-hide-currency' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T¤cy=eth'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'currency': 'eth'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/wallet-hide-currency',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/wallet-hide-currency');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'currency' => 'eth'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/wallet-hide-currency"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T¤cy=eth")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "Hidden currency information updated"
}
POST /wallet-hide-currency
Hide cryptocurrency from the payment form
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
currency | body | [string] | true | cryptocurrency code |
Supported cryptocurrency codes: btc
, ltc
, eth
, ethTokensUsdt
, ethTokensDai
, eos
, eosTokensEveripedia
, eosTokensTelos
, bch
, trx
, trxTokensBtt
, trxTokensUsdt
, xmr
, dgb
, xtz
, rdd
, rvn
, xnc
, ksm
, owc
, tusc
, polygon
, polygonTokensEth
, polygonTokensDai
, ethTokensLusd
, bsc
, bscTokensWbnb
, bscTokensBusd
, bscTokensZina
Connecting Wallet: Single Wallet (single address wallet)
- Bitcoin
- Ethereum
- Tezos
- EOS
- DigiByte
- ReddCoin
- Ravencoin
- Monero
- Xenios Coin
- Kusama
- Oduwa Coin
- TUSC
- Polygon
- BNB (BSC)
Connect Bitcoin Single Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-btc-single' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': '1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-btc-single',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-btc-single');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => '1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-btc-single"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-btc-single
Connect a new Bitcoin wallet address to the store
! Connecting Bitcoin single wallet address to the Multi Wallet account would automatically switch store state to Single Wallet
Please, do have a look at Change Bitcoin State, in case you done that accidentally
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Connect ETH Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-eth' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': '0x8157c36b935CF49Bd7459720c216BEDC21229771'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-eth',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-eth');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => '0x8157c36b935CF49Bd7459720c216BEDC21229771'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-eth"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-eth
Connect a new Ethereum wallet to the store
To connect your wallet you need to provide your wallet address.
You could use any wallet, for example: MyEtherWallet
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Ethereum Tokens
curl 'https://api.forgingblock.io/v2/connect-wallet-eth-token' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771&name=USDT'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': '0x8157c36b935CF49Bd7459720c216BEDC21229771',
'name': 'USDT'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-eth-token',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-eth-token');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => '0x8157c36b935CF49Bd7459720c216BEDC21229771',
'name' => 'USDT'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-eth-token"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771&name=USDT")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-eth-token
Connect a new Ethereum wallet to the store, for use with Ethereum token
To connect your wallet you need to provide your wallet address and Token name
You could use any wallet, for example: MyEtherWallet
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
name | body | [string] | true | token name |
Supported token names: DAI
, USDT
, LUSD
, CRV
, PICKLE
, ANGLE
, FXS
, IDLE
Connect XTZ Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-xtz' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=tz1RZ51oZ6cNuxGYoZfGDhb9xP9XWLRumK5c'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'tz1RZ51oZ6cNuxGYoZfGDhb9xP9XWLRumK5c'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-xtz',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-xtz');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'tz1RZ51oZ6cNuxGYoZfGDhb9xP9XWLRumK5c'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-xtz"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=tz1RZ51oZ6cNuxGYoZfGDhb9xP9XWLRumK5c")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-xtz
Connect a new Tezos wallet
To connect your wallet you need to provide your wallet address.
You could use any wallet, for example: Galleon
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Connect EOS Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-eos' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=newdex.bp'
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.forgingblock.io/v2/connect-wallet-eos',
'headers': {
'Content-Type': 'application/x-www-form-urlencoded'
},
form: {
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'newdex.bp'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-eos');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'newdex.bp'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-eos"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=newdex.bp")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-eos
Connect a new EOS account to the store
To connect your wallet you need to provide your wallet account name.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet account name, for ex. newdex.bp |
EOS Tokens
curl 'https://api.forgingblock.io/connect-wallet-eos-token' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&&address=newdex.bp&name=IQ'
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.forgingblock.io/v2/connect-wallet-eos-token',
'headers': {
'Content-Type': 'application/x-www-form-urlencoded'
},
form: {
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'newdex.bp',
'name': 'IQ'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-eos-token');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'newdex.bp',
'name' => 'IQ'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-eos-token"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=newdex.bp&name=IQ")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-eos-token
Connect a new EOS token wallet account to the store
To connect your wallet you need to provide your wallet account name
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet account name |
name | body | [string] | true | token name (IQ) |
Supported token names: IQ
Connect Digibyte Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-dgb' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=DFf3P5fE4ckcQnCTdvNtbmUjdL24gXZMVr'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'DFf3P5fE4ckcQnCTdvNtbmUjdL24gXZMVr'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-dgb',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-dgb');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'DFf3P5fE4ckcQnCTdvNtbmUjdL24gXZMVr'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-dgb"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=DFf3P5fE4ckcQnCTdvNtbmUjdL24gXZMVr")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-dgb
Connect a new Digibyte wallet to the store
To connec, your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Connect ReddCoin Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-rdd' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=RYpByo8w5HAbYrtYQ272zHkkPhNFRhL5QY'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'RYpByo8w5HAbYrtYQ272zHkkPhNFRhL5QY'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-rdd',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-rdd');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'RYpByo8w5HAbYrtYQ272zHkkPhNFRhL5QY'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-rdd"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=RYpByo8w5HAbYrtYQ272zHkkPhNFRhL5QY")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-rdd
Connect a new ReddCoin wallet to the store
To connect your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Connect Monero Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-xmr' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=42AGmeEkmMFXx4xCQRD89Kft2ubjAWLsFPBkJGnacMQa8wFQh9xLrRWQhoERTLwFeLVrMPmdJX9ecTsumFMJNcbuEAYPBjg&viewkey=bf4f63a10dbf7aa6a0633ed4b33589768e4af9a698b646d38c543d04f6f5640e'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': '42AGmeEkmMFXx4xCQRD89Kft2ubjAWLsFPBkJGnacMQa8wFQh9xLrRWQhoERTLwFeLVrMPmdJX9ecTsumFMJNcbuEAYPBjg',
'viewkey': 'bf4f63a10dbf7aa6a0633ed4b33589768e4af9a698b646d38c543d04f6f5640e'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-xmr',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-xmr');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => '42AGmeEkmMFXx4xCQRD89Kft2ubjAWLsFPBkJGnacMQa8wFQh9xLrRWQhoERTLwFeLVrMPmdJX9ecTsumFMJNcbuEAYPBjg',
'viewkey' => 'bf4f63a10dbf7aa6a0633ed4b33589768e4af9a698b646d38c543d04f6f5640e'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-xmr"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=42AGmeEkmMFXx4xCQRD89Kft2ubjAWLsFPBkJGnacMQa8wFQh9xLrRWQhoERTLwFeLVrMPmdJX9ecTsumFMJNcbuEAYPBjg&viewkey=bf4f63a10dbf7aa6a0633ed4b33589768e4af9a698b646d38c543d04f6f5640e")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-xmr
Connect a new Monero wallet to the store
To connect your wallet you need to provide your wallet address and secret viewkey (secret viewkey doesn't provide control on funds, but makes transaction details not private, and allows us to get exact amounts from transactions).
You could find your secret viewkey in Monero GUI Wallet in Settings->Show seed & keys
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
viewkey | body | [string] | true | wallet secret viewkey |
Connect Ravencoin Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-rvn' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=RTnQDje3k5Ng6Us445sn4cgRSivy6Gonpw'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'RTnQDje3k5Ng6Us445sn4cgRSivy6Gonpw'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-rvn',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-rvn');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'RTnQDje3k5Ng6Us445sn4cgRSivy6Gonpw'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-rvn"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=RTnQDje3k5Ng6Us445sn4cgRSivy6Gonpw")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-rvn
Connect a new Ravencoin wallet to the store
To connect your wallet you need to provide your wallet address.
You could use any wallet, for example: Ravencoin Wallet
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Connect Xenios Coin
curl 'https://api.forgingblock.io/v2/connect-wallet-xnc' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=ZNbUTLe12opB89JX5zjffm3zNevbc5qS1S'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'ZNbUTLe12opB89JX5zjffm3zNevbc5qS1S'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-xnc',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-xnc');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'ZNbUTLe12opB89JX5zjffm3zNevbc5qS1S'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-xnc"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=ZNbUTLe12opB89JX5zjffm3zNevbc5qS1S")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-xnc
Connect a new Xenios Coin wallet to the store
To connect your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Connect KSM Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-ksm' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=FBL1t4FnLy274B7wnLckFeNrSmqSHjhf58SHYtBvZNDf4U2'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'FBL1t4FnLy274B7wnLckFeNrSmqSHjhf58SHYtBvZNDf4U2'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-ksm',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-ksm');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'FBL1t4FnLy274B7wnLckFeNrSmqSHjhf58SHYtBvZNDf4U2'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-ksm"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=FBL1t4FnLy274B7wnLckFeNrSmqSHjhf58SHYtBvZNDf4U2")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-ksm
Connect a new Kusama wallet to the store
To connect your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Connect Oduwa Coin
curl 'https://api.forgingblock.io/v2/connect-wallet-owc' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=ATafhu2LJpuD2t35P4dgavsXE2tV5VnEWZ'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'ATafhu2LJpuD2t35P4dgavsXE2tV5VnEWZ'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-owc',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-owc');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'ATafhu2LJpuD2t35P4dgavsXE2tV5VnEWZ'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-owc"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=ATafhu2LJpuD2t35P4dgavsXE2tV5VnEWZ")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-owc
Connect a new Oduwa Coin wallet to the store
To connect your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Connect TUSC
curl 'https://api.forgingblock.io/v2/connect-wallet-tusc' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=testtest'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': 'testtest'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-tusc',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-tusc');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => 'testtest'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-tusc"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=testtest")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-tusc
Connect a new TUSC account to the store
To connect you need to provide your registed account name
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | account name |
Connect Polygon Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-polygon' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': '0x8157c36b935CF49Bd7459720c216BEDC21229771'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-polygon',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-polygon');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => '0x8157c36b935CF49Bd7459720c216BEDC21229771'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-polygon"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-polygon
Connect a new Polygon (MATIC) wallet to the store
To connect your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Polygon Tokens
curl 'https://api.forgingblock.io/v2/connect-wallet-polygon-token' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771&name=ETH'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': '0x8157c36b935CF49Bd7459720c216BEDC21229771',
'name': 'ETH'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-polygon-token',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-polygon-token');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => '0x8157c36b935CF49Bd7459720c216BEDC21229771',
'name' => 'ETH'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-polygon-token"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771&name=ETH")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-polygon-token
Connect a new Polygon (MATIC) wallet to the store, for use with Polygon token
To connect your wallet you need to provide your wallet address and Token name
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
name | body | [string] | true | token name |
Supported token names: DAI
, ETH
(WETH)
Connect Binace Smart Chain (BNB) Wallet
curl 'https://api.forgingblock.io/v2/connect-wallet-bsc' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': '0x8157c36b935CF49Bd7459720c216BEDC21229771'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-bsc',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-bsc');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => '0x8157c36b935CF49Bd7459720c216BEDC21229771'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-bsc"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-bsc
Connect a new Binace Smart Chain (BNB) wallet to the store
To connect your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
BSC Tokens
curl 'https://api.forgingblock.io/v2/connect-wallet-bsc-token' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771&name=BUSD'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': '0x8157c36b935CF49Bd7459720c216BEDC21229771',
'name': 'BUSD'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-bsc-token',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-bsc-token');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => '0x8157c36b935CF49Bd7459720c216BEDC21229771',
'name' => 'BUSD'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-bsc-token"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0x8157c36b935CF49Bd7459720c216BEDC21229771&name=BUSD")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-bsc-token
Connect a new BSC (Binace Smart Chain) wallet to the store, for use with BSC token
To connect your wallet you need to provide your wallet address and Token name
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
name | body | [string] | true | token name |
Supported token names: WBNB
, BUSD
, ZINA
(Zinari)
Connecting Wallet: Multiple Wallet (multiple address wallet)
We recommend to use Dashboard with Multiple Wallet option, where mnemonic is generated client-side (in your browser), and where you can get through the proccess just with a few clicks.
But if you still want to get familiar with a proccess, that is step by step for you:
-
You generate mnemonic, its prefered to use ether.js createRandom() so, you able to use same mnemonic across Bitcoin and Ethereum
-
For Bitcoin in order to connect, you need to generate xPub (Master Public key) from that mnemonic
-
You could use hdNode.derivePath for every of 100 addresses to generate pool of 100 Ethereum addresses and use it to connect wallet
Now the same using ForgingBlock Wallet API:
- Generate mnemonic:
POST https://wallet-api.forgingblock.io/v1/create-btc-mnemonic
curl 'https://wallet-api.forgingblock.io/v1/create-btc-mnemonic' -H 'Content-Type: application/x-www-form-urlencoded' --data ''
- Generate Bitcoin xPub:
POST https://wallet-api.forgingblock.io/v1/generate-btc-xpub using mnemonic
curl 'https://wallet-api.forgingblock.io/v1/generate-btc-xpub' -H 'Content-Type: application/x-www-form-urlencoded' --data 'mnemonic=few vintage wonder consider apart unfold piece tomorrow birth lazy sheriff visa'
- Generate Ethereum addresses pool
POST https://wallet-api.forgingblock.io/v1/generate-btc-xpub using number
(starting from 0) and mnemonic
curl 'https://wallet-api.forgingblock.io/v1/retrieve-eth-wallet-address' -H 'Content-Type: application/x-www-form-urlencoded' --data 'mnemonic=few vintage wonder consider apart unfold piece tomorrow birth lazy sheriff visa&number=0'
Node.js example on the right ->
// Node.js example
const derivePathEthereum = "m/44'/60'/0'/0/0"
const ethAddress = []
const nodeEth = ethers.utils.HDNode.fromMnemonic('few vintage wonder consider apart unfold piece tomorrow birth lazy sheriff visa')
for (let i = 0; i < 100; i++) {
const ethWallet = nodeEth.derivePath(derivePathEthereum + i)
ethAddress[i] = ethWallet.address
}
// Node.js example
const derivePathEthereum = "m/44'/60'/0'/0/0"
const ethAddress = []
const nodeEth = ethers.utils.HDNode.fromMnemonic('few vintage wonder consider apart unfold piece tomorrow birth lazy sheriff visa')
for (let i = 0; i < 100; i++) {
const ethWallet = nodeEth.derivePath(derivePathEthereum + i)
ethAddress[i] = ethWallet.address
}
// Node.js example
const derivePathEthereum = "m/44'/60'/0'/0/0"
const ethAddress = []
const nodeEth = ethers.utils.HDNode.fromMnemonic('few vintage wonder consider apart unfold piece tomorrow birth lazy sheriff visa')
for (let i = 0; i < 100; i++) {
const ethWallet = nodeEth.derivePath(derivePathEthereum + i)
ethAddress[i] = ethWallet.address
}
// Node.js example
const derivePathEthereum = "m/44'/60'/0'/0/0"
const ethAddress = []
const nodeEth = ethers.utils.HDNode.fromMnemonic('few vintage wonder consider apart unfold piece tomorrow birth lazy sheriff visa')
for (let i = 0; i < 100; i++) {
const ethWallet = nodeEth.derivePath(derivePathEthereum + i)
ethAddress[i] = ethWallet.address
}
Connect BTC Wallet (multiple by xPub)
curl 'https://api.forgingblock.io/v2/connect-wallet-btc' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&xpub=xpub6CAHoCTvo9DvKceBF8H2DgarHzUbpJX3pkSQKauaCBYScTgoEiTFH1qCdkWCDhPqabcsMt8AmV7QKEVi4MbhF47yCvU5fffXRGnkyr5NskW'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'xpub': 'xpub6CAHoCTvo9DvKceBF8H2DgarHzUbpJX3pkSQKauaCBYScTgoEiTFH1qCdkWCDhPqabcsMt8AmV7QKEVi4MbhF47yCvU5fffXRGnkyr5NskW'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-btc',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-btc');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'xpub' => 'xpub6CAHoCTvo9DvKceBF8H2DgarHzUbpJX3pkSQKauaCBYScTgoEiTFH1qCdkWCDhPqabcsMt8AmV7QKEVi4MbhF47yCvU5fffXRGnkyr5NskW'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-btc"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&xpub=xpub6CAHoCTvo9DvKceBF8H2DgarHzUbpJX3pkSQKauaCBYScTgoEiTFH1qCdkWCDhPqabcsMt8AmV7QKEVi4MbhF47yCvU5fffXRGnkyr5NskW")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated"
}
POST /v2/connect-wallet-btc
Connect a new Bitcoin wallet to the store (using xPub key)
To connect your wallet you need to provide Master Public key (xPub) for your wallet.
xPub keys can never be used to access your funds. The xPub does not contain any private key information.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
xpub | body | [string] | true | Master Public key (xPub) |
Connect Ethereum Wallet (pool with multiple addresses from the same mnemonic)
curl 'https://api.forgingblock.io/v2/connect-wallet-eth-pool' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0xc50E1AE062b5B0EA957538F678A44457D2e21Ac7&pool%5B0%5D=0xc50E1AE062b5B0EA957538F678A44457D2e21Ac7&pool%5B1%5D=0x5919b9Cf5Ee694633611E69A3d9EA85021046f79&pool%5B2%5D=0x52d1CfB6CD58c6cdB8Dd386F52f156d78d842793&pool%5B3%5D=0xE1c5AE9598891f1A0a2BAb7D16c13514913Ca632&pool%5B4%5D=0xbBe29C31606f59Bd18ce67efbe2b26Fce956F32a&pool%5B5%5D=0x64eA5EE80DB29F4C3E08603c24584D6aB4c04A5A&pool%5B6%5D=0xCd3Ed134A0aaa68E4C0a7A00998EceBC16CA4187&pool%5B7%5D=0x9A253ffE0F97F9595f4a0eF2200C02ea87B72750&pool%5B8%5D=0x7fdA9f641aceE92eC28E4F3B8A498b3A0A856026&pool%5B9%5D=0x7b86CeFfe864844d972dB686fD1891959FDBBe60&pool%5B10%5D=0x7E7A80394D90aE59EA07ba0219bf6deC5B77aeF6&pool%5B11%5D=0xae666eF40ce5D14d3D296c81BB3CB51901ecD258&pool%5B12%5D=0x25993998A45C4e357D2A9881F530B9263e1D3A6D&pool%5B13%5D=0x5B7eB77a83443702ee2F51aE34c91794A285ddE9&pool%5B14%5D=0x969d486b9f1fA710d64Af759976455514c5Ee371&pool%5B15%5D=0x751c8eDcfFFbd67ED8fc96Fb5100DB37a8aC8317&pool%5B16%5D=0xbDe3867B7Aa0E00c1e692fa352c3E76263Ef779D&pool%5B17%5D=0x15eF544C41A1A340A080853eD6DC25a0e120aA8e&pool%5B18%5D=0xe80CF0F879e70725E7eab195B7D00108a0467E43&pool%5B19%5D=0xB8b4Ba2c9A67b3eBD14Fc701f35E8D27c6aed0D9&pool%5B20%5D=0xe95f1bd5d7f1Aa6e40206608d8aF73A8d58bc9d1&pool%5B21%5D=0x502e046b0bE5388DAd4d7998e752344ff673bf68&pool%5B22%5D=0x3f6C1b48fF10B5Aa0Cb66b3802769Bde608FB73D&pool%5B23%5D=0x967a0a724911Dfdb09733B449dd3B1442edEf595&pool%5B24%5D=0xEF04C4b0B641A576ff1D6BC6ecd7Ede6F38D7B39&pool%5B25%5D=0xfEd928DAbd9fae8a52e2fEa7dB21fB77C7EC5865&pool%5B26%5D=0x5ca1d738FD552aC1f5ABCC9a77F5865541639F88&pool%5B27%5D=0x2b6aFE510528e4B9c8761efF19e27d3beABA2403&pool%5B28%5D=0x72AE96385e2b045729B6fDfA15bdF4453B6B79FB&pool%5B29%5D=0xBF9A949c473265a66E1632A699F0380D55DFdA26&pool%5B30%5D=0xeE556329AB37364962fA93476c2d83BC5a69ad8f&pool%5B31%5D=0x54AEEd89b1dAeC09efFea3200731c723CB945C3a&pool%5B32%5D=0xD4218a204F6F4DE3FF643B2f68e30c33dF847107&pool%5B33%5D=0x15e667317151EDa9178F512775b4F7568c823dA6&pool%5B34%5D=0x3d99fD43ec48986Fc6fa8CeF0153F55B17690952&pool%5B35%5D=0x36cD62E542a0f71eFeA45a2B31cf6820AfB0139a&pool%5B36%5D=0xdccf94763C37aBB78a97bB68C4593Bd483f5D223&pool%5B37%5D=0x078c013d9C20DcAe983d22860c83a65627fc61Ed&pool%5B38%5D=0x16e4b28EF0e94a30Ed8EBD6aa4E13ec6071ffaA6&pool%5B39%5D=0x8955B8F12c0eF8Bcbe659D21d26511E742e35771&pool%5B40%5D=0x80D03E68A819379E6Fa8d7aece219ee59e33Ba75&pool%5B41%5D=0x04a1FC277acE4135b2f68BED4283F9015037aD9e&pool%5B42%5D=0x382C71f3B1C17bf0aCD48152D610f6706EbA5D49&pool%5B43%5D=0xcFcf8E15082fa311814c5D506BA931666B6D60DC&pool%5B44%5D=0x70bcFeA79b9E615426C842B57523fB858AfC4752&pool%5B45%5D=0x7114f68c18238897bEc980643fe37ddA427B300A&pool%5B46%5D=0x2eF6C654026d3454ddE6Eb4A5872eaa0ac8962d5&pool%5B47%5D=0xE6e803BCf60a508291bAE7Ad90bC4f9Cc3Be2F83&pool%5B48%5D=0x778713d2816FF97aB5AdC2796965d857B4a0eC5A&pool%5B49%5D=0x1668229eEEdE32670Fe97d0DAb19743eDe4a87BD&pool%5B50%5D=0xe4A2cE3462e9b0Ae578222b046fe212f77A74906&pool%5B51%5D=0xdaA601D7b9e63fC0fD9a13dE7C454CDAC5A14600&pool%5B52%5D=0x9C311678F35d3D690dfB22a994a4D28a88C2cC9a&pool%5B53%5D=0xA5008168700c24946cC0a3D941Ec425DFc9dDDEb&pool%5B54%5D=0x6f270875930006390CF77FC06BbfeFBA59fe882c&pool%5B55%5D=0x8bEfDAC0DfAB7EEC0702B4fab7923F049A8e042D&pool%5B56%5D=0xFEf3476949a615848123496338EA1d1E33BEE5bC&pool%5B57%5D=0x16dcdba31CcA7093cb8A69C0fE53D4bacBa9D161&pool%5B58%5D=0xf019507908f43ef9e4dEaEF8e2DcDFE6B4A199BD&pool%5B59%5D=0xf27bAFB8D7B7Ca5ba34152FD9F8bE4Cf3E917981&pool%5B60%5D=0xB4D6e0Adf2CaC5876bc4C5D007B9A06E19Dcf6bd&pool%5B61%5D=0xfA2b3a6C6dFDc3f82aD640F31BB968a0C94832A9&pool%5B62%5D=0xf704DFff23f606cA81660e2413F93B1A5eCbd184&pool%5B63%5D=0xC51F3927419380B408Ac034F6D117e4d11fFfAe6&pool%5B64%5D=0xaCfE107F577C454AaBe86f10663E71b586878FD8&pool%5B65%5D=0xD9bc6413019E75EAF29F06Cd6C0bAe110845B22B&pool%5B66%5D=0x0FEaC5dE4170404a30c8818A3e457665853E3E77&pool%5B67%5D=0xc67B60E9b7b3c388aF6DC69a6A01Be79ccc93490&pool%5B68%5D=0x93951d9BC728eD31dCBC6Ff731d45A53fc9aaF9F&pool%5B69%5D=0x66cea24541C914488BcB50aF4FDb5E1Ba79a7Ace&pool%5B70%5D=0x0dD2B6a8F6425Af12CE7ece238eFa08B73963eDa&pool%5B71%5D=0x778B0a919354e5324fe27be1d84ec08268aB606F&pool%5B72%5D=0x6b9b543289FF5fFf22Ea0085776cE75d7C32bA95&pool%5B73%5D=0x2e0f29E1B6A95a9Aeb1e7A1B755692f28Ebb9F68&pool%5B74%5D=0x43370CD606F32191F5771784052A5a3c93B320b3&pool%5B75%5D=0xFC61Cbf4c725Cd196454dbe50Eb70FB0991c80D1&pool%5B76%5D=0xa506d3dC26b557272Bf799E457C26fb0226006Eb&pool%5B77%5D=0x3eAE32F7538D385B9e6a5753f526b62eE5361Db9&pool%5B78%5D=0x097Dc4De88273fEB92d4F889C748b2A31c8D953e&pool%5B79%5D=0x09475BAD959f64EC350e7861db4B858F5173c637&pool%5B80%5D=0x0B64163D3AbDa31AaC4Ef823F9E24F1FbE092779&pool%5B81%5D=0x546c0F06185e8eCD8f04421Ee3fC9eb842C5c60a&pool%5B82%5D=0xb79D06cBa12747cF5D744545D48bF5ABb07c80Ca&pool%5B83%5D=0x18beAcEfd19CE6f018C3FaE78A68B99524B3846b&pool%5B84%5D=0xABFFaB33999EA47d7e10580fb9b59dF89c457399&pool%5B85%5D=0x082A22474F7BfDa0f6C2699c7374f79df2978f5E&pool%5B86%5D=0xC6d28748496ef4778aCF394EA6C6347ffFcb75b4&pool%5B87%5D=0xd17c26Bb007E399E03dD79ebdEA1818E5b6f7C14&pool%5B88%5D=0xcb8e87b418B4553965371F05cbE884e439e9099c&pool%5B89%5D=0x7764B7572DfD2f2BA5b35D6902553079F6b75645&pool%5B90%5D=0xe437a40E3D8453Aa89e0f78aD84833Bb13d4bEC9&pool%5B91%5D=0xE7a6604f97AD67CFA59bFd563c63e4b48dDFcC9e&pool%5B92%5D=0x81FfcF0E833646023d6E4B95bD41E944a40A271B&pool%5B93%5D=0xb2C68b5dFb6faa2e8Aa4F38d63E5c2D04CbD5218&pool%5B94%5D=0x24f6876CC1CEBEB7B0DB94f533a057412458C1B9&pool%5B95%5D=0xD298a831eC5F726B96A660288BFf3Db26Ea744d1&pool%5B96%5D=0xEA6A1Df9339d8C354E22189Be1c1056395b8B38D&pool%5B97%5D=0x135D29C58D28D0029EAffB7F928c28a706A90356&pool%5B98%5D=0x240b176A126485D3D5539cac99ae3E3A343D85DE&pool%5B99%5D=0x04Ae46b60155E00E5802b566926259778e7A4f97'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address': '0xc50E1AE062b5B0EA957538F678A44457D2e21Ac7',
'pool': 'pool%5B0%5D=0xc50E1AE062b5B0EA957538F678A44457D2e21Ac7&pool%5B1%5D=0x5919b9Cf5Ee694633611E69A3d9EA85021046f79&pool%5B2%5D=0x52d1CfB6CD58c6cdB8Dd386F52f156d78d842793&pool%5B3%5D=0xE1c5AE9598891f1A0a2BAb7D16c13514913Ca632&pool%5B4%5D=0xbBe29C31606f59Bd18ce67efbe2b26Fce956F32a&pool%5B5%5D=0x64eA5EE80DB29F4C3E08603c24584D6aB4c04A5A&pool%5B6%5D=0xCd3Ed134A0aaa68E4C0a7A00998EceBC16CA4187&pool%5B7%5D=0x9A253ffE0F97F9595f4a0eF2200C02ea87B72750&pool%5B8%5D=0x7fdA9f641aceE92eC28E4F3B8A498b3A0A856026&pool%5B9%5D=0x7b86CeFfe864844d972dB686fD1891959FDBBe60&pool%5B10%5D=0x7E7A80394D90aE59EA07ba0219bf6deC5B77aeF6&pool%5B11%5D=0xae666eF40ce5D14d3D296c81BB3CB51901ecD258&pool%5B12%5D=0x25993998A45C4e357D2A9881F530B9263e1D3A6D&pool%5B13%5D=0x5B7eB77a83443702ee2F51aE34c91794A285ddE9&pool%5B14%5D=0x969d486b9f1fA710d64Af759976455514c5Ee371&pool%5B15%5D=0x751c8eDcfFFbd67ED8fc96Fb5100DB37a8aC8317&pool%5B16%5D=0xbDe3867B7Aa0E00c1e692fa352c3E76263Ef779D&pool%5B17%5D=0x15eF544C41A1A340A080853eD6DC25a0e120aA8e&pool%5B18%5D=0xe80CF0F879e70725E7eab195B7D00108a0467E43&pool%5B19%5D=0xB8b4Ba2c9A67b3eBD14Fc701f35E8D27c6aed0D9&pool%5B20%5D=0xe95f1bd5d7f1Aa6e40206608d8aF73A8d58bc9d1&pool%5B21%5D=0x502e046b0bE5388DAd4d7998e752344ff673bf68&pool%5B22%5D=0x3f6C1b48fF10B5Aa0Cb66b3802769Bde608FB73D&pool%5B23%5D=0x967a0a724911Dfdb09733B449dd3B1442edEf595&pool%5B24%5D=0xEF04C4b0B641A576ff1D6BC6ecd7Ede6F38D7B39&pool%5B25%5D=0xfEd928DAbd9fae8a52e2fEa7dB21fB77C7EC5865&pool%5B26%5D=0x5ca1d738FD552aC1f5ABCC9a77F5865541639F88&pool%5B27%5D=0x2b6aFE510528e4B9c8761efF19e27d3beABA2403&pool%5B28%5D=0x72AE96385e2b045729B6fDfA15bdF4453B6B79FB&pool%5B29%5D=0xBF9A949c473265a66E1632A699F0380D55DFdA26&pool%5B30%5D=0xeE556329AB37364962fA93476c2d83BC5a69ad8f&pool%5B31%5D=0x54AEEd89b1dAeC09efFea3200731c723CB945C3a&pool%5B32%5D=0xD4218a204F6F4DE3FF643B2f68e30c33dF847107&pool%5B33%5D=0x15e667317151EDa9178F512775b4F7568c823dA6&pool%5B34%5D=0x3d99fD43ec48986Fc6fa8CeF0153F55B17690952&pool%5B35%5D=0x36cD62E542a0f71eFeA45a2B31cf6820AfB0139a&pool%5B36%5D=0xdccf94763C37aBB78a97bB68C4593Bd483f5D223&pool%5B37%5D=0x078c013d9C20DcAe983d22860c83a65627fc61Ed&pool%5B38%5D=0x16e4b28EF0e94a30Ed8EBD6aa4E13ec6071ffaA6&pool%5B39%5D=0x8955B8F12c0eF8Bcbe659D21d26511E742e35771&pool%5B40%5D=0x80D03E68A819379E6Fa8d7aece219ee59e33Ba75&pool%5B41%5D=0x04a1FC277acE4135b2f68BED4283F9015037aD9e&pool%5B42%5D=0x382C71f3B1C17bf0aCD48152D610f6706EbA5D49&pool%5B43%5D=0xcFcf8E15082fa311814c5D506BA931666B6D60DC&pool%5B44%5D=0x70bcFeA79b9E615426C842B57523fB858AfC4752&pool%5B45%5D=0x7114f68c18238897bEc980643fe37ddA427B300A&pool%5B46%5D=0x2eF6C654026d3454ddE6Eb4A5872eaa0ac8962d5&pool%5B47%5D=0xE6e803BCf60a508291bAE7Ad90bC4f9Cc3Be2F83&pool%5B48%5D=0x778713d2816FF97aB5AdC2796965d857B4a0eC5A&pool%5B49%5D=0x1668229eEEdE32670Fe97d0DAb19743eDe4a87BD&pool%5B50%5D=0xe4A2cE3462e9b0Ae578222b046fe212f77A74906&pool%5B51%5D=0xdaA601D7b9e63fC0fD9a13dE7C454CDAC5A14600&pool%5B52%5D=0x9C311678F35d3D690dfB22a994a4D28a88C2cC9a&pool%5B53%5D=0xA5008168700c24946cC0a3D941Ec425DFc9dDDEb&pool%5B54%5D=0x6f270875930006390CF77FC06BbfeFBA59fe882c&pool%5B55%5D=0x8bEfDAC0DfAB7EEC0702B4fab7923F049A8e042D&pool%5B56%5D=0xFEf3476949a615848123496338EA1d1E33BEE5bC&pool%5B57%5D=0x16dcdba31CcA7093cb8A69C0fE53D4bacBa9D161&pool%5B58%5D=0xf019507908f43ef9e4dEaEF8e2DcDFE6B4A199BD&pool%5B59%5D=0xf27bAFB8D7B7Ca5ba34152FD9F8bE4Cf3E917981&pool%5B60%5D=0xB4D6e0Adf2CaC5876bc4C5D007B9A06E19Dcf6bd&pool%5B61%5D=0xfA2b3a6C6dFDc3f82aD640F31BB968a0C94832A9&pool%5B62%5D=0xf704DFff23f606cA81660e2413F93B1A5eCbd184&pool%5B63%5D=0xC51F3927419380B408Ac034F6D117e4d11fFfAe6&pool%5B64%5D=0xaCfE107F577C454AaBe86f10663E71b586878FD8&pool%5B65%5D=0xD9bc6413019E75EAF29F06Cd6C0bAe110845B22B&pool%5B66%5D=0x0FEaC5dE4170404a30c8818A3e457665853E3E77&pool%5B67%5D=0xc67B60E9b7b3c388aF6DC69a6A01Be79ccc93490&pool%5B68%5D=0x93951d9BC728eD31dCBC6Ff731d45A53fc9aaF9F&pool%5B69%5D=0x66cea24541C914488BcB50aF4FDb5E1Ba79a7Ace&pool%5B70%5D=0x0dD2B6a8F6425Af12CE7ece238eFa08B73963eDa&pool%5B71%5D=0x778B0a919354e5324fe27be1d84ec08268aB606F&pool%5B72%5D=0x6b9b543289FF5fFf22Ea0085776cE75d7C32bA95&pool%5B73%5D=0x2e0f29E1B6A95a9Aeb1e7A1B755692f28Ebb9F68&pool%5B74%5D=0x43370CD606F32191F5771784052A5a3c93B320b3&pool%5B75%5D=0xFC61Cbf4c725Cd196454dbe50Eb70FB0991c80D1&pool%5B76%5D=0xa506d3dC26b557272Bf799E457C26fb0226006Eb&pool%5B77%5D=0x3eAE32F7538D385B9e6a5753f526b62eE5361Db9&pool%5B78%5D=0x097Dc4De88273fEB92d4F889C748b2A31c8D953e&pool%5B79%5D=0x09475BAD959f64EC350e7861db4B858F5173c637&pool%5B80%5D=0x0B64163D3AbDa31AaC4Ef823F9E24F1FbE092779&pool%5B81%5D=0x546c0F06185e8eCD8f04421Ee3fC9eb842C5c60a&pool%5B82%5D=0xb79D06cBa12747cF5D744545D48bF5ABb07c80Ca&pool%5B83%5D=0x18beAcEfd19CE6f018C3FaE78A68B99524B3846b&pool%5B84%5D=0xABFFaB33999EA47d7e10580fb9b59dF89c457399&pool%5B85%5D=0x082A22474F7BfDa0f6C2699c7374f79df2978f5E&pool%5B86%5D=0xC6d28748496ef4778aCF394EA6C6347ffFcb75b4&pool%5B87%5D=0xd17c26Bb007E399E03dD79ebdEA1818E5b6f7C14&pool%5B88%5D=0xcb8e87b418B4553965371F05cbE884e439e9099c&pool%5B89%5D=0x7764B7572DfD2f2BA5b35D6902553079F6b75645&pool%5B90%5D=0xe437a40E3D8453Aa89e0f78aD84833Bb13d4bEC9&pool%5B91%5D=0xE7a6604f97AD67CFA59bFd563c63e4b48dDFcC9e&pool%5B92%5D=0x81FfcF0E833646023d6E4B95bD41E944a40A271B&pool%5B93%5D=0xb2C68b5dFb6faa2e8Aa4F38d63E5c2D04CbD5218&pool%5B94%5D=0x24f6876CC1CEBEB7B0DB94f533a057412458C1B9&pool%5B95%5D=0xD298a831eC5F726B96A660288BFf3Db26Ea744d1&pool%5B96%5D=0xEA6A1Df9339d8C354E22189Be1c1056395b8B38D&pool%5B97%5D=0x135D29C58D28D0029EAffB7F928c28a706A90356&pool%5B98%5D=0x240b176A126485D3D5539cac99ae3E3A343D85DE&pool%5B99%5D=0x04Ae46b60155E00E5802b566926259778e7A4f97'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/connect-wallet-eth-pool',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/connect-wallet-eth-pool');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'address' => '0xc50E1AE062b5B0EA957538F678A44457D2e21Ac7',
'pool' => 'pool%5B0%5D=0xc50E1AE062b5B0EA957538F678A44457D2e21Ac7&pool%5B1%5D=0x5919b9Cf5Ee694633611E69A3d9EA85021046f79&pool%5B2%5D=0x52d1CfB6CD58c6cdB8Dd386F52f156d78d842793&pool%5B3%5D=0xE1c5AE9598891f1A0a2BAb7D16c13514913Ca632&pool%5B4%5D=0xbBe29C31606f59Bd18ce67efbe2b26Fce956F32a&pool%5B5%5D=0x64eA5EE80DB29F4C3E08603c24584D6aB4c04A5A&pool%5B6%5D=0xCd3Ed134A0aaa68E4C0a7A00998EceBC16CA4187&pool%5B7%5D=0x9A253ffE0F97F9595f4a0eF2200C02ea87B72750&pool%5B8%5D=0x7fdA9f641aceE92eC28E4F3B8A498b3A0A856026&pool%5B9%5D=0x7b86CeFfe864844d972dB686fD1891959FDBBe60&pool%5B10%5D=0x7E7A80394D90aE59EA07ba0219bf6deC5B77aeF6&pool%5B11%5D=0xae666eF40ce5D14d3D296c81BB3CB51901ecD258&pool%5B12%5D=0x25993998A45C4e357D2A9881F530B9263e1D3A6D&pool%5B13%5D=0x5B7eB77a83443702ee2F51aE34c91794A285ddE9&pool%5B14%5D=0x969d486b9f1fA710d64Af759976455514c5Ee371&pool%5B15%5D=0x751c8eDcfFFbd67ED8fc96Fb5100DB37a8aC8317&pool%5B16%5D=0xbDe3867B7Aa0E00c1e692fa352c3E76263Ef779D&pool%5B17%5D=0x15eF544C41A1A340A080853eD6DC25a0e120aA8e&pool%5B18%5D=0xe80CF0F879e70725E7eab195B7D00108a0467E43&pool%5B19%5D=0xB8b4Ba2c9A67b3eBD14Fc701f35E8D27c6aed0D9&pool%5B20%5D=0xe95f1bd5d7f1Aa6e40206608d8aF73A8d58bc9d1&pool%5B21%5D=0x502e046b0bE5388DAd4d7998e752344ff673bf68&pool%5B22%5D=0x3f6C1b48fF10B5Aa0Cb66b3802769Bde608FB73D&pool%5B23%5D=0x967a0a724911Dfdb09733B449dd3B1442edEf595&pool%5B24%5D=0xEF04C4b0B641A576ff1D6BC6ecd7Ede6F38D7B39&pool%5B25%5D=0xfEd928DAbd9fae8a52e2fEa7dB21fB77C7EC5865&pool%5B26%5D=0x5ca1d738FD552aC1f5ABCC9a77F5865541639F88&pool%5B27%5D=0x2b6aFE510528e4B9c8761efF19e27d3beABA2403&pool%5B28%5D=0x72AE96385e2b045729B6fDfA15bdF4453B6B79FB&pool%5B29%5D=0xBF9A949c473265a66E1632A699F0380D55DFdA26&pool%5B30%5D=0xeE556329AB37364962fA93476c2d83BC5a69ad8f&pool%5B31%5D=0x54AEEd89b1dAeC09efFea3200731c723CB945C3a&pool%5B32%5D=0xD4218a204F6F4DE3FF643B2f68e30c33dF847107&pool%5B33%5D=0x15e667317151EDa9178F512775b4F7568c823dA6&pool%5B34%5D=0x3d99fD43ec48986Fc6fa8CeF0153F55B17690952&pool%5B35%5D=0x36cD62E542a0f71eFeA45a2B31cf6820AfB0139a&pool%5B36%5D=0xdccf94763C37aBB78a97bB68C4593Bd483f5D223&pool%5B37%5D=0x078c013d9C20DcAe983d22860c83a65627fc61Ed&pool%5B38%5D=0x16e4b28EF0e94a30Ed8EBD6aa4E13ec6071ffaA6&pool%5B39%5D=0x8955B8F12c0eF8Bcbe659D21d26511E742e35771&pool%5B40%5D=0x80D03E68A819379E6Fa8d7aece219ee59e33Ba75&pool%5B41%5D=0x04a1FC277acE4135b2f68BED4283F9015037aD9e&pool%5B42%5D=0x382C71f3B1C17bf0aCD48152D610f6706EbA5D49&pool%5B43%5D=0xcFcf8E15082fa311814c5D506BA931666B6D60DC&pool%5B44%5D=0x70bcFeA79b9E615426C842B57523fB858AfC4752&pool%5B45%5D=0x7114f68c18238897bEc980643fe37ddA427B300A&pool%5B46%5D=0x2eF6C654026d3454ddE6Eb4A5872eaa0ac8962d5&pool%5B47%5D=0xE6e803BCf60a508291bAE7Ad90bC4f9Cc3Be2F83&pool%5B48%5D=0x778713d2816FF97aB5AdC2796965d857B4a0eC5A&pool%5B49%5D=0x1668229eEEdE32670Fe97d0DAb19743eDe4a87BD&pool%5B50%5D=0xe4A2cE3462e9b0Ae578222b046fe212f77A74906&pool%5B51%5D=0xdaA601D7b9e63fC0fD9a13dE7C454CDAC5A14600&pool%5B52%5D=0x9C311678F35d3D690dfB22a994a4D28a88C2cC9a&pool%5B53%5D=0xA5008168700c24946cC0a3D941Ec425DFc9dDDEb&pool%5B54%5D=0x6f270875930006390CF77FC06BbfeFBA59fe882c&pool%5B55%5D=0x8bEfDAC0DfAB7EEC0702B4fab7923F049A8e042D&pool%5B56%5D=0xFEf3476949a615848123496338EA1d1E33BEE5bC&pool%5B57%5D=0x16dcdba31CcA7093cb8A69C0fE53D4bacBa9D161&pool%5B58%5D=0xf019507908f43ef9e4dEaEF8e2DcDFE6B4A199BD&pool%5B59%5D=0xf27bAFB8D7B7Ca5ba34152FD9F8bE4Cf3E917981&pool%5B60%5D=0xB4D6e0Adf2CaC5876bc4C5D007B9A06E19Dcf6bd&pool%5B61%5D=0xfA2b3a6C6dFDc3f82aD640F31BB968a0C94832A9&pool%5B62%5D=0xf704DFff23f606cA81660e2413F93B1A5eCbd184&pool%5B63%5D=0xC51F3927419380B408Ac034F6D117e4d11fFfAe6&pool%5B64%5D=0xaCfE107F577C454AaBe86f10663E71b586878FD8&pool%5B65%5D=0xD9bc6413019E75EAF29F06Cd6C0bAe110845B22B&pool%5B66%5D=0x0FEaC5dE4170404a30c8818A3e457665853E3E77&pool%5B67%5D=0xc67B60E9b7b3c388aF6DC69a6A01Be79ccc93490&pool%5B68%5D=0x93951d9BC728eD31dCBC6Ff731d45A53fc9aaF9F&pool%5B69%5D=0x66cea24541C914488BcB50aF4FDb5E1Ba79a7Ace&pool%5B70%5D=0x0dD2B6a8F6425Af12CE7ece238eFa08B73963eDa&pool%5B71%5D=0x778B0a919354e5324fe27be1d84ec08268aB606F&pool%5B72%5D=0x6b9b543289FF5fFf22Ea0085776cE75d7C32bA95&pool%5B73%5D=0x2e0f29E1B6A95a9Aeb1e7A1B755692f28Ebb9F68&pool%5B74%5D=0x43370CD606F32191F5771784052A5a3c93B320b3&pool%5B75%5D=0xFC61Cbf4c725Cd196454dbe50Eb70FB0991c80D1&pool%5B76%5D=0xa506d3dC26b557272Bf799E457C26fb0226006Eb&pool%5B77%5D=0x3eAE32F7538D385B9e6a5753f526b62eE5361Db9&pool%5B78%5D=0x097Dc4De88273fEB92d4F889C748b2A31c8D953e&pool%5B79%5D=0x09475BAD959f64EC350e7861db4B858F5173c637&pool%5B80%5D=0x0B64163D3AbDa31AaC4Ef823F9E24F1FbE092779&pool%5B81%5D=0x546c0F06185e8eCD8f04421Ee3fC9eb842C5c60a&pool%5B82%5D=0xb79D06cBa12747cF5D744545D48bF5ABb07c80Ca&pool%5B83%5D=0x18beAcEfd19CE6f018C3FaE78A68B99524B3846b&pool%5B84%5D=0xABFFaB33999EA47d7e10580fb9b59dF89c457399&pool%5B85%5D=0x082A22474F7BfDa0f6C2699c7374f79df2978f5E&pool%5B86%5D=0xC6d28748496ef4778aCF394EA6C6347ffFcb75b4&pool%5B87%5D=0xd17c26Bb007E399E03dD79ebdEA1818E5b6f7C14&pool%5B88%5D=0xcb8e87b418B4553965371F05cbE884e439e9099c&pool%5B89%5D=0x7764B7572DfD2f2BA5b35D6902553079F6b75645&pool%5B90%5D=0xe437a40E3D8453Aa89e0f78aD84833Bb13d4bEC9&pool%5B91%5D=0xE7a6604f97AD67CFA59bFd563c63e4b48dDFcC9e&pool%5B92%5D=0x81FfcF0E833646023d6E4B95bD41E944a40A271B&pool%5B93%5D=0xb2C68b5dFb6faa2e8Aa4F38d63E5c2D04CbD5218&pool%5B94%5D=0x24f6876CC1CEBEB7B0DB94f533a057412458C1B9&pool%5B95%5D=0xD298a831eC5F726B96A660288BFf3Db26Ea744d1&pool%5B96%5D=0xEA6A1Df9339d8C354E22189Be1c1056395b8B38D&pool%5B97%5D=0x135D29C58D28D0029EAffB7F928c28a706A90356&pool%5B98%5D=0x240b176A126485D3D5539cac99ae3E3A343D85DE&pool%5B99%5D=0x04Ae46b60155E00E5802b566926259778e7A4f97'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/connect-wallet-eth-pool"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&address=0xc50E1AE062b5B0EA957538F678A44457D2e21Ac7&pool=pool%255B0%255D%3D0xc50E1AE062b5B0EA957538F678A44457D2e21Ac7%26pool%255B1%255D%3D0x5919b9Cf5Ee694633611E69A3d9EA85021046f79%26pool%255B2%255D%3D0x52d1CfB6CD58c6cdB8Dd386F52f156d78d842793%26pool%255B3%255D%3D0xE1c5AE9598891f1A0a2BAb7D16c13514913Ca632%26pool%255B4%255D%3D0xbBe29C31606f59Bd18ce67efbe2b26Fce956F32a%26pool%255B5%255D%3D0x64eA5EE80DB29F4C3E08603c24584D6aB4c04A5A%26pool%255B6%255D%3D0xCd3Ed134A0aaa68E4C0a7A00998EceBC16CA4187%26pool%255B7%255D%3D0x9A253ffE0F97F9595f4a0eF2200C02ea87B72750%26pool%255B8%255D%3D0x7fdA9f641aceE92eC28E4F3B8A498b3A0A856026%26pool%255B9%255D%3D0x7b86CeFfe864844d972dB686fD1891959FDBBe60%26pool%255B10%255D%3D0x7E7A80394D90aE59EA07ba0219bf6deC5B77aeF6%26pool%255B11%255D%3D0xae666eF40ce5D14d3D296c81BB3CB51901ecD258%26pool%255B12%255D%3D0x25993998A45C4e357D2A9881F530B9263e1D3A6D%26pool%255B13%255D%3D0x5B7eB77a83443702ee2F51aE34c91794A285ddE9%26pool%255B14%255D%3D0x969d486b9f1fA710d64Af759976455514c5Ee371%26pool%255B15%255D%3D0x751c8eDcfFFbd67ED8fc96Fb5100DB37a8aC8317%26pool%255B16%255D%3D0xbDe3867B7Aa0E00c1e692fa352c3E76263Ef779D%26pool%255B17%255D%3D0x15eF544C41A1A340A080853eD6DC25a0e120aA8e%26pool%255B18%255D%3D0xe80CF0F879e70725E7eab195B7D00108a0467E43%26pool%255B19%255D%3D0xB8b4Ba2c9A67b3eBD14Fc701f35E8D27c6aed0D9%26pool%255B20%255D%3D0xe95f1bd5d7f1Aa6e40206608d8aF73A8d58bc9d1%26pool%255B21%255D%3D0x502e046b0bE5388DAd4d7998e752344ff673bf68%26pool%255B22%255D%3D0x3f6C1b48fF10B5Aa0Cb66b3802769Bde608FB73D%26pool%255B23%255D%3D0x967a0a724911Dfdb09733B449dd3B1442edEf595%26pool%255B24%255D%3D0xEF04C4b0B641A576ff1D6BC6ecd7Ede6F38D7B39%26pool%255B25%255D%3D0xfEd928DAbd9fae8a52e2fEa7dB21fB77C7EC5865%26pool%255B26%255D%3D0x5ca1d738FD552aC1f5ABCC9a77F5865541639F88%26pool%255B27%255D%3D0x2b6aFE510528e4B9c8761efF19e27d3beABA2403%26pool%255B28%255D%3D0x72AE96385e2b045729B6fDfA15bdF4453B6B79FB%26pool%255B29%255D%3D0xBF9A949c473265a66E1632A699F0380D55DFdA26%26pool%255B30%255D%3D0xeE556329AB37364962fA93476c2d83BC5a69ad8f%26pool%255B31%255D%3D0x54AEEd89b1dAeC09efFea3200731c723CB945C3a%26pool%255B32%255D%3D0xD4218a204F6F4DE3FF643B2f68e30c33dF847107%26pool%255B33%255D%3D0x15e667317151EDa9178F512775b4F7568c823dA6%26pool%255B34%255D%3D0x3d99fD43ec48986Fc6fa8CeF0153F55B17690952%26pool%255B35%255D%3D0x36cD62E542a0f71eFeA45a2B31cf6820AfB0139a%26pool%255B36%255D%3D0xdccf94763C37aBB78a97bB68C4593Bd483f5D223%26pool%255B37%255D%3D0x078c013d9C20DcAe983d22860c83a65627fc61Ed%26pool%255B38%255D%3D0x16e4b28EF0e94a30Ed8EBD6aa4E13ec6071ffaA6%26pool%255B39%255D%3D0x8955B8F12c0eF8Bcbe659D21d26511E742e35771%26pool%255B40%255D%3D0x80D03E68A819379E6Fa8d7aece219ee59e33Ba75%26pool%255B41%255D%3D0x04a1FC277acE4135b2f68BED4283F9015037aD9e%26pool%255B42%255D%3D0x382C71f3B1C17bf0aCD48152D610f6706EbA5D49%26pool%255B43%255D%3D0xcFcf8E15082fa311814c5D506BA931666B6D60DC%26pool%255B44%255D%3D0x70bcFeA79b9E615426C842B57523fB858AfC4752%26pool%255B45%255D%3D0x7114f68c18238897bEc980643fe37ddA427B300A%26pool%255B46%255D%3D0x2eF6C654026d3454ddE6Eb4A5872eaa0ac8962d5%26pool%255B47%255D%3D0xE6e803BCf60a508291bAE7Ad90bC4f9Cc3Be2F83%26pool%255B48%255D%3D0x778713d2816FF97aB5AdC2796965d857B4a0eC5A%26pool%255B49%255D%3D0x1668229eEEdE32670Fe97d0DAb19743eDe4a87BD%26pool%255B50%255D%3D0xe4A2cE3462e9b0Ae578222b046fe212f77A74906%26pool%255B51%255D%3D0xdaA601D7b9e63fC0fD9a13dE7C454CDAC5A14600%26pool%255B52%255D%3D0x9C311678F35d3D690dfB22a994a4D28a88C2cC9a%26pool%255B53%255D%3D0xA5008168700c24946cC0a3D941Ec425DFc9dDDEb%26pool%255B54%255D%3D0x6f270875930006390CF77FC06BbfeFBA59fe882c%26pool%255B55%255D%3D0x8bEfDAC0DfAB7EEC0702B4fab7923F049A8e042D%26pool%255B56%255D%3D0xFEf3476949a615848123496338EA1d1E33BEE5bC%26pool%255B57%255D%3D0x16dcdba31CcA7093cb8A69C0fE53D4bacBa9D161%26pool%255B58%255D%3D0xf019507908f43ef9e4dEaEF8e2DcDFE6B4A199BD%26pool%255B59%255D%3D0xf27bAFB8D7B7Ca5ba34152FD9F8bE4Cf3E917981%26pool%255B60%255D%3D0xB4D6e0Adf2CaC5876bc4C5D007B9A06E19Dcf6bd%26pool%255B61%255D%3D0xfA2b3a6C6dFDc3f82aD640F31BB968a0C94832A9%26pool%255B62%255D%3D0xf704DFff23f606cA81660e2413F93B1A5eCbd184%26pool%255B63%255D%3D0xC51F3927419380B408Ac034F6D117e4d11fFfAe6%26pool%255B64%255D%3D0xaCfE107F577C454AaBe86f10663E71b586878FD8%26pool%255B65%255D%3D0xD9bc6413019E75EAF29F06Cd6C0bAe110845B22B%26pool%255B66%255D%3D0x0FEaC5dE4170404a30c8818A3e457665853E3E77%26pool%255B67%255D%3D0xc67B60E9b7b3c388aF6DC69a6A01Be79ccc93490%26pool%255B68%255D%3D0x93951d9BC728eD31dCBC6Ff731d45A53fc9aaF9F%26pool%255B69%255D%3D0x66cea24541C914488BcB50aF4FDb5E1Ba79a7Ace%26pool%255B70%255D%3D0x0dD2B6a8F6425Af12CE7ece238eFa08B73963eDa%26pool%255B71%255D%3D0x778B0a919354e5324fe27be1d84ec08268aB606F%26pool%255B72%255D%3D0x6b9b543289FF5fFf22Ea0085776cE75d7C32bA95%26pool%255B73%255D%3D0x2e0f29E1B6A95a9Aeb1e7A1B755692f28Ebb9F68%26pool%255B74%255D%3D0x43370CD606F32191F5771784052A5a3c93B320b3%26pool%255B75%255D%3D0xFC61Cbf4c725Cd196454dbe50Eb70FB0991c80D1%26pool%255B76%255D%3D0xa506d3dC26b557272Bf799E457C26fb0226006Eb%26pool%255B77%255D%3D0x3eAE32F7538D385B9e6a5753f526b62eE5361Db9%26pool%255B78%255D%3D0x097Dc4De88273fEB92d4F889C748b2A31c8D953e%26pool%255B79%255D%3D0x09475BAD959f64EC350e7861db4B858F5173c637%26pool%255B80%255D%3D0x0B64163D3AbDa31AaC4Ef823F9E24F1FbE092779%26pool%255B81%255D%3D0x546c0F06185e8eCD8f04421Ee3fC9eb842C5c60a%26pool%255B82%255D%3D0xb79D06cBa12747cF5D744545D48bF5ABb07c80Ca%26pool%255B83%255D%3D0x18beAcEfd19CE6f018C3FaE78A68B99524B3846b%26pool%255B84%255D%3D0xABFFaB33999EA47d7e10580fb9b59dF89c457399%26pool%255B85%255D%3D0x082A22474F7BfDa0f6C2699c7374f79df2978f5E%26pool%255B86%255D%3D0xC6d28748496ef4778aCF394EA6C6347ffFcb75b4%26pool%255B87%255D%3D0xd17c26Bb007E399E03dD79ebdEA1818E5b6f7C14%26pool%255B88%255D%3D0xcb8e87b418B4553965371F05cbE884e439e9099c%26pool%255B89%255D%3D0x7764B7572DfD2f2BA5b35D6902553079F6b75645%26pool%255B90%255D%3D0xe437a40E3D8453Aa89e0f78aD84833Bb13d4bEC9%26pool%255B91%255D%3D0xE7a6604f97AD67CFA59bFd563c63e4b48dDFcC9e%26pool%255B92%255D%3D0x81FfcF0E833646023d6E4B95bD41E944a40A271B%26pool%255B93%255D%3D0xb2C68b5dFb6faa2e8Aa4F38d63E5c2D04CbD5218%26pool%255B94%255D%3D0x24f6876CC1CEBEB7B0DB94f533a057412458C1B9%26pool%255B95%255D%3D0xD298a831eC5F726B96A660288BFf3Db26Ea744d1%26pool%255B96%255D%3D0xEA6A1Df9339d8C354E22189Be1c1056395b8B38D%26pool%255B97%255D%3D0x135D29C58D28D0029EAffB7F928c28a706A90356%26pool%255B98%255D%3D0x240b176A126485D3D5539cac99ae3E3A343D85DE%26pool%255B99%255D%3D0x04Ae46b60155E00E5802b566926259778e7A4f97")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "newName2 with ID: EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q wallet was successfully updated",
"multiple": true
}
POST /v2/connect-wallet-eth-pool
Connect a pool of the Ethereum addresses generated from the same mnemonic
address
is first (0) address in the pool, funds would try to go on it, if there no other active invoices (minimizes transactions commission for you)
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | first (0) address in the pool |
pool | body | [array] | true | array of the Ethereum addresses, up to 100 |
Change Bitcoin Wallet Store State (Advanced)
curl 'https://api.forgingblock.io/v2/change-store-btc-wallet-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&single=true'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'single': 'true'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/change-store-btc-wallet-status',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/change-store-btc-wallet-status');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'single' => 'true'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/change-store-btc-wallet-status"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&single=true")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"success": "Store bitcoin wallet single status is set to: true"
}
POST /v2/change-store-btc-wallet-status
Change store status between Bitcoin xPub and Bitcoin single address
That state distinguish between Single Wallet and Multi Wallet option
You could provide single=true
or single=false
to enable or disable Bitcoin single address for your store.
Consider that if you disable it, you must also have your own xPub key connected to the store. Also, every invoice that was previosly created with connected single address would be still using Bitcoin single address. Same apply for xPub key (in case you didn't connected single address before the created invoice with connected xPub key); that invoice would still be using the address that is generated from xPub key.
If you changed that manually consider to remove vuex
from browser's local storage and relogin to Dashboard, or your Dashboard would became broken!
Basically Dashboard would be still thinking you are using old option, as state would be used from vuex cache from local storage.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
single | body | [string] | true | ether true (single wallet address enabled) or false |
Invoice Management
Every new invoice lifetime is 15 minutes (avoiding volatility fluctuations) Invoice lifetime could be changed manually
Invoice status could be
new
(invoice has not yet been fully paid)confirmed
(received payment)expired
(can no longer receive payments)
Secondary statuses: (available only after invoice is expired or received payment)
overpayment
(received payment for amount greater than requested)underpayment
(received payment for less than requested)
Invoicing
curl 'https://api.forgingblock.io/v2/create-invoice' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&amount=1550¤cy=usd'
curl 'https://api.forgingblock.io/v2/check-invoice' -H 'Content-Type: application/x-www-form-urlencoded' --data 'invoice=W1a7qBnyXGaSGhqEbWziMp'
curl 'https://api.forgingblock.io/v2/check-invoice-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'invoice=W1a7qBnyXGaSGhqEbWziMp'
// Create new invoice
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token': '769861935592995096388092186007720621311273005537151914971703166',
'amount': '1550',
'currency': 'usd'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/create-invoice',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Get invoice details
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'invoice': 'W1a7qBnyXGaSGhqEbWziMp'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/check-invoice',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Get invoice status
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'invoice': 'W1a7qBnyXGaSGhqEbWziMp'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/check-invoice-status',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
/* Create new invoice */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/create-invoice');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token' => '769861935592995096388092186007720621311273005537151914971703166',
'amount' => '1550',
'currency' => 'usd'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Get invoice details */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/check-invoice');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'invoice' => 'W1a7qBnyXGaSGhqEbWziMp'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Get invoice status */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/check-invoice-status');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'invoice' => 'W1a7qBnyXGaSGhqEbWziMp'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
// Create new invoice
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/create-invoice"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&amount=1550¤cy=usd")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Get invoice details
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/check-invoice"
method := "POST"
payload := strings.NewReader("invoice=W1a7qBnyXGaSGhqEbWziMp")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Get invoice status
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/check-invoice-status"
method := "POST"
payload := strings.NewReader("invoice=W1a7qBnyXGaSGhqEbWziMp")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response examples:
{
"id": "XzZd7DdJAosdtR3Qvf3jnr",
"currency": "USD",
"realAmount": "0.08627969",
"btcPrice": "0.08627969",
"status": "new",
"url": "https://api.forgingblock.io/invoice?id=XzZd7DdJAosdtR3Qvf3jnr"
}
{
"uiSettings": {
"extensionPartial": "Bitcoin_Lightning_LikeMethodCheckout",
"checkoutBodyVueComponentName": "BitcoinLightningLikeMethodCheckout",
"checkoutHeaderVueComponentName": "BitcoinLightningLikeMethodCheckoutHeader",
"noScriptPartialName": "Bitcoin_Lightning_LikeMethodCheckoutNoScript"
},
"htmlTitle": "ForgingBlock Invoice",
"defaultLang": "en",
"isModal": "false",
"isLightning": "false",
"cryptoCode": "BTC",
"invoiceId": "W1a7qBnyXGaSGhqEbWziMp",
"btcAddress": "1EsPmXNT6ZCr1VUXqdpM9aK1dFJCgNp3Xo",
"btcDue": "0.00060601",
"customerEmail": null,
"businessName": "Wptest",
"businessUrl": "https://test.com",
"businessContact": "test@fastmail.mx",
"invoiceTotalExpirationTime": 30,
"invoiceCreatedDate": "2022-12-28T11:58:01.000Z",
"invoiceExpirationDate": "2022-12-28T12:28:01.000Z",
"checkoutId": "ac1383dc5a8c79156f5e2a72ac889550",
"checkoutCurrency": "USD",
"checkoutAmount": "10",
"checkoutDescription": "Just test",
"checkoutEmail": "TEST@FMGUY.COM",
"checkoutCount": 0,
"checkoutName": "test",
"requiresRefundEmail": "true",
"status": "expired",
"merchantRefLink": "/",
"maxTimeSeconds": 1800,
"storeName": "newName2",
"timeLeft": "00:00",
"rate": "16501.3 USD",
"orderAmount": 0.00060601,
"orderAmountFiat": "10 USD",
"btcPaid": "0.00000000",
"orderId": null,
"isMultiCurrency": false,
"maxTimeMinutes": 30,
"paymentType": null,
"paymentMethodId": "BTC",
"paymentMethodName": "Bitcoin",
"cryptoImage": "/imlegacy/bitcoin.svg",
"storeId": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"peerInfo": null,
"rootPath": "/",
"redirectAutomatically": false
}
{
"uiSettings": {
"extensionPartial": "Bitcoin_Lightning_LikeMethodCheckout",
"checkoutBodyVueComponentName": "BitcoinLightningLikeMethodCheckout",
"checkoutHeaderVueComponentName": "BitcoinLightningLikeMethodCheckoutHeader",
"noScriptPartialName": "Bitcoin_Lightning_LikeMethodCheckoutNoScript"
},
"htmlTitle": "ForgingBlock Invoice",
"defaultLang": "en",
"isModal": "false",
"isLightning": "false",
"cryptoCode": "BTC",
"invoiceId": "W1a7qBnyXGaSGhqEbWziMp",
"btcAddress": "1EsPmXNT6ZCr1VUXqdpM9aK1dFJCgNp3Xo",
"btcDue": "0.00060601",
"customerEmail": null,
"businessName": "Wptest",
"businessUrl": "https://test.com",
"businessContact": "test@fastmail.mx",
"invoiceTotalExpirationTime": 30,
"invoiceCreatedDate": "2022-12-28T11:58:01.000Z",
"invoiceExpirationDate": "2022-12-28T12:28:01.000Z",
"checkoutId": "ac1383dc5a8c79156f5e2a72ac889550",
"checkoutCurrency": "USD",
"checkoutAmount": "10",
"checkoutDescription": "Just test",
"checkoutEmail": "TEST@FMGUY.COM",
"checkoutCount": 0,
"checkoutName": "test",
"requiresRefundEmail": "true",
"status": "expired",
"merchantRefLink": "/",
"maxTimeSeconds": 1800,
"storeName": "newName2",
"timeLeft": "00:00",
"rate": "16501.3 USD",
"orderAmount": 0.00060601,
"orderAmountFiat": "10 USD",
"btcPaid": "0.00000000",
"orderId": null,
"isMultiCurrency": false,
"maxTimeMinutes": 30,
"paymentType": null,
"paymentMethodId": "BTC",
"paymentMethodName": "Bitcoin",
"cryptoImage": "/imlegacy/bitcoin.svg",
"storeId": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"peerInfo": null,
"rootPath": "/",
"redirectAutomatically": false
}
POST /v2/create-invoice
Create new invoice
POST /v2/check-invoice
Get invoice details
POST /v2/check-invoice-status
Get invoice status
Same as /v2/check-invoice
, exist for backward compatibility
status
contains invoice status
Parameters
For /v2/create-invoice
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
amount | body | [string] | true | amount for the price |
currency | body | [string] | true | currency code in ISO 4217 |
link | body | [string] | false | url to follow after the payment |
notification | body | [string] | false | url for IPN request (used by e-commerce software) |
order | body | [string] | false | uniq order id (equal to the order id in e-commerce software) |
For /v2/check-invoice
and /v2/check-invoice-status
Parameter | In | Type | Required | Description |
---|---|---|---|---|
invoice | body | [string] | true | invoice id |
IPN Response Example & Explanation
IPN is sent in case notification
parameter is provided. Main IPN purpose is to send notifications to e-commerce software.
You could check guide section Integrate ForgingBlock Payment Gateway to your own applications and backend to get example how to handle IPN.
Also, take a look on IPN Code Sample Repo
"id":"QqZDsqZZNAKqNau23yX9n1","url":"https://api.forgingblock.io/i/QqZDsqZZNAKqNau23yX9n1/BTC","posData":null,"status":"paid","btcPrice":"0.00000213","btcPaid":"0.00000213","btcDue":"0"}
Invoices History
Provide full=yes
to /v2/invoices
in order to receive invoices in all statuses
curl 'https://api.forgingblock.io/v2/invoices' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&full=yes'
curl 'https://api.forgingblock.io/get-store-all-invoices' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
// Get history with all confirmed invoices for a store
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/invoices',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// All created invoices IDs
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/get-store-all-invoices',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
/* Get history with all confirmed invoices for a store */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/invoices');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* All created invoices IDs */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/get-store-all-invoices');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
// Get history with all confirmed invoices for a store
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/invoices"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// All created invoices IDs
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/get-store-all-invoices"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response examples:
[
{
"InvoiceCurrency": "USD",
"InvoicePrice": 0.1,
"CustomerEmail": "test@fastmail.mx",
"OrderId": null,
"InvoiceId": "CQhV4YH4qY82ZrP8tnLQv6",
"InvoiceCreatedDate": "2024-01-19T14:25:18.000Z",
"InvoiceStatus": "confirmed",
"CryptoCode": "BTC",
"Paid": "0.00100000",
"CryptoToken": null,
"InvoiceUrl": "https://api-demo.forgingblock.io/i/CQhV4YH4qY82ZrP8tnLQv6/BTC",
"Tx": "https://blockstream.info/testnet/address/n1fCYt96dy4VpQHhU1wuEZj823RekmD5ne",
"TxDetails": "https://api.blockcypher.com/v1/btc/test3/addrs/n1fCYt96dy4VpQHhU1wuEZj823RekmD5ne?after=2574285&before=2574287",
"PaidCrypto": "0.00100000 BTC",
"ProductName": "1",
"ExtendedStatus": "overpayment",
"FeeCrypto": "0.00000500",
"FeeFiat": "0.212930"
},
{
"InvoiceCurrency": "USD",
"InvoicePrice": 0.1,
"CustomerEmail": "test@fastmail.mx",
"OrderId": null,
"InvoiceId": "USccwhH66Kyf5J8LX6shex",
"InvoiceCreatedDate": "2024-01-19T15:04:52.000Z",
"InvoiceStatus": "confirmed",
"CryptoCode": "ETH",
"Paid": "0.01000000",
"CryptoToken": null,
"InvoiceUrl": "https://api-demo.forgingblock.io/i/USccwhH66Kyf5J8LX6shex/ETH",
"Tx": "https://goerli.etherscan.io/tx/0xabdc65d175dd25995244903c19ae0c65c99c71eb901e23947457102852219764",
"TxDetails": "https://api-goerli.etherscan.io/api?module=account&action=txlist&address=0xa21746298f5F9c5A5463e85C19A2d11c491f646b&startblock=10400121&page=1&endblock=10400124&sort=desc&apikey=YourApiKeyToken",
"PaidCrypto": "0.01000000 ETH",
"ProductName": "1",
"ExtendedStatus": "overpayment",
"FeeCrypto": "0.00003150",
"FeeFiat": "0.079560"
}
]
{
"invoices": [
[
"9M9ms2gvH5smNfy1FpH1y9"
],
[
"jYEFepK1bEKm48bD3nCKw"
],
[
"Pt4ZBXu4jZXBhFZLUPQZQS"
],
[
"MN6K6iFBSk7pmKhztMXHSE"
],
[
"BK62FMxvrLpLRQkgecujwX"
],
[
"8y1DQyrTPzmdBogaRVrUAD"
],
[
"BgKNK8773jrEus24sRzam4"
],
[
"7NPSRvEcWHBoUkf7shNZR3"
],
[
"AR5KPpkQWqxWuaGXZxAxML"
],
[
"4SXztEZSiAJtLPraCgLnrt"
],
[
"159QBS8rcFvSpGGbihu5kK"
],
[
"YXLwnRPadcXw5nyPXVwtkq"
],
[
"5hhCzu8tnvcCian16hQD5J"
],
[
"JeA3emWzfLs1xRz5VYFWZp"
],
[
"RV5x7n2TRWDjmWZniK5Sn1"
],
[
"Fg9MejcouPbd1tRMYG6Vqp"
],
[
"GPCBaH8ViPnjUUxdtXZkLC"
],
[
"3DhyYE5SRUo4YMAb1qEbsb"
],
[
"WLnLqhTBDkzpAn54GxQ6eN"
],
[
"9L1LVLwZyWcuhmXu4UQi6e"
],
[
"7oBqCMTcxmnSFMuRvTC935"
],
[
"M5qJuxV8uwyUcn6axayJLB"
],
[
"4oxUh6bapVynnPwt6d8wf5"
],
[
"BoLWLhksGrd7tVLPoEnrw6"
],
[
"PdqJewd1jrpnHzS6WhjPUZ"
],
[
"RxX5kXxhuw5rYdk4PmeE99"
],
[
"UEjW9Wywg5q5cRWht6g4A8"
],
[
"SaGUh65RCoeAmgNnqbxoFB"
],
[
"DPYQeT51Grd2vvzyScEKaq"
],
[
"RUyQ1cMYW8xg9C4AYH2ayd"
],
[
"67VDnoDfiSXCasswCkrxUq"
],
[
"Ev1oDZveVHp46MYb1kjML5"
],
[
"Si6eDtMPBEmZyHafzypDP4"
],
[
"Dsqk97PDziRK6qPoujBekv"
],
[
"8XqcysVHetKjFMAvERbfDk"
],
[
"HxyY8vQSr2hpHnJ3bVKTKr"
],
[
"LV6TeWVdLgVrb2wPLKhUz8"
],
[
"3NRobzt2xLCTAWX1fAggvA"
],
[
"7r4G9MW6M5Je4wxrGFwfpJ"
],
[
"BH9SJosnbovsneKx26ym5h"
],
[
"W6JmefTr3TPMydaa7ot34g"
],
[
"3dnfrzjSJJ9mDQjyScNFHs"
],
[
"E6x4CUWHqhMpztj4zpqQmD"
],
[
"DKrtTd2ySD83s49Pd7a5q8"
],
[
"Xb2A1L9bDqmpV5iiV3J67m"
],
[
"8TBAC7fAVennLDZbGbNGC4"
],
[
"FSN8SdgtkajRhNjmPL2sH7"
],
[
"9gB7B5SdyCwkRjKHc4eKiG"
],
[
"VmQ6DC1VNmNrkzZjhNaRBC"
],
[
"Ug5VC4EPyG5kVAeqZrPCMk"
],
[
"QZu1b7NhZJUz5JAA3nmPYj"
],
[
"S5oQJ9bhsxF9WWqU4ZzHB2"
],
[
"N5d8j8WY9ynrPRrvAFKUyJ"
],
[
"JevXhhs1LNqg3GMoSq1FbJ"
],
[
"2YKVFDJsHSh5r3qKP7oisc"
],
[
"2xBe1ugma98yfqkrKga83Z"
],
[
"4bJjRGCXcC97ojwcQv3xXu"
],
[
"DR338cQLG8uY155o212EJa"
],
[
"SPQ7y4u6Pap2ftNbMYp3mx"
],
[
"J2SjNSTTFEqsZwiYzhPd48"
],
[
"B6RcR333FdLRF7C2YrCqW7"
],
[
"Cxvu2eWgQ1Y5mz2RzQye6v"
],
[
"EWGKVGB7py4Ao8v9myDZyM"
],
[
"hmuKLDHJGDTFSSenAxv2K"
],
[
"6L39fn1vqA3GRvNUtXBbcy"
],
[
"6eGFkMFUAdKTUi8upKAuDm"
],
[
"DDFTN7JGDLtroq2kofHwxZ"
],
[
"7LdFgajnVqQwMzwR6PbvsK"
],
[
"Xcw5Ru4bfEyUbwNqu96tq3"
],
[
"DUuTo7EfM2ybkedhxnQniT"
],
[
"RHCPqdTU1EQbpGS6M5FLdm"
],
[
"EVu3eMZXTn52m6odM7WYz5"
],
[
"EwQCzx36zQtajZBfLJM9Zc"
],
[
"Q92DRGA77Tie1PZUYBx5sA"
],
[
"M3RxJwXCPB8L8hyGogkxYS"
],
[
"4bFQ74stHxWRyJm3nWok27"
],
[
"VGqC6y5kvMA13zHqwKUTyu"
],
[
"6jvkcroYUeZnZARTaawjUR"
],
[
"9YHgQdSuEWAsi6tyQNj4Qk"
],
[
"LaV6KAryWHFfHwTaH4XRzn"
],
[
"XSZioncb5GaQGWLKYmTePq"
],
[
"URQEzsLuu5qYMftYXAh8x4"
],
[
"HZw921EpGB2GPYRUvuu7Hh"
],
[
"UJTsDBHd5X4ENnPVMmdKYW"
],
[
"5XbpmF282UQuPPA867yugG"
],
[
"Ebv8mc7svnYty9D6V3MNN4"
],
[
"Lk2kv7MRqfuyioXP6WvuHh"
],
[
"VMyAwYzZpJJwdmWv8aKQKY"
],
[
"9jtCquQTePHxttVv11LNMr"
],
[
"XPp8z52CPcsZuP9vp2PW4h"
],
[
"R4XguNTxGGJT1MjM1gWF1Z"
],
[
"H13ZNg1o2qtStqx8uoo8c3"
],
[
"GcXHJ5dmD4rXE84dN1sedQ"
],
[
"G3BAZ2eCgzBv7WBcSFrYFo"
],
[
"H1VvMMSA5mwJj7dY4TWPnY"
],
[
"Gb8GSsvSUywtbRvVMEZjbp"
],
[
"NweX5jpkMckN72w35jssHD"
],
[
"8bWqwBRPJaZbsGqem8oiRW"
],
[
"LgUhor2bBqbueG7HqFov5m"
],
[
"6LH6xMH694mYRc5JknwgaD"
],
[
"NQhKd9gZJyniwkfq3ZJvp2"
],
[
"ChVBC7J356nfCKDqu2GjwZ"
],
[
"QAaZHGi27McYogdKRhYtnW"
],
[
"BcLwuxiy9kfMzDuSUHrEz3"
],
[
"7qSSeUVA9YYXyhXN1YsW1z"
],
[
"BcYVZ4qKj6VAwddUore98u"
],
[
"VoAofuthZ99UV56SMogZgQ"
],
[
"EE77nKve5EQvrXqMvkyZpz"
],
[
"68N9iRsBsudn5rJvJNmnja"
],
[
"B7NVmw7h3RpZkkSV4CJbP4"
],
[
"LVwUBYMZ52xmVp5afuPPfN"
],
[
"U1MFUQw7HQu3jswAngEUd3"
],
[
"2Gmsx9RN7NoJHuX6CYLcnC"
],
[
"UUa5YrHbRwW1TCjrVvTyAT"
],
[
"WKtS1TCvdqVQbicziSAWyK"
],
[
"Pza38p13R1RzGeyge6TNsx"
],
[
"HtGUdKv9LTQDX75Sg3EPvv"
],
[
"EyGvtFTwM7bxSWnqogvxtY"
],
[
"TKfyi1V26K53RBR3UYWBtd"
],
[
"BDDx8hbCSF9y5tRqHVEoSy"
],
[
"CRQBBFkPW3CGf8yV1HnWV7"
],
[
"LVpT79HDQTbQRv2VasDnx9"
],
[
"BR96FordrmhVNAG5J5BCoT"
],
[
"ELy3aUQX64KGBhBBFK8dxe"
],
[
"BBntw8EvEkypCN57APxpY6"
],
[
"6wNPQdX8adpyWfbdKqDbr5"
],
[
"EoWpZVJm97SniZovcneQA6"
],
[
"BzCnoPsGepmutTLVZatpkz"
],
[
"6zsKzNatCpHzZUuifkaWwA"
],
[
"2cqY7gbRYqG43CHCb3gi5L"
],
[
"s4n3fyNHRLAr7JBU3NpXQ"
],
[
"YwCwooJdXLg5bysNVwmH1"
],
[
"Ubk1An7L7YSb2ngJKyudXo"
],
[
"PvXSV1LFGQejvvRVXcQfXS"
],
[
"CKRqU2ymMVUqG36oundgcx"
],
[
"AFjXFuJd16nk2VcJKEPitS"
],
[
"EjUkwoePmwjsJHTriHJt7n"
],
[
"FwFdAvkUZj4tYxw6EVFvDo"
],
[
"WQwCnUoYiySQRc2LLmACS9"
],
[
"7jAhayhA9YuggH4FXKRWD6"
],
[
"Wz2NujkmEFQiMcYxApCYbk"
],
[
"NkFH1kgfqvX3tZPURxKdtU"
],
[
"NtmLRMUcfT8gyfTSDv2r5y"
],
[
"2Cj1jTXz655LepdM8k4ynK"
],
[
"D4jvo9poy9ebKqc8sHzJym"
],
[
"Y9Hh65SXMRheX3WobjKZYv"
],
[
"JVTVYtLYkLYZF2bKE33z1A"
],
[
"BHKsBdqZwr8TZrDAdGEnoZ"
],
[
"M9qa2pewUhWthCHKSGJVZp"
],
[
"5mEHUXCHiwAi7nbNDRpjW3"
],
[
"NAYt1cLWbRrSaHFCVMpBhs"
],
[
"PaYYL2UmBPfCWH4m73sjvY"
],
[
"LG3MfuDh3RMKiYCWTviQu7"
],
[
"6NM4sh3d2JcudYZzpSQm4G"
],
[
"V2oFX5QTguwXoUfWSbQCV6"
],
[
"DMSr4xnXpmFbDAp22sboj1"
],
[
"2HYv8qq1LLgJpdBQswgXyE"
],
[
"HNgpVxJYByBeMCBFgd6uEu"
],
[
"2qUphmCuG5a8htJhsMfRXB"
],
[
"QCeze9EPYY5yHeFtdLrzNq"
],
[
"7EgH9toi4JPoNAUwHGEi6Y"
],
[
"VvrF3YjmYqfCtUUVjF4f2L"
],
[
"JKmsH8AnD7y1mS1NzZb9LR"
],
[
"QEUt7uUwDxPvV7LZZap8tE"
],
[
"158GkDp6FLiZz7YEngxkBr"
],
[
"68DbHoff3yELtfGCqDpYHJ"
],
[
"CtS5h5ELBescykQ9oayXAP"
],
[
"R8GQabYWHYu3kYS239XqCk"
],
[
"Wzi3sRDYaQqWvqFSBse7Uo"
],
[
"BRA4vH1cAz8jn6VGVNc17F"
],
[
"Gkc2yfXBhJjATr5fLZ87ye"
],
[
"VCtNfeNpzFxj9US9CWepoP"
],
[
"7cZNAENL9fDwytuETf1HhC"
],
[
"Kf14jCgQiwymD7HQwG9kNs"
],
[
"2vnBv67vJjaksbfR6jv7nJ"
],
[
"9r1w7cJ3X4RBzVt6ALnvxu"
],
[
"W8qmTGEozLXpRw3Mw87zTZ"
],
[
"GaTSsZJ1KotmK6VvScpUpi"
],
[
"JNc7ErJrduCHGWwbz32U31"
],
[
"QbPdKsUVKeDacNVSh3AdVs"
],
[
"LeJ4mUwQbsM5YNhQn75vRt"
],
[
"4UPfHgEBeYDHk45o52hZsP"
],
[
"PHEbkv1wZtagKA2TKVC73b"
],
[
"J9D7u1ZzJQtyp9sVXkbZ9R"
],
[
"GWaPBFiTGik4Cbp3AVCH9B"
],
[
"2rmJkoU7BUVTKTSKSw6BXo"
],
[
"5eAN1y82w6o8f9DZk4Rfj1"
],
[
"H4hdd99pv3kSXgpSysxZUi"
],
[
"4hjYtXbq2p5g1v2fCqNEPR"
],
[
"7TL3QWG2w6HY6mYEGsv1ox"
],
[
"55EhAtQyt8tpz1Rty4vt16"
],
[
"QJSZg45siufesTaM7S2AoW"
],
[
"3FxGqq9M3b29MrK9YfgmPf"
],
[
"Df2w4Vs4cMcJCQnocMcEAt"
],
[
"8Q4ug3rfDCgba8Voyu6ShB"
],
[
"ErKhmd3TnKQEerSf4VKx1K"
],
[
"SECwHp3k7kUoHXHKPRLewV"
],
[
"4bcb6bWe55oV5Hg794pf79"
],
[
"7LoxwFoxwWYMzmT5hicQLA"
],
[
"CgNp3JA2Jg144AHDYEF5pC"
],
[
"MGvktKtSGnafEVp8gW6Xf5"
],
[
"2qkJGBHQzJh7tfDhPhFgE8"
],
[
"S8XbCse9jiucuJaW2Hz5uN"
],
[
"G4smtnv2Fqt6ZQUj8bMfHp"
],
[
"Wxb5UxR6KR5zbAgFcioJqk"
],
[
"CfGPsvHe7E1cEedRCKaJ8D"
],
[
"4Y2GTmqZJiiDF6dH3F3ofB"
],
[
"8RsxF5xkYYXpNoCVeHUXsd"
],
[
"TPBDDMjf1eRbVAkNaEnqnC"
],
[
"7Dp6woMeAaTRvfFRkXRS7X"
],
[
"SjQxxdQPmzr1qQCbzEMq6g"
],
[
"5G6a2dePHjypqBc748YPaP"
],
[
"VCBbe4J6yxXoyuxKnNKKmQ"
],
[
"M8Jf7mF9FkwiemwUaoZauQ"
],
[
"NcVnVdE8fyb35rtFo1qoh7"
],
[
"BWJR4kKVPZUeyCHHiqjLJq"
],
[
"Ff8567Vse9XJwqAq6v956y"
],
[
"8StXdBkePEcxpgpUVN7qEn"
],
[
"Bp47b7Ar5d4HZkUxKqh1ef"
],
[
"usGc9eSYadLBiE2zyBkyK"
],
[
"TED4syVQEVySbX5pxfuuLv"
],
[
"J4YoFhuBB3NkFo2Bt83J4o"
],
[
"7VSKSdgYoS85ELrX5892p2"
],
[
"A7wwTcjnDWYWHdAvXZyzVr"
],
[
"HUjZuSeXAQEjukvWWk4duv"
],
[
"GStzWgZYKuCet84agtf39b"
],
[
"3maL5YFSLzaA3XFkMCffDx"
],
[
"8hqyXtmY7CZdeywiUmhdRR"
],
[
"XYpuWvHmdU9TbRZu2tuBNm"
],
[
"N3zkoDYmaJN7PRLjxeQHNY"
],
[
"DEvyR4Y4HwtbHHHWp1LoUR"
],
[
"J9nBCHkXtgrxgcKb2iSnzz"
],
[
"E9zcfMWmMsiGPCGijvUFcQ"
],
[
"7YyYCc5X89WFnai5BRrZ1k"
],
[
"QYbdtr6PvGgyzpxB67csxW"
],
[
"HGWefzppEpt3AgbZ8PfvjS"
],
[
"7PJuhn6eMPVmtp7uNeCHkc"
],
[
"Xd8Ap8ANFK1zGvgfCNbVP6"
],
[
"Y52Ko1TPeQt7ByHrtCS3q2"
],
[
"WGkGPPDbmvdkVZ7wLrzRrv"
],
[
"UEkFLqxAYVswmgswakzkF2"
],
[
"FnUURjzrZcTKJg881QFprN"
],
[
"AKoHAF2aXjFP2hGJTRX4a5"
],
[
"LMXeULSWpURxJh6tsn2wFd"
],
[
"7THH1LxTSAdPgYpBRjrjUa"
],
[
"HbfweRgcdseDbeN8tyqFtb"
],
[
"9mp9oHnRkrc4d7B224RTMQ"
],
[
"WM7HMTmkD2McLraNkfhrdk"
],
[
"GfUrimk1JpGsNc6waaHUzm"
],
[
"E9ZdPTcCDJcMT4zqBBYApz"
],
[
"KhvGwVSZHnbmxpomf5KhDp"
],
[
"63JhmqxDp6TqM65joTBvKh"
],
[
"7rX9F5s3erKb2ybxGKDTgM"
],
[
"CM2nemxY9LGskH77fdjxox"
],
[
"VNubVeA96EbMTgXkGR7Ffu"
],
[
"6TqA68BoazQugp2xRxECdz"
],
[
"BZXpkQm588tuQbftUMLEYY"
],
[
"C1quVngGB1QbbWBdBwsdQV"
],
[
"JisYriYRuBou3t31tEaJf1"
],
[
"MP15STpkXWUD4FvBLdn1wi"
],
[
"H25wZGMj34WiVR2FJ32AfY"
],
[
"BTiY6W8zzx9iNdFdzbFiDt"
],
[
"CfKdHQGuagqhWi6ec11XAJ"
],
[
"E9NTBNZ5B7oXUk6GLgpL2Z"
],
[
"UkkGh6YA7HUbeHQdEqUm3w"
],
[
"76zf4RXUJLXWZMqdGwkwf4"
],
[
"B7Hb5zpyCX6N9GfWyBEnaV"
],
[
"HkdQDQb7sACsWcazKxa6hJ"
],
[
"2CGRKKs2Vg5WEqCCKsNGTY"
],
[
"Xi9TzjSMkWKDHKLn3fa3G"
],
[
"MYthbNmC4e6P5KNjJMSECG"
],
[
"BodPQxsiWsVDsZ8jdqNkmz"
],
[
"KzY8b75grQjuQSuYwNrZ5U"
],
[
"NBN7rtrLQBMPQnsf2RSAC"
],
[
"8yffsXsXfnQX6MRD4HzmWN"
],
[
"RjTF1U1twQyoLo6wt4ow5"
],
[
"YBRyyHfAQXxYNaVe3XgT3y"
],
[
"BJ52pZBkxjVk1AJBLhBQ21"
],
[
"K4HhQpzmeKZaLMaZ4KRbDu"
],
[
"B2SSaTRRwEnygxzZLtnieb"
],
[
"NNgosNEv1QGZqwyPaj9eFs"
],
[
"FbRLYuizV8BsGKhRH4hy22"
],
[
"HMFnxwiCAeZG2FCdZNjdqT"
],
[
"Rhmz8HrXxYX2C1oZCGNj7M"
],
[
"Jt4Mv91ZbkPWMAQ1Z6nwVh"
],
[
"MbWYCcj8teurEric48Vy97"
],
[
"KP1hYb75EyAiGux6TJPqwn"
],
[
"M3SSTuaEEymuTXSD8p1AQU"
],
[
"5yR1xxZLTbjooECd2Udpyo"
],
[
"STCmzqrv9SNGL9ujs8Edxt"
],
[
"NLvyc5jF44wu1cpc4ttUzp"
],
[
"CxCx3dQd6RuUvuVYcejGKd"
],
[
"PTPD5reJ4kugzJ5RF3rsfk"
],
[
"NFcAfiQBe4WDChZ2NaM3mU"
],
[
"QY4LeyzV3dGg8QskjKTLDz"
],
[
"88AjdLsLzNhMUd5sNFPwR9"
],
[
"PhJx7CnfK4x6c373FPviYo"
],
[
"6obxZELbiFYUiRGC31r2on"
],
[
"AVGFMAtXei6oi8GdDPTTXc"
],
[
"8TWA4r5wF6EYYR1b2nt4yD"
],
[
"JndfDZAPDDXbNFvmCGeaFF"
],
[
"8mURvsGpA5x5fs8pawKhMF"
],
[
"PektphdxQ7KrvctXvoTNqr"
],
[
"ShFqvUqW6boLKsdDXNzcxH"
],
[
"mcyuWm9eRoxjSkpTZScNK"
],
[
"2Xbt5b9VwXBZYYMB6eF7Do"
],
[
"JM1P4DfeUgNKYcJJZxMmHK"
],
[
"WAQfpJZeHyddiW4yJ7ZZQ3"
],
[
"VeA8KpcUjHUj64TggPna14"
],
[
"GPqp7NN4CGjHCQu4puq3Jr"
],
[
"2pWeXskdkbUh4msn1t5WfQ"
],
[
"7R3FQjuf3FNuc7y5vRF6fd"
],
[
"Thsz4RjY16xndJWGPsm1C9"
],
[
"BKmr5ZzVaGwem2Gbqygt2y"
],
[
"3PxKGfEw3szaeMt8nYB97D"
],
[
"ca6SjgwDCb8CsfLvGq9Q3"
],
[
"T79ceDxjWjXm3fR56wQcYx"
],
[
"X6E635mdN1trqvpVLrY9L2"
],
[
"69TLUiiSeeznEgGp5f9sKg"
],
[
"AtpLcp1sP54p6BZrsUhVV6"
],
[
"LwbH2p7rj3ciwsbKtL9yA3"
],
[
"PtVVggzyN7HKuwGDsDSQzC"
],
[
"79emcLcAHwX6SddQ7m76BU"
],
[
"B9Tz9oG2iHFURsoJUV1yJf"
],
[
"YQUAn86BQATe1UJ9VtsopM"
],
[
"PH6ohykse1CrNrNQMqqQK8"
],
[
"2N1z8HR2YwdT9awyUphTr2"
],
[
"HooFRXbX7oVa2KbJ33HioK"
],
[
"Pa7yePPrkN6MmDruN79Zp9"
],
[
"C2V7gTcJPDeg1p9xwbBpRd"
],
[
"VQ5SBQ1Btb2wSVZFVNujoo"
],
[
"DA6zUe6SJ5xcYWw8zsv2fz"
],
[
"J9FHkRPRK1uJmirefAseFt"
],
[
"RZrf4x6Kpept6tXU8VWj5D"
],
[
"8rM8x8Nv5oxRn2qcNW9GSo"
],
[
"8zsFj3uq293sABtqoCZuYq"
],
[
"8Qcy3mTQGPSuVA6umQoVma"
],
[
"5NXPFa8wQ83qp5uwNr7qst"
],
[
"QoepeNrr16onXLoD9bUZdR"
],
[
"8c4Y7wjRJxjF4jMqqWignH"
],
[
"Mrdy2uCDYp7hGvGA8N6QLC"
],
[
"38UMA51JJcRXFnoH4zRCVf"
],
[
"HpFYQMki7iKEphxMgu9hXV"
],
[
"2BAZEfrJfmqFbf9kHqTDz7"
],
[
"Q8b3WFg44dBuPNmj2p9Kvy"
],
[
"Airm9Xeueuy5sd5wAckGE2"
],
[
"HbHWXLmeeMihYQ2gqAnQLr"
],
[
"Wv6CKA46HX3kZrMuKVVbbd"
],
[
"TPg99mArKyTSVeRHd917DW"
],
[
"SgLMXPbHhSaWgcjKpf1PfT"
],
[
"HSKUxPUFy6nc81yt3foYGV"
],
[
"XzZd7DdJAosdtR3Qvf3jnr"
],
[
"LVPd3RT8FaRxmE3tC3Nme1"
],
[
"CxQSRu98rCJmRKcHw4HNUj"
],
[
"SGS4L1jPQTycY7edLYRsbb"
],
[
"C7zYYUmopKRVMWWXv2VDHe"
],
[
"MJbDsajysuF6ziEt68WF9i"
],
[
"3HJCQ1moGVwYfhsE9Ax4By"
],
[
"NBofCeYQi7Gqy6LysZ5Y22"
],
[
"KhXZhFigvb2YPS7an8fcaq"
],
[
"BBmXunwyC7shsULUyFxFjn"
],
[
"Tkh35QcDyUyDPLfowwYCFb"
],
[
"j5Mn1vhj3rugccfzvNyos"
],
[
"Nvz2PerNdvQu4RUdFSnGke"
],
[
"Ah8q3aFEDAjaUp3ZfVFZ5d"
],
[
"FpemVERgmugRprtbAWQDgP"
],
[
"TyLSUK31AnN9JhPbCs7d2K"
],
[
"DBMH9kqgzCaEFnKgBZHFUa"
],
[
"XJffjrLFfBecaVmy6VS5xU"
],
[
"W1U1YxFra2pEewwyZsUqHn"
],
[
"RNpDsFHvFyBddGXUkSY5Fz"
],
[
"BctSBJ5E53Y8NfzCBdKoRo"
],
[
"HD5eAcgATqJJsRJg8yeXwb"
],
[
"Hi45PAsYY7T5ssJgwnfsFW"
],
[
"CUfGDX9FYgySAQsNzXqs1x"
],
[
"CrZsMj6U1fV4XJMri2Eftq"
],
[
"7GFEBd26PpwLPrqxXodAfC"
],
[
"HQ54hUfDSpvo5ew6jqLkis"
],
[
"LLiWi1rr3itKeRFhUMP5bD"
],
[
"CcVAccofQX7FCNPByDjEo9"
],
[
"HCqV6FhqmSK1iuJ3rKcQZt"
],
[
"4ZST98r2h9KWp4PNnWZiUk"
],
[
"NBevneTb29tvXnStTrntYY"
],
[
"VCtjejpgqWKd1tBiPfGawR"
],
[
"4pLGDUGzbJ1QEKwA4AFbA2"
],
[
"BgYmm3ztjexb6BkJNXHK3o"
],
[
"G8Q5DrhiQFuVALkJCoUhFn"
],
[
"6ZbA36JSP5vNgrTChPvjCb"
],
[
"9Dkv2DyF8L8RFm28T4MA7j"
],
[
"KK83sBycVSeSUZMqFPa5go"
],
[
"S2F6DP1QRv23BFTKy5oQYK"
],
[
"RQfQjUyVfBn1VycbX7XhNw"
],
[
"LL1Uf2EcYRiLYNfPFci9Zu"
],
[
"2XFEKKgZSt6aVBCzC6ooWc"
],
[
"Kse5LfHqSkLTSaUC74obsD"
],
[
"WziGVZJg7LuuxPhZeWtiFs"
],
[
"PbzdYHnSSRf73Tn8QbB5kr"
],
[
"CqzbzJsykApFuNxH91bRiR"
],
[
"T9gtcnYMSNiJ5pYoUKVB2v"
],
[
"8m9j2ZrYtNGbiduUR1xbBJ"
],
[
"WpR4tRftiLxZDKBSdCJ5i"
],
[
"7PscyqeYDKEE7yttwgemBn"
],
[
"HExT1WzNjyZcwRsqC7g6Sv"
],
[
"6aKYyNnqxD7CoEdGaCH6DS"
],
[
"PkmFGuviqUgERm2ww7UWaq"
],
[
"NMTKKxVy3kvyAjAg11Be6d"
],
[
"LANejSAyTLTfYdngvS7JH7"
],
[
"6q7YM3QsoCAnvJVWTsRV7i"
],
[
"BX8goV6GbxcyYqGVaomsi6"
],
[
"M8omN2anRWEvGe7P9vrbCf"
],
[
"2qftWJ2VUWPXJM9LmqcYSx"
],
[
"VfHEdaE5FcLDAEX9ynY8wa"
],
[
"2MxD27BPQdMM1SESwtWq4L"
],
[
"9ypjabCESYC5Vh3dLWtu9F"
],
[
"J6S7WpeQFieLkr9e7DQqXX"
],
[
"J8iNvzcxQgVym6gnGbARr4"
],
[
"FPUhrbuAG9JnVqug39UcnX"
],
[
"5mQ7YHvfKsCZE4WoCS5ZbF"
],
[
"FLJeUqTfctmEKcZE1cn8bB"
],
[
"TBpf4eHQwFzuxz11UH7xSf"
],
[
"KLnRU1miVKD9RBPASDWQfp"
],
[
"9Yiq3pwVMgJ5KjfT3cpbqf"
],
[
"T62CW6fNq3uteGG49Gzh5D"
],
[
"6C5mV1RyEN7nNhHPpSVqGE"
],
[
"XEc7cKvQWUUQ7wnysbjCua"
],
[
"N54wu2WsA1fUfcNzAbAaYy"
],
[
"LzYJuGgM8pB2RwmNpBpef4"
],
[
"QGeUDL9TVWC5B4bkMiRg82"
],
[
"NvkesyfSJvaYWDQ7Dpmn7b"
],
[
"2eNRCAcqCY12EamjP4vZBd"
],
[
"BM188TviN4fjspZqPsZtxs"
],
[
"MedpXjFBGuCDLobA3N6HaZ"
],
[
"Rib8aaFo8NN5LRL3FPZgAa"
],
[
"J51ywWcqVCUqEwaqpNR8gX"
],
[
"B9afnCNLU5CRs8G1sGAPtS"
],
[
"9tm8cwatukGwg7HX1zwZNq"
],
[
"QLj8VA74MAEU5GcY9Pdb8J"
],
[
"rVasLjAqrEucKgHoWJDt7"
],
[
"GUk8HE31g1NrimtcYB2FD6"
],
[
"J86msvrbSGDg9Ak7YAbD6M"
],
[
"EAv9LbzHV5Zq89Z1fD2YdM"
],
[
"EQAUzcyakDNrLdQFZPhq71"
],
[
"UYw3f322mPtppbB7yV1s1"
],
[
"EtaqBL76raHFVzSyzCAVvQ"
],
[
"VgAWmHJgrkkvuV8EtmNdGX"
],
[
"XxhVG6SRudGxkwNMBJGozn"
],
[
"9EjPCF3V8LDdeaFdnUCCwV"
],
[
"LJ5sQDTESHvnyczc6Qm9kR"
],
[
"HK7sYWaGJyywuFC7UreSBU"
],
[
"XvqBWzgmgYsVn1riJokE1y"
],
[
"E6dLup8uwuogDyTS4qKpW9"
],
[
"A2smJQSBHHfmQchCXu9Ruc"
],
[
"1eYAFk5jEVje3SYVHz5Zk"
],
[
"DTj7WewKe8tgZKkiiCzYkq"
],
[
"GBBf1cARBVHNduntDkUyJm"
],
[
"LaAqCmTVBr9qigwgYEdMYT"
],
[
"6vGx9MLsq8car3TJqFtVDo"
],
[
"QhYhWKDgqB2BvVEubag9oQ"
],
[
"16yYQyKDQoFwvhdZjiWGZv"
],
[
"Bc8XJmg8xzKHfcpVxz9qi"
],
[
"Gk7HMV7KNCk8wkJU7RfxSu"
],
[
"3maqebTYubRMbST6i9JQPh"
],
[
"Swxs4e3zGrY4Qqyucz4Yst"
],
[
"YahxG8NM6sW3G1vfrPMyVU"
],
[
"D6Lgt915QYGdtagEXcYZ5H"
],
[
"85AUyR5gT7ji7GUsbRv5XB"
],
[
"N59eQuM5wd93f6CKCYPbvH"
],
[
"GWYQhHHmKCVa3HYu6uAkJV"
],
[
"B2q2NZgCJtcK2davQQEHKm"
],
[
"TrY2SrvrZxKs15q8hJW7ue"
],
[
"PSppenVTi7USjEvEDNXdGN"
],
[
"FVXT81vb8x86dmWaRM6Jhs"
],
[
"Uh81PMJEwSvYj3pDEaF4bz"
],
[
"R1yECGhmKZ6zXKQrqbQvjv"
],
[
"QRjFHQvRg1UQ4xoEcoRQzk"
],
[
"LBfyosssRAqm3cXZ7qm1s6"
],
[
"VqZjVhy5ynuLmJXyT4YoWA"
],
[
"FMkw6nU1WDHtnNENeSshzF"
],
[
"ju8H1qTQLjhCtVARLdYqn"
],
[
"NvFCqi9KchfUsPAq3K8CFE"
],
[
"WR1SrWepLsSeCRVtjVauSu"
],
[
"TnETm8QCLGppUCn2HoFnut"
],
[
"MkAS2oViVntRE97oErUzui"
],
[
"VePkoMDmugiP6tU9wh4L6C"
],
[
"2EPvftBsAMJdb9VX1eSFpZ"
],
[
"WRpYfssAEqL1QVDJKWS92w"
],
[
"FuKr9qtrvf6rjGxZ6VpuAP"
],
[
"BLoqMTWx3xcXUKXKrCSmvu"
],
[
"Lm5ycBjuyfkz93sVGWokY8"
],
[
"RvwGweeB414LDoo1eNiY3G"
],
[
"HUEaRxMLbAU97yHuASxS4a"
],
[
"g8RigAQqDaY8vGEdx1xPq"
],
[
"DZzGpiRWqrLfvYZKV8vN6v"
],
[
"U7NftkhXANWzqZ1qhb5smE"
],
[
"DTBbcjRuH2eT2oP1pPCbsZ"
],
[
"B7zheJmQNTceASz5Ty1yGc"
],
[
"6qPDCi2EpNbg76y4M61tKj"
],
[
"FTbEZm6Ejj3QkyddnQxfSs"
],
[
"FnEvWxPCWhaboxdj21TMjP"
],
[
"M9vLUSRUkNhQbc7ut61An9"
],
[
"7vezXtgWvNAGpErdtYXbbt"
],
[
"5acJeHntpwm6qKzbqb2HKj"
],
[
"KbKibrJXsrts9zs1rVcv6z"
],
[
"HpCbjguausFhUayJv1PeZF"
],
[
"NKKKFqxUqtM1523pJGzD4y"
],
[
"A284cR6QJBCH99APSzZsKG"
],
[
"DBpxbcVG4aa6ChNwLoAX9M"
],
[
"32gVSLnqdQyKoK7TyhrAAi"
],
[
"6F77gkxFXZy5nQNxStYkfK"
],
[
"DXhnEvxGBdtFANJcbYJZJj"
],
[
"Hb5m45RfC15DsKrP5veqws"
],
[
"G3fZmaJWEX3kyTuPuR7f6j"
],
[
"R8sKvAvTiXWQkw5K3L8sa6"
],
[
"XHdrBbA86kUswxNeu6qT1P"
],
[
"MaDz8isPa4U8GArn52M5Ko"
],
[
"BETFtJF1hQobG6TVDvBem3"
],
[
"FVP9FCZ5ayhBgBBGNRQuiN"
],
[
"Ur6uoL2XoExUchGq1YTxJv"
],
[
"DCc5e9yhwJrvWnM3UyHbdR"
],
[
"TfGmKYsnVm4D6tH4TE711L"
],
[
"BbxtvqVkRvshFsj1r6Q8uY"
],
[
"Xu2b46iPomovBBjTsTj9UP"
],
[
"NUX7uWdJLggnJrkwGXF3kJ"
],
[
"3sv8ogjLtjLP3bAe4vSbPe"
],
[
"YMkNw1nz8A3a6GTzV2tZPJ"
],
[
"9uVFSn7edXjcsNRygbJDk2"
],
[
"9L7MRvAkmzwXdvftnhKZ98"
],
[
"RcAWne69vaW9jXqsFRZTQF"
],
[
"8dkDTiwcZGaJSYCBcYsPRy"
],
[
"sAerYFdrx9QNM9JMWESJb"
],
[
"3tkXztmNFM4WWfr5TbsW9q"
],
[
"CHwQJqmE4wimc11zT6gydC"
],
[
"CoqEErs5vC2NYSBTqdfKDw"
],
[
"Wh2pJC2XDUU5fsCkYR7DVs"
],
[
"4NYucYPZdjrWAPUtEzRfNe"
],
[
"SC5LmR2P63C84itbvofdoV"
],
[
"CDNor1b4hA1uX5MYrakhJt"
],
[
"7CP3zx4C8jDxzD6zsncpGS"
],
[
"NhmvyFUwU3acVNKBsGJ7gs"
],
[
"NJo48nUmUiAcVQf6npNzFq"
],
[
"QasgRc9eNJqu2Ya5WLmVuz"
],
[
"VXvbfbNmG4rkncJVEZfyF2"
],
[
"2E4NexGwvS9KiZoXLzo9se"
],
[
"GXzkBvXPjJZDSFf5Cf7xQX"
],
[
"SUrAkRxx6DpefmRu3MJuCR"
],
[
"VGfDaZUrCwJJgq9GcASSdU"
],
[
"HhYHMUbaFE7px6GBya9trb"
],
[
"nGwHckx1d8u4MNS4PLiJp"
],
[
"2dvChbdmDfwHgwhANk14kb"
],
[
"QE3srt2zhwsPFiFZPUp1Vq"
],
[
"UxumwX1DhLauTXhtJ6R2KQ"
],
[
"K6P7ZrsQQYvid5xn1PMG7A"
],
[
"Vz96b9NFhgkMMgC3wA8FfD"
],
[
"3oJkLo7kWBkZQeGej87WXr"
],
[
"3PG98729HTHF8L7ij5hpLe"
],
[
"Y7CqqQLaXiQLZvLWXzy2z1"
],
[
"8YmBCMFFKaNFViE3BZJean"
],
[
"RrtnqBJfupWPctwaBovoHq"
],
[
"W1a7qBnyXGaSGhqEbWziMp"
],
[
"3p2NAZu6a2vwqgiifZo4A4"
],
[
"SwTfVE44hPd6sviQ4Eb8mz"
],
[
"Y8yARgUURTrXoyN5tL84uq"
],
[
"D8XmG52aAAVDpbhSYTMVVa"
],
[
"TRSMV5tF5SBd4N8hSLvYCb"
],
[
"E4qELfMHKGAWQB2hMhG3pH"
],
[
"Tf1ULoRgLb6oZYdGAeoaQt"
],
[
"Ad23oq3KTkkLU1VenYyLKk"
],
[
"L8fhfJk3FVAY5HFSa9nsuq"
],
[
"SsbDZsE7QkBjz9RfR3sjKf"
],
[
"Gp8vp1aPe1isoL9GzvT7Z7"
],
[
"TMkXEiAckKQauev9ac69HD"
],
[
"TuejcEPV53xjUgENrRTMfh"
],
[
"TNpb51j11tGKFb8JZiNzxs"
],
[
"74UWTWQSebEnfS6YqH64N5"
],
[
"A1SxBH2tdPhqyv5J3R8DAi"
],
[
"WRtAgoDXfNZLxqUmEJL4z9"
],
[
"K5eistPZ77oZbzv6u3mrxK"
],
[
"YYB9N6n3YcG5ktpWDJCjTM"
],
[
"9i97iwQ9znyP8ZHe3gLj8d"
],
[
"HAuhNe4RwY4w58SHYAiF9a"
],
[
"53TftUrTYbdt7ec6kPnf2f"
],
[
"ViYhcrqqnWrnhVQhAXofRJ"
],
[
"GgqHCs5QgjFvifkGFLcsTf"
],
[
"EVCdrJ6LhxRZQrCvE4u3Yq"
],
[
"NnjegbrAw4YgH97w4kDYm5"
],
[
"CXGZzuvgaRBFUiPmxxgjg4"
],
[
"73Sw34U2ZMJqi9ZkEz1d4L"
],
[
"VcgRnu2dGK6kfDkeVkxty3"
],
[
"P5v8hxYGynA4TFRn47rFgb"
],
[
"GPeAg8vwc1cUZZnZv7cqJp"
],
[
"SJH2Qkp7Dkf6wTgmxZK6xD"
],
[
"2fb5R9BXMGz3EYnPqJKPrk"
],
[
"6KN6ScSsWnhwTh5AvY8VuU"
],
[
"KxATgNW325Zdbequy6QXbZ"
],
[
"V3EMdbp311a79qfc1d4W7P"
],
[
"6QWwjvRXQDGgpDvDqnMo5v"
],
[
"HxPEFX2P9iSGMTYvqReFfC"
],
[
"SXLG7ctaESZMgm5wfZh6RR"
],
[
"JsHDstR6KvZ86LY41TNv9u"
],
[
"PTt3XNLUBqZvZHu11Pn84d"
],
[
"PsFhnBok1gorxMRaEjF2kg"
],
[
"27aP49qFcKwDDYdfW6MyDn"
],
[
"HgSRnwcDFpYaJxABq13iHZ"
],
[
"7Puhonoy3TL3dwNuyeBGU7"
],
[
"6kogj3LwnLW2Uzx7BToPL5"
],
[
"VdomopGQ5Xexop1xs7UWpS"
]
]
}
POST /v2/invoices
Get history with all confirmed (payment received) invoices for a store
POST /get-store-all-invoices
Get all previously created invoices IDs as array
Parameters
For /v2/invoices
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
full | body | [string] | false | provide all invoice statuses in response |
For /get-store-all-invoices
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
Extending Invoice Expiration Time (Advanced)
curl 'https://api.forgingblock.io/v2/store-invoice-expiration' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=2GhhbL55TyYUDqadvvEEpT5AafXynVTjqqTkMHhtW7T4&time=60'
// Extend invoice expiration time for a store
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'time': '15'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/store-invoice-expiration',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
/* Extend invoice expiration time for a store */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/store-invoice-expiration');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'time' => '15'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
// Extend invoice expiration time for a store
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/store-invoice-expiration"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&time=15")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response examples:
{ success: 'Updated invoice expiration time' }
POST /v2/store-invoice-expiration
Set invoice expiration time
time
parameter is time in minutes, So, for example 30
is 30 minutes. Minimum value for time
is 10, while maximum is 360 minutes
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
time | body | [string] | true | time for expiration in minutes > 10 < 360 |
Invoice Status (Advanced)
Sometimes you want to check certain invoice id in certain cryptocurrency, that is how you could do it:
GET https://api.forgingblock.io/i/YWpNqMRiCKvvd7iZ316Ci6/BTC/status?invoiceId=YWpNqMRiCKvvd7iZ316Ci6&paymentMethodId=BTC&_=1
where BTC
is cryptocurrency code
and YWpNqMRiCKvvd7iZ316Ci6
is invoice ID
Supported currencies codes:
BTC
, ETH
, XTZ
, EOS
, DGB
, RDD
, RVN
, XMR
, XNC
, KSM
, OWC
, TUSC
, MATIC
(Polygon), BSC
(BNB)
Supported Ethereum tokens codes: DAI
, USDT
, LUSD
, CRV
, PICKLE
, ANGLE
, FXS
, IDLE
Path /eth-token/
Ex. GET https://api.forgingblock.io/i/WTRPDoDBPhByBsvU6fhqP3/eth-token/DAI/status?invoiceId=WTRPDoDBPhByBsvU6fhqP3&paymentMethodId=DAI&_=1
Supported Polygon tokens codes: DAI
, ETH
(WETH)
Path /polygon-token/
Ex. GET https://api.forgingblock.io/i/WTRPDoDBPhByBsvU6fhqP3/polygon-token/ETH/status?invoiceId=WTRPDoDBPhByBsvU6fhqP3&paymentMethodId=ETH&_=1
Supported Binance Smart Chain tokens codes: WBNB
, BUSD
, ZINA
(Zinari)
Path /bsc-token/
Ex. GET https://api.forgingblock.io/i/WTRPDoDBPhByBsvU6fhqP3/polygon-token/ETH/status?invoiceId=WTRPDoDBPhByBsvU6fhqP3&paymentMethodId=ETH&_=1
Supported EOS token code: IQ
Path /eos-token/
Ex. GET https://api.forgingblock.io/i/EKzdfS6QD2Hq9Z1itRA173/eos-token/IQ/status?invoiceId=EKzdfS6QD2Hq9Z1itRA173&paymentMethodId=IQ&_=1
Checkout
You could find in Accept payments -> Sell a Product in Dashboard
curl 'https://api.forgingblock.io/create-item-sale' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&amount=550¤cy=usd&description=spoon&email=test%40fastmail.mx&count=2&name=bestspoon'
curl 'https://api.forgingblock.io/check-item' -H 'Content-Type: application/x-www-form-urlencoded' --data 'item=327dc71fa54d07bc28f2e81c2c79fdad'
curl 'https://api.forgingblock.io/check-item-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'item=327dc71fa54d07bc28f2e81c2c79fdad'
curl 'https://api.forgingblock.io/items-list' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166'
curl 'https://api.forgingblock.io/v2/checkout-update' -H 'Content-Type: application/x-www-form-urlencoded' --data 'item=327dc71fa54d07bc28f2e81c2c79fdad&description=thebesttool&name=product1&trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&count=12'
// Create new Checkout
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token': '769861935592995096388092186007720621311273005537151914971703166',
'amount': '550',
'currency': 'usd',
'description': 'Item description',
'count': '2',
'name': 'device',
'email': 'test@fastmail.mx'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/create-item-sale',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Checkout Payment Details
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'item': '327dc71fa54d07bc28f2e81c2c79fdad'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/check-item',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Display Details for All Ever Created Checkouts
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token': '769861935592995096388092186007720621311273005537151914971703166'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/items-list',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Modify Checkout Payment Details
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token': '769861935592995096388092186007720621311273005537151914971703166',
'description': 'Item description 2',
'count': '11',
'name': 'device2',
'item': '327dc71fa54d07bc28f2e81c2c79fdad'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/checkout-update',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
/* Create new Checkout */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/create-item-sale');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token' => '769861935592995096388092186007720621311273005537151914971703166',
'amount' => '550',
'currency' => 'usd',
'description' => 'Item description',
'count' => '2',
'name' => 'device',
'email' => 'test@fastmail.mx'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Check Checkout Payment Details */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/check-item');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'item' => '327dc71fa54d07bc28f2e81c2c79fdad'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Display Details for All Ever Created Checkouts */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/items-list');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token' => '769861935592995096388092186007720621311273005537151914971703166'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Modify Checkout Details */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/checkout-update');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token' => '769861935592995096388092186007720621311273005537151914971703166',
'description' => 'Item description 2',
'count' => '11',
'name' => 'device2',
'item' => '327dc71fa54d07bc28f2e81c2c79fdad'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
// Create new Checkout
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/create-item-sale"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&amount=550¤cy=usd&description=Item%20description&count=2&name=device&email=test%40fastmail.mx")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Check Checkout Payment Details
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/check-item"
method := "POST"
payload := strings.NewReader("item=327dc71fa54d07bc28f2e81c2c79fdad")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Display Details for All Ever Checkouts
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/items-list"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Modify Checkout Payment Details
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/checkout-update"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&description=Item%20description%202&count=11&name=device2&item=327dc71fa54d07bc28f2e81c2c79fdad")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response examples:
{
"item": "5a29847ff8acfcb094257f9a926174a7",
"amount": "550",
"currency": "USD",
"description": "Item description",
"url": "https://api.forgingblock.io/item/5a29847ff8acfcb094257f9a926174a7",
"name": "device"
}
{
"item": "327dc71fa54d07bc28f2e81c2c79fdad",
"amount": "0.1",
"currency": "USD",
"description": "Item description 2",
"status": false,
"invoices": [
"KxATgNW325Zdbequy6QXbZ",
"V3EMdbp311a79qfc1d4W7P",
"PTt3XNLUBqZvZHu11Pn84d",
"PsFhnBok1gorxMRaEjF2kg",
"6QWwjvRXQDGgpDvDqnMo5v",
"3NRobzt2xLCTAWX1fAggvA",
"BH9SJosnbovsneKx26ym5h",
"W6JmefTr3TPMydaa7ot34g",
"8TBAC7fAVennLDZbGbNGC4",
"E6x4CUWHqhMpztj4zpqQmD",
"RHCPqdTU1EQbpGS6M5FLdm",
"Xcw5Ru4bfEyUbwNqu96tq3",
"DUuTo7EfM2ybkedhxnQniT",
"7LdFgajnVqQwMzwR6PbvsK",
"EVu3eMZXTn52m6odM7WYz5",
"HtGUdKv9LTQDX75Sg3EPvv",
"Pza38p13R1RzGeyge6TNsx",
"TKfyi1V26K53RBR3UYWBtd",
"BDDx8hbCSF9y5tRqHVEoSy",
"LVpT79HDQTbQRv2VasDnx9",
"6NM4sh3d2JcudYZzpSQm4G",
"LG3MfuDh3RMKiYCWTviQu7",
"DMSr4xnXpmFbDAp22sboj1",
"2HYv8qq1LLgJpdBQswgXyE",
"QEUt7uUwDxPvV7LZZap8tE",
"7YyYCc5X89WFnai5BRrZ1k",
"E9zcfMWmMsiGPCGijvUFcQ",
"HGWefzppEpt3AgbZ8PfvjS",
"WM7HMTmkD2McLraNkfhrdk",
"QYbdtr6PvGgyzpxB67csxW",
"PH6ohykse1CrNrNQMqqQK8",
"VQ5SBQ1Btb2wSVZFVNujoo",
"DA6zUe6SJ5xcYWw8zsv2fz",
"2N1z8HR2YwdT9awyUphTr2",
"J9FHkRPRK1uJmirefAseFt",
"j5Mn1vhj3rugccfzvNyos",
"Nvz2PerNdvQu4RUdFSnGke",
"Ah8q3aFEDAjaUp3ZfVFZ5d",
"W1U1YxFra2pEewwyZsUqHn",
"DBMH9kqgzCaEFnKgBZHFUa",
"NMTKKxVy3kvyAjAg11Be6d",
"T9gtcnYMSNiJ5pYoUKVB2v",
"LANejSAyTLTfYdngvS7JH7",
"6q7YM3QsoCAnvJVWTsRV7i",
"8m9j2ZrYtNGbiduUR1xbBJ",
"EAv9LbzHV5Zq89Z1fD2YdM",
"XxhVG6SRudGxkwNMBJGozn",
"HK7sYWaGJyywuFC7UreSBU",
"LJ5sQDTESHvnyczc6Qm9kR",
"UYw3f322mPtppbB7yV1s1",
"ju8H1qTQLjhCtVARLdYqn",
"NvFCqi9KchfUsPAq3K8CFE",
"WR1SrWepLsSeCRVtjVauSu",
"TnETm8QCLGppUCn2HoFnut",
"VePkoMDmugiP6tU9wh4L6C",
"BETFtJF1hQobG6TVDvBem3",
"FVP9FCZ5ayhBgBBGNRQuiN",
"DCc5e9yhwJrvWnM3UyHbdR",
"DXhnEvxGBdtFANJcbYJZJj",
"TfGmKYsnVm4D6tH4TE711L",
"CtS5h5ELBescykQ9oayXAP",
"BRA4vH1cAz8jn6VGVNc17F",
"Wzi3sRDYaQqWvqFSBse7Uo",
"7cZNAENL9fDwytuETf1HhC",
"VCtNfeNpzFxj9US9CWepoP",
"KP1hYb75EyAiGux6TJPqwn",
"HMFnxwiCAeZG2FCdZNjdqT",
"Jt4Mv91ZbkPWMAQ1Z6nwVh",
"K4HhQpzmeKZaLMaZ4KRbDu",
"B2SSaTRRwEnygxzZLtnieb",
"MwWWeHiQf4QHcFCQtpxJ2f",
"NaRAFfkthpauEQ9wpP1WTp",
"KRbNJVXGRAdoJh2To52xtL",
"W4An2Z9Vq4rMEpihcnmzCY",
"SrDyCVkMZuWNaoXY5cS4zP"
],
"count": 11,
"name": "device2",
"multiple": false,
"items": null
}
{"status":false}
{
"items": [
{
"item": "53e201abc05a1d00935e4768c20471a9",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "c824524b1a5fccb4c255dcda2a009d92",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "6ae4c2233125e1fb30cbafff452b53c7",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "b179c54d951d6f1665f8e4c223a0b7f5",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "b9559146991e3e3e9e374a516141fb43",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "48054caec1ca53d22554257064b5ee0d",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "c9ede9f66023640380700b063deb3041",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "ac1383dc5a8c79156f5e2a72ac889550",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "10",
"description": "Just test",
"invoices": [
"Wxb5UxR6KR5zbAgFcioJqk",
"NcVnVdE8fyb35rtFo1qoh7",
"BWJR4kKVPZUeyCHHiqjLJq",
"Ff8567Vse9XJwqAq6v956y",
"8StXdBkePEcxpgpUVN7qEn",
"Bp47b7Ar5d4HZkUxKqh1ef",
"usGc9eSYadLBiE2zyBkyK",
"W1a7qBnyXGaSGhqEbWziMp"
],
"count": 0,
"name": "test",
"items": null
},
{
"item": "5d7f5696b94ce0d3b1e7aa33f893fc33",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "f51cfce33e86b7b21d7f3287b5e2e273",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "60881888756c2bb366e1b71bf449662b",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "9257897a67dcd0b955f6dd5f129e85dc",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "d5869fe503b1d330a577b59cc1dc145c",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "2d4837067e9906949c52892ac2b833c8",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "abb9e57e421a6da69d647cd2463dce9b",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "50b975eaec2282c470bffea2f7d1ccd3",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "3c66791db6b5f3a50d40471d93960bfc",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "bac3fa23d9fe2e98d923f6e191950f80",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "6971da54b0ba2287d718e149b837b012",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "30026b7d2e80478f5b000937b0370f46",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "fd350b84d2866f1648cbd62d9fd8044d",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "14ae459a327659435135a6a2de1e9778",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "6671ef87a8f54fad0a8a0ad201263e56",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "04b54ef145de063cc2b4ba9f290d33de",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "3acd9c89f6f91367a1dc08d73ff7282d",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "b4a6e1c7426050be48097824321f66c6",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "10270e36e888d21da772e10ef8107a47",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "f64cdb2f54251b6b66dd50c459f4eb08",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "c99501cb80dc117b8bd7f04b84a9cc5d",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "f608ca330a82f04219e54eb01d6972c9",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "10cf95524f18307be220b9b2ae256600",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "4bf739e14b99a6f04953c02e685fb8d8",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "569f14c488948961678e89a7b04867db",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "4f7d75e8615d5eb182e0b42b4d74d566",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "ddd4edab990e3fc6fca2e8da5c58d920",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "d1c2a29f3dd5477e79fea7a53bd45437",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "0afd33e9dedc67d228448a615b8eb70e",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "b977322eb6755e8060b4dc65f2e2eac2",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "3ae10e00447bef220bb419089420123c",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "875b5d534b7fb430425f0a32edaacbc7",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "a603a5f9a93e4928d5f8c3c17afef578",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "ad4967cbb07fb0e89abfa7e14cc075dd",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "4c42fbf429ab64192979067a21da798b",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "bd8bc5b33a5bbb5566a4d8831663341a",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "901598aeff1411dd26b9f5928dc07add",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "18c94ae2e3a2c92c3a33f5eaf489513e",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "6f5a9580309fb5fd6f128282a392e7c2",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "cca99091939034ab242f5660098f4a3e",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "3055559e20cb654c8ece9d83c9b82fa8",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "cf97dcc6ff8e38d7624859dd622508ff",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "f02f013a84f04d91d2e367fc8f0270f5",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "106c88b9c785385550ac67f900efc679",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "535a46d98ec032d33d3be501c93b57c2",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "35d711dedd002f6c4d6d972682b3618b",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "c0518f916623ef3421a46b7a5ca2783e",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "ae9d64dbffc8f5b9657a47719880b322",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "7f1dfbddbb9d86679ea225ffb4e47d50",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "6523b3f7b97d0c9f37016788a3708746",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "861bf7d36ce1da0fc79ec31a49e28f70",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "aad3b151cdd2f4d95d72676ceb6ad06a",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "5d61a6d6324605fb81ff7a637b21491e",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "a2b88dcb51d87caaddb89b733cdb9103",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "0576b54464fd484090f229dc09464740",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "cd52edc9dc5d88caebc43485d8d90322",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "d5e39e1297fc4f8ab9335b7b1e81db4b",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "f3fc21bbc0a2288ed2a3785c5273176c",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "8e6a21df5233333edd25bce747320961",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "78da8e7851273fbf86002464bccfcb06",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "06ad826e2f22e7268460781390433ad2",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "327dc71fa54d07bc28f2e81c2c79fdad",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": [
"KxATgNW325Zdbequy6QXbZ",
"V3EMdbp311a79qfc1d4W7P",
"PTt3XNLUBqZvZHu11Pn84d",
"PsFhnBok1gorxMRaEjF2kg",
"6QWwjvRXQDGgpDvDqnMo5v",
"3NRobzt2xLCTAWX1fAggvA",
"BH9SJosnbovsneKx26ym5h",
"W6JmefTr3TPMydaa7ot34g",
"8TBAC7fAVennLDZbGbNGC4",
"E6x4CUWHqhMpztj4zpqQmD",
"RHCPqdTU1EQbpGS6M5FLdm",
"Xcw5Ru4bfEyUbwNqu96tq3",
"DUuTo7EfM2ybkedhxnQniT",
"7LdFgajnVqQwMzwR6PbvsK",
"EVu3eMZXTn52m6odM7WYz5",
"HtGUdKv9LTQDX75Sg3EPvv",
"Pza38p13R1RzGeyge6TNsx",
"TKfyi1V26K53RBR3UYWBtd",
"BDDx8hbCSF9y5tRqHVEoSy",
"LVpT79HDQTbQRv2VasDnx9",
"6NM4sh3d2JcudYZzpSQm4G",
"LG3MfuDh3RMKiYCWTviQu7",
"DMSr4xnXpmFbDAp22sboj1",
"2HYv8qq1LLgJpdBQswgXyE",
"QEUt7uUwDxPvV7LZZap8tE",
"7YyYCc5X89WFnai5BRrZ1k",
"E9zcfMWmMsiGPCGijvUFcQ",
"HGWefzppEpt3AgbZ8PfvjS",
"WM7HMTmkD2McLraNkfhrdk",
"QYbdtr6PvGgyzpxB67csxW",
"PH6ohykse1CrNrNQMqqQK8",
"VQ5SBQ1Btb2wSVZFVNujoo",
"DA6zUe6SJ5xcYWw8zsv2fz",
"2N1z8HR2YwdT9awyUphTr2",
"J9FHkRPRK1uJmirefAseFt",
"j5Mn1vhj3rugccfzvNyos",
"Nvz2PerNdvQu4RUdFSnGke",
"Ah8q3aFEDAjaUp3ZfVFZ5d",
"W1U1YxFra2pEewwyZsUqHn",
"DBMH9kqgzCaEFnKgBZHFUa",
"NMTKKxVy3kvyAjAg11Be6d",
"T9gtcnYMSNiJ5pYoUKVB2v",
"LANejSAyTLTfYdngvS7JH7",
"6q7YM3QsoCAnvJVWTsRV7i",
"8m9j2ZrYtNGbiduUR1xbBJ",
"EAv9LbzHV5Zq89Z1fD2YdM",
"XxhVG6SRudGxkwNMBJGozn",
"HK7sYWaGJyywuFC7UreSBU",
"LJ5sQDTESHvnyczc6Qm9kR",
"UYw3f322mPtppbB7yV1s1",
"ju8H1qTQLjhCtVARLdYqn",
"NvFCqi9KchfUsPAq3K8CFE",
"WR1SrWepLsSeCRVtjVauSu",
"TnETm8QCLGppUCn2HoFnut",
"VePkoMDmugiP6tU9wh4L6C",
"BETFtJF1hQobG6TVDvBem3",
"FVP9FCZ5ayhBgBBGNRQuiN",
"DCc5e9yhwJrvWnM3UyHbdR",
"DXhnEvxGBdtFANJcbYJZJj",
"TfGmKYsnVm4D6tH4TE711L",
"CtS5h5ELBescykQ9oayXAP",
"BRA4vH1cAz8jn6VGVNc17F",
"Wzi3sRDYaQqWvqFSBse7Uo",
"7cZNAENL9fDwytuETf1HhC",
"VCtNfeNpzFxj9US9CWepoP",
"KP1hYb75EyAiGux6TJPqwn",
"HMFnxwiCAeZG2FCdZNjdqT",
"Jt4Mv91ZbkPWMAQ1Z6nwVh",
"K4HhQpzmeKZaLMaZ4KRbDu",
"B2SSaTRRwEnygxzZLtnieb",
"MwWWeHiQf4QHcFCQtpxJ2f",
"NaRAFfkthpauEQ9wpP1WTp",
"KRbNJVXGRAdoJh2To52xtL",
"W4An2Z9Vq4rMEpihcnmzCY",
"SrDyCVkMZuWNaoXY5cS4zP"
],
"count": 2,
"name": "device",
"items": null
},
{
"item": "cbd1432fb97918cf9d7e24c708643618",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "7a397b367758d447cab32f0374d81249",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "f00477f4f1ac20983f9c5409017156ad",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "cfdfbfc717e3510b7f431427545e2018",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "67818f7fa37031948b92e3d7fe131aab",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "e5e7ef1fd2a0654c16df2328a4748dee",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "073895e4a075092166a7a92ff6194c05",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "1806f3f928f6d8f22ae9923f91e81a08",
"email": "test@fastmail.mx",
"currency": "USD",
"amount": "0.1",
"description": "Item description",
"invoices": null,
"count": 2,
"name": "device",
"items": null
},
{
"item": "e7c664080b35675c56864884b94d4fd9",
"email": "test@fastmail.mx",
"currency": "RUB",
"amount": "550",
"description": "spoon",
"invoices": null,
"count": 2,
"name": "bestspoon",
"items": null
}
]
}
{
"item": "327dc71fa54d07bc28f2e81c2c79fdad",
"amount": "0.1",
"currency": "USD",
"description": "Item description 2",
"status": false,
"invoices": [
"KxATgNW325Zdbequy6QXbZ",
"V3EMdbp311a79qfc1d4W7P",
"PTt3XNLUBqZvZHu11Pn84d",
"PsFhnBok1gorxMRaEjF2kg",
"6QWwjvRXQDGgpDvDqnMo5v",
"3NRobzt2xLCTAWX1fAggvA",
"BH9SJosnbovsneKx26ym5h",
"W6JmefTr3TPMydaa7ot34g",
"8TBAC7fAVennLDZbGbNGC4",
"E6x4CUWHqhMpztj4zpqQmD",
"RHCPqdTU1EQbpGS6M5FLdm",
"Xcw5Ru4bfEyUbwNqu96tq3",
"DUuTo7EfM2ybkedhxnQniT",
"7LdFgajnVqQwMzwR6PbvsK",
"EVu3eMZXTn52m6odM7WYz5",
"HtGUdKv9LTQDX75Sg3EPvv",
"Pza38p13R1RzGeyge6TNsx",
"TKfyi1V26K53RBR3UYWBtd",
"BDDx8hbCSF9y5tRqHVEoSy",
"LVpT79HDQTbQRv2VasDnx9",
"6NM4sh3d2JcudYZzpSQm4G",
"LG3MfuDh3RMKiYCWTviQu7",
"DMSr4xnXpmFbDAp22sboj1",
"2HYv8qq1LLgJpdBQswgXyE",
"QEUt7uUwDxPvV7LZZap8tE",
"7YyYCc5X89WFnai5BRrZ1k",
"E9zcfMWmMsiGPCGijvUFcQ",
"HGWefzppEpt3AgbZ8PfvjS",
"WM7HMTmkD2McLraNkfhrdk",
"QYbdtr6PvGgyzpxB67csxW",
"PH6ohykse1CrNrNQMqqQK8",
"VQ5SBQ1Btb2wSVZFVNujoo",
"DA6zUe6SJ5xcYWw8zsv2fz",
"2N1z8HR2YwdT9awyUphTr2",
"J9FHkRPRK1uJmirefAseFt",
"j5Mn1vhj3rugccfzvNyos",
"Nvz2PerNdvQu4RUdFSnGke",
"Ah8q3aFEDAjaUp3ZfVFZ5d",
"W1U1YxFra2pEewwyZsUqHn",
"DBMH9kqgzCaEFnKgBZHFUa",
"NMTKKxVy3kvyAjAg11Be6d",
"T9gtcnYMSNiJ5pYoUKVB2v",
"LANejSAyTLTfYdngvS7JH7",
"6q7YM3QsoCAnvJVWTsRV7i",
"8m9j2ZrYtNGbiduUR1xbBJ",
"EAv9LbzHV5Zq89Z1fD2YdM",
"XxhVG6SRudGxkwNMBJGozn",
"HK7sYWaGJyywuFC7UreSBU",
"LJ5sQDTESHvnyczc6Qm9kR",
"UYw3f322mPtppbB7yV1s1",
"ju8H1qTQLjhCtVARLdYqn",
"NvFCqi9KchfUsPAq3K8CFE",
"WR1SrWepLsSeCRVtjVauSu",
"TnETm8QCLGppUCn2HoFnut",
"VePkoMDmugiP6tU9wh4L6C",
"BETFtJF1hQobG6TVDvBem3",
"FVP9FCZ5ayhBgBBGNRQuiN",
"DCc5e9yhwJrvWnM3UyHbdR",
"DXhnEvxGBdtFANJcbYJZJj",
"TfGmKYsnVm4D6tH4TE711L",
"CtS5h5ELBescykQ9oayXAP",
"BRA4vH1cAz8jn6VGVNc17F",
"Wzi3sRDYaQqWvqFSBse7Uo",
"7cZNAENL9fDwytuETf1HhC",
"VCtNfeNpzFxj9US9CWepoP",
"KP1hYb75EyAiGux6TJPqwn",
"HMFnxwiCAeZG2FCdZNjdqT",
"Jt4Mv91ZbkPWMAQ1Z6nwVh",
"K4HhQpzmeKZaLMaZ4KRbDu",
"B2SSaTRRwEnygxzZLtnieb",
"MwWWeHiQf4QHcFCQtpxJ2f",
"NaRAFfkthpauEQ9wpP1WTp",
"KRbNJVXGRAdoJh2To52xtL",
"W4An2Z9Vq4rMEpihcnmzCY",
"SrDyCVkMZuWNaoXY5cS4zP"
],
"name": "device2",
"count": 11
}
POST /create-item-sale
Creates new Checkout
Once you open a payment URL, a new invoice for Checkout will be generated.
And after the last item (check count
parameter) is paid, new invoice generation will stop and item status
will change to true
0
count creates unlimited stock and new invoice generation wouldn't ever stop
It could useful for static websites without Cart system.
POST /check-item
Check Checkout details
POST /check-item-status
Check Checkout status
After the last item (check count
parameter) is paid new invoice generation will stop and item status
would change to true
POST /items-list
Details for All Ever Checkouts
GET /item/ + Item ID
Generate invoice for certain item or show item details (ones all paid)
POST /v2/checkout-update
Update Checkout payment details
Parameters
For /create-item-sale
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
currency | body | [string] | true | currency |
amount | body | [string] | true | amount for the price |
description | body | [string] | true | item description |
name | body | [string] | true | item name |
count | body | [boolean] | true | item availability count |
body | [string] | true | email for notification | |
notification | body | [string] | true | URL for IPN (must include http or https) |
For /check-item
and /check-item-status
Parameter | In | Type | Required | Description |
---|---|---|---|---|
item | body | [string] | true | item id |
For /items-list
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
For /v2/checkout-update
Parameter | In | Type | Required | Description |
---|---|---|---|---|
item | body | [string] | true | item id |
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
description | body | [string] | true | item description |
name | body | [string] | true | item name |
count | body | [boolean] | true | item availability count |
Response Parameters
For /create-item-sale
, /check-item
, /check-item-status
, /v2/checkout-update
Parameter | Description |
---|---|
item | item id |
amount | amount for the price |
description | item description |
status | item status (changes once the last item payed) |
currency | currency |
name | body |
invoices | array with all generated invoices |
url | item payment url |
For /items-list
Array with values for: item, email, currency, amount, description, invoices, count
Parameter | Description |
---|---|
item | item id |
amount | amount for the price |
description | item description |
status | item status (changes once the last item payed) |
currency | currency |
name | body |
invoices | array with all generated invoices |
url | item payment url |
Crowdfunding or Donations
You could find in Accept payments -> Accept Donations in Dashboard
curl 'https://api.forgingblock.io/create-crowdfunding' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&amount=9.55¤cy=usd&description=Fund_description&email=test%40fastmail.mx&name=Crowdfunding_campaign_name'
curl 'https://api.forgingblock.io/check-crowdfunding' -H 'Content-Type: application/x-www-form-urlencoded' --data 'fund=58e85d60e308043559c8ac9d2efb3c7cae10'
curl 'https://api.forgingblock.io/check-crowdfunding-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'fund=58e85d60e308043559c8ac9d2efb3c7cae10'
curl 'https://api.forgingblock.io/crowdfunds-list' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166'
curl 'https://api.forgingblock.io/crowdfunding-donations' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&fund=58e85d60e308043559c8ac9d2efb3c7cae10'
// Create new Crowdfunding
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token': '769861935592995096388092186007720621311273005537151914971703166',
'amount': '9.55',
'currency': 'usd',
'description': 'Fund description',
'email': 'TEST@FMGUY.COM',
'name': 'Crowdfunding_campaign_name'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/create-crowdfunding',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Check Crowdfunding Details
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'fund': '1897676b5bc8ead155884910414dfd45f107'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/check-crowdfunding',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Display Details for All Ever Created Crowdfunds
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token': '769861935592995096388092186007720621311273005537151914971703166'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/crowdfunds-list',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Display Donations Details
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'fund': '58e85d60e308043559c8ac9d2efb3c7cae10',
'token': '769861935592995096388092186007720621311273005537151914971703166'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/crowdfunding-donations',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
/* Create new Crowdfunding */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/create-crowdfunding');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token' => '769861935592995096388092186007720621311273005537151914971703166',
'amount' => '9.55',
'currency' => 'usd',
'description' => 'Fund description',
'email' => 'TEST@FMGUY.COM',
'name' => 'Crowdfunding_campaign_name'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Check Crowdfunding Details */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/check-crowdfunding');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'fund' => '1897676b5bc8ead155884910414dfd45f107'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Display Donations Details */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/crowdfunding-donations');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'fund' => '1897676b5bc8ead155884910414dfd45f107',
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'token' => '769861935592995096388092186007720621311273005537151914971703166'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
// Create new Crowdfunding
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/create-crowdfunding"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&amount=9.55¤cy=usd&description=Fund%20description&email=TEST%40FMGUY.COM&name=Crowdfunding_campaign_name")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Check Crowdfunding Details
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/check-crowdfunding"
method := "POST"
payload := strings.NewReader("fund=1897676b5bc8ead155884910414dfd45f107")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Display Details for All Ever Created Crowdfunds
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/crowdfunds-list"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Display Donations Details
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&fund=58e85d60e308043559c8ac9d2efb3c7cae10}`)
req, err := http.NewRequest("POST", "https://api.forgingblock.io/crowdfunding-donations", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{
"fund": "eae2b2aabfa7f054ccfe73f1fa2b99d94156",
"amount": "9.55",
"currency": "USD",
"description": "Fund description",
"name": "Crowdfunding_campaign_name"
}
{
"fund": "1897676b5bc8ead155884910414dfd45f107",
"amount": "9.55",
"currency": "USD",
"description": "Fund description",
"status": false,
"invoices": [
"6KN6ScSsWnhwTh5AvY8VuU",
"2fb5R9BXMGz3EYnPqJKPrk",
"SXLG7ctaESZMgm5wfZh6RR",
"HxPEFX2P9iSGMTYvqReFfC",
"JsHDstR6KvZ86LY41TNv9u",
"RV5x7n2TRWDjmWZniK5Sn1",
"M5qJuxV8uwyUcn6axayJLB",
"YXLwnRPadcXw5nyPXVwtkq",
"RUyQ1cMYW8xg9C4AYH2ayd",
"159QBS8rcFvSpGGbihu5kK",
"Q92DRGA77Tie1PZUYBx5sA",
"EwQCzx36zQtajZBfLJM9Zc",
"M3RxJwXCPB8L8hyGogkxYS",
"VGqC6y5kvMA13zHqwKUTyu",
"6L39fn1vqA3GRvNUtXBbcy",
"2cqY7gbRYqG43CHCb3gi5L",
"6zsKzNatCpHzZUuifkaWwA",
"BzCnoPsGepmutTLVZatpkz",
"s4n3fyNHRLAr7JBU3NpXQ",
"YwCwooJdXLg5bysNVwmH1",
"5mEHUXCHiwAi7nbNDRpjW3",
"NAYt1cLWbRrSaHFCVMpBhs",
"BHKsBdqZwr8TZrDAdGEnoZ",
"M9qa2pewUhWthCHKSGJVZp",
"PaYYL2UmBPfCWH4m73sjvY",
"7rX9F5s3erKb2ybxGKDTgM",
"BZXpkQm588tuQbftUMLEYY",
"GfUrimk1JpGsNc6waaHUzm",
"CM2nemxY9LGskH77fdjxox",
"JisYriYRuBou3t31tEaJf1",
"HooFRXbX7oVa2KbJ33HioK",
"PtVVggzyN7HKuwGDsDSQzC",
"Pa7yePPrkN6MmDruN79Zp9",
"YQUAn86BQATe1UJ9VtsopM",
"C2V7gTcJPDeg1p9xwbBpRd",
"FpemVERgmugRprtbAWQDgP",
"RNpDsFHvFyBddGXUkSY5Fz",
"TyLSUK31AnN9JhPbCs7d2K",
"XJffjrLFfBecaVmy6VS5xU",
"Tkh35QcDyUyDPLfowwYCFb",
"2qftWJ2VUWPXJM9LmqcYSx",
"BX8goV6GbxcyYqGVaomsi6",
"VfHEdaE5FcLDAEX9ynY8wa",
"M8omN2anRWEvGe7P9vrbCf",
"2MxD27BPQdMM1SESwtWq4L",
"J86msvrbSGDg9Ak7YAbD6M",
"EQAUzcyakDNrLdQFZPhq71",
"EtaqBL76raHFVzSyzCAVvQ",
"VgAWmHJgrkkvuV8EtmNdGX",
"9EjPCF3V8LDdeaFdnUCCwV",
"MkAS2oViVntRE97oErUzui",
"WRpYfssAEqL1QVDJKWS92w",
"VqZjVhy5ynuLmJXyT4YoWA",
"2EPvftBsAMJdb9VX1eSFpZ",
"FMkw6nU1WDHtnNENeSshzF",
"BbxtvqVkRvshFsj1r6Q8uY",
"NUX7uWdJLggnJrkwGXF3kJ",
"3sv8ogjLtjLP3bAe4vSbPe",
"Xu2b46iPomovBBjTsTj9UP",
"Ur6uoL2XoExUchGq1YTxJv",
"H4hdd99pv3kSXgpSysxZUi",
"2rmJkoU7BUVTKTSKSw6BXo",
"4hjYtXbq2p5g1v2fCqNEPR",
"5eAN1y82w6o8f9DZk4Rfj1",
"7TL3QWG2w6HY6mYEGsv1ox",
"FbRLYuizV8BsGKhRH4hy22",
"Rhmz8HrXxYX2C1oZCGNj7M",
"MbWYCcj8teurEric48Vy97",
"NNgosNEv1QGZqwyPaj9eFs",
"M3SSTuaEEymuTXSD8p1AQU",
"AqLmdNMXXJEerGzT7TxdVT",
"223zoRSXnmKkq9CFDyPkEc",
"GEssbSox9RDdFViR9ZBvjn",
"Nx6qm8cbVR89dcFRWkMLep",
"7cAW2yHXA6MzpLRLvbirbU"
],
"name": "Crowdfunding_campaign_name"
}
{
"status": false
}
{
"funds": [
{
"fund": "47285ccd8e45e887ffd4a0e79201e276cd46",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "ad2588bb4e4df43ff30590a8fc5780ec84be",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "79d7a98e0f68129f8b7d02f8a32a28bda129",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "8d775db0f37d77cd15814e3d9840e881bd38",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "1da0ac74d0f232bafa3632cb7aa3d934b750",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "433e0a5a2f97fe938888546cfe457f2a05b0",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "f10b845f27aa515fbc30e4d1b1212d312035",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "720c133b4c2573de8301960fee72c8b24fb8",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "3407b484278f60f4b2ca725355362138e060",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "5b507f75e1756a0dd45957381eadae583a45",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "d98923560d534872222f63c726d786d27ddc",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "869c0265c9f741aafab625943e6c9913286e",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "acb2f6e73f53b7be5dc38685d65a60ce2096",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "6acf1d41ef7994af14a13b73949c5e0ceccf",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "924903195ab01781783cf1ec41b9739e911f",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "9399ec0ca8f7ff01cdbd583f35299c17c5cd",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "0f5709ee8cc4bb59ac03efa90f4ed09db803",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "63e419904fcfc168c46c57f466f3a0c43d1e",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "19125f77da0dc42b1b5099d804a7abbaf622",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "fcc21a3575a4cd683a65ab9c17070eb16738",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "a4720320299b26c2412c40e250c8dfc7a18c",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "8f41f09054d3327ac2ad54b0cf288029ed0a",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "efd9fbd00b6ac81ed7ef09c33e5f361696f1",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "16df275fbd634e4a545e1d29fcd62703ddd2",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "44c4fb06b1e2267470ec8e128f9a3811512f",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "f1d8d75a154ad71adb553c23ffc26fed2dc1",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "16204bf90cf1aca1740b235411021e1c08d8",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "742ffb229c40ded8977197bb5c5b1e7d38a2",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "060c13ea61d2e00081c36508304934148686",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "1493b203b9ea94dadf522ac9eb53b3dc08f5",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "fb622d59de8aa25e18d0cc985d17f9eaaaf4",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "73d4eb314720b3652d10e048116385250a10",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "65eefa98e21f4e1985745bb81ab1b89a0763",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "6bfeaa40fd51d58f74f259f79ed363f28bd7",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "342224c876e59a65a3a0f296e691d2bc9904",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "26ccd855f29bcc4fe0625cbad831148e4c38",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "f6ba53c4e10b19fb4a754bfde752387b95c7",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "cc100a551d74d75416951da51e70981b5f44",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "8ed2da99d6b2b5dc36936b0394b5382ff283",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "e084dc0472388fc71192db81e835780ff9d9",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "58b7f26d2b644dff4228d830fd772297b9da",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "9cf26d0bad5f033afcc8615a3504f26bfaac",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "fa41723f6713b5f2ac7b2e2daf25376c5a0e",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "b0a9da279e70556b92ce0542a1b26bf83bde",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "ac0cafb151afefa1d31d2073dc17dadbefd0",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "aaf163b7bf28697f54ce70c178184a3ed906",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "e5afd3f7b8eca1c586367565832ed173f8f1",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "d65646c9e3497ebf08bd8f465a9c886b9453",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "0571447656dd7b4de49e120ce3bd020334c2",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "7d59c5c0f49db4bf887c7e7a01f8c1c53a05",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "13da56a0ae4b8ca2e47607c11298e96c2205",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "1897676b5bc8ead155884910414dfd45f107",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": [
"6KN6ScSsWnhwTh5AvY8VuU",
"2fb5R9BXMGz3EYnPqJKPrk",
"SXLG7ctaESZMgm5wfZh6RR",
"HxPEFX2P9iSGMTYvqReFfC",
"JsHDstR6KvZ86LY41TNv9u",
"RV5x7n2TRWDjmWZniK5Sn1",
"M5qJuxV8uwyUcn6axayJLB",
"YXLwnRPadcXw5nyPXVwtkq",
"RUyQ1cMYW8xg9C4AYH2ayd",
"159QBS8rcFvSpGGbihu5kK",
"Q92DRGA77Tie1PZUYBx5sA",
"EwQCzx36zQtajZBfLJM9Zc",
"M3RxJwXCPB8L8hyGogkxYS",
"VGqC6y5kvMA13zHqwKUTyu",
"6L39fn1vqA3GRvNUtXBbcy",
"2cqY7gbRYqG43CHCb3gi5L",
"6zsKzNatCpHzZUuifkaWwA",
"BzCnoPsGepmutTLVZatpkz",
"s4n3fyNHRLAr7JBU3NpXQ",
"YwCwooJdXLg5bysNVwmH1",
"5mEHUXCHiwAi7nbNDRpjW3",
"NAYt1cLWbRrSaHFCVMpBhs",
"BHKsBdqZwr8TZrDAdGEnoZ",
"M9qa2pewUhWthCHKSGJVZp",
"PaYYL2UmBPfCWH4m73sjvY",
"7rX9F5s3erKb2ybxGKDTgM",
"BZXpkQm588tuQbftUMLEYY",
"GfUrimk1JpGsNc6waaHUzm",
"CM2nemxY9LGskH77fdjxox",
"JisYriYRuBou3t31tEaJf1",
"HooFRXbX7oVa2KbJ33HioK",
"PtVVggzyN7HKuwGDsDSQzC",
"Pa7yePPrkN6MmDruN79Zp9",
"YQUAn86BQATe1UJ9VtsopM",
"C2V7gTcJPDeg1p9xwbBpRd",
"FpemVERgmugRprtbAWQDgP",
"RNpDsFHvFyBddGXUkSY5Fz",
"TyLSUK31AnN9JhPbCs7d2K",
"XJffjrLFfBecaVmy6VS5xU",
"Tkh35QcDyUyDPLfowwYCFb",
"2qftWJ2VUWPXJM9LmqcYSx",
"BX8goV6GbxcyYqGVaomsi6",
"VfHEdaE5FcLDAEX9ynY8wa",
"M8omN2anRWEvGe7P9vrbCf",
"2MxD27BPQdMM1SESwtWq4L",
"J86msvrbSGDg9Ak7YAbD6M",
"EQAUzcyakDNrLdQFZPhq71",
"EtaqBL76raHFVzSyzCAVvQ",
"VgAWmHJgrkkvuV8EtmNdGX",
"9EjPCF3V8LDdeaFdnUCCwV",
"MkAS2oViVntRE97oErUzui",
"WRpYfssAEqL1QVDJKWS92w",
"VqZjVhy5ynuLmJXyT4YoWA",
"2EPvftBsAMJdb9VX1eSFpZ",
"FMkw6nU1WDHtnNENeSshzF",
"BbxtvqVkRvshFsj1r6Q8uY",
"NUX7uWdJLggnJrkwGXF3kJ",
"3sv8ogjLtjLP3bAe4vSbPe",
"Xu2b46iPomovBBjTsTj9UP",
"Ur6uoL2XoExUchGq1YTxJv",
"H4hdd99pv3kSXgpSysxZUi",
"2rmJkoU7BUVTKTSKSw6BXo",
"4hjYtXbq2p5g1v2fCqNEPR",
"5eAN1y82w6o8f9DZk4Rfj1",
"7TL3QWG2w6HY6mYEGsv1ox",
"FbRLYuizV8BsGKhRH4hy22",
"Rhmz8HrXxYX2C1oZCGNj7M",
"MbWYCcj8teurEric48Vy97",
"NNgosNEv1QGZqwyPaj9eFs",
"M3SSTuaEEymuTXSD8p1AQU",
"AqLmdNMXXJEerGzT7TxdVT",
"223zoRSXnmKkq9CFDyPkEc",
"GEssbSox9RDdFViR9ZBvjn",
"Nx6qm8cbVR89dcFRWkMLep",
"7cAW2yHXA6MzpLRLvbirbU"
],
"name": "Crowdfunding_campaign_name"
},
{
"fund": "a41e28305f2a35bf063b4de93763b968cf56",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "68a209e094c1ed12f1870d9431c1fb683833",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "cad7ea50ca1488ea165cbabc05460e3325b5",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "e44bc0f2cb446d157aab2075a142abdd7e36",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "18d7cd4d8613b46797227a520e106bc34e6c",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "2b1ea5558299fa26f212bd9ced1c37c43c8c",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "938455b289654c42f98583e93d39cc33e8b8",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "8a5b967cd26aa5d15d88b360bf3820c3998a",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "5512a33dcf20ab9c184d4f19ef843b2e109b",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "3061d14fc22daf780774ccea62b20a1509a2",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "eae2b2aabfa7f054ccfe73f1fa2b99d94156",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "89730949c9f698dd1541f3edf4fcfeedc1c8",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "35e43919719ea628ac26dd136e876a2ff082",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "96e15e2e96a1bc91f1a4c8a330085be2e87f",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "3d3cc29bc8a92d16dbdaaf72a472b0023198",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "8c29077ae924545b59c8889b94061a32d56c",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "a9bac65fa191e7af999212bdd81413e76d5a",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "9bf6afa8f42af7f60891d3e6e2d41a13b051",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "733304213c14aa57258b49bc0bcb0c6ceb20",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "a717b3bb3e8160dbe7982c04b28d9c58743d",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "85b1c092ae318efb3db19440ffeabb379728",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "d9480b36c127b86d99e7383a25157d777f48",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "b690f85f1385d4a32b52797040b2decbacc4",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "90544ac2eb03402c471ae637c694bd9d9708",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "e14fc7db1fe6b3b05eed472e4cf9286a8bc3",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
},
{
"fund": "b4263eabb369e97cf8da75bd64cdb0fb2700",
"email": "TEST@FMGUY.COM",
"currency": "USD",
"amount": "9.55",
"description": "Fund description",
"invoices": null,
"name": "Crowdfunding_campaign_name"
}
]
}
{
"donations": [
{
"invoice": "5dB3RVM7nnckEwKRcvVqoQ",
"created": "2019-10-25T14:29:32.000Z",
"participantEmail": "1@test.me",
"status": "complete"
}
]
}
POST /create-crowdfunding
Creates new Crowdfunding
Crowdfunding used to raise certain amount.
Once amount is raised crowdfunding status
changes to true
and GET request with fund
ID and amount
would stop to generatе new invoices
POST /check-crowdfunding
Check crowdfunding details
POST /check-crowdfunding-status
Check crowdfunding status
Once amount is raised crowdfunding status
changes to true
and GET request with fund
ID and amount
would stop to generating new invoices
POST /crowdfunds-list
Details for All Ever Created Crowdfunds
POST /crowdfunding-donations
Crowdfunding Donations Details
Displays private information with participants of crowdfunding (donations), includes participant email (email that was provided for the invoice)
GET /fund/ + Crowdfunding ID + / + Amount
Generates invoice for any amount to participate in the Crowdfunding
Ex. GET https://api.forgingblock.io/fund/1897676b5bc8ead155884910414dfd45f107/20
Asks for 20 USD donation
Ex. GET https://api.forgingblock.io/fund/1897676b5bc8ead155884910414dfd45f107/50
Asks for 50 USD donation
Once amount you used to create Crowdfunding is raised crowdfunding status
changes to true
and GET request with fund
ID and amount
would stop to generating new invoices
Parameters
For /create-crowdfunding
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
currency | body | [string] | true | currency |
amount | body | [string] | true | amount for the price |
description | body | [string] | true | crowdfunding description |
name | body | [string] | true | crowdfunding campaign name |
body | [string] | true | email for notification | |
notification | body | [string] | true | URL for IPN (must include http or https) |
For /check-crowdfunding
and /check-crowdfunding-status
Parameter | In | Type | Required | Description |
---|---|---|---|---|
fund | body | [string] | true | crowdfunding id |
For /crowdfunds-list
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
For /crowdfunding-donations
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
fund | body | [string] | true | crowdfunding id |
Response Parameters
For /create-crowdfunding
, /check-crowdfunding
and /check-crowdfunding-status
Parameter | Description |
---|---|
fund | crowdfunding id |
amount | amount to raise (goal) |
description | crowdfunding description or purpose |
status | crowdfunding status (changes once amount is collected) |
currency | currency |
invoices | array with all generated invoices |
balance | total amount collected |
For /crowdfunds-list
Array with values for: Crowdfunding ID (fund), email, currency, amount, description, invoices IDs
For /crowdfunding-donations
Array with values for: Invoice ID, Invoice Creation Time, Participant's email, Invoice Status
Attaching Image to the Checkout or Crowdfunding
curl --location --request POST 'https://api.forgingblock.io/upload-image' --header 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T' --header 'Content-Type: multipart/form-data' --form 'image=@/home/test/Images/image.jpg'
curl 'https://api.forgingblock.io/get-image' -H 'Content-Type: application/x-www-form-urlencoded' --data 'image=f1934a910f29b509b67511d2491d'
curl 'https://api.forgingblock.io/attach-image' -H 'Content-Type: application/x-www-form-urlencoded' --data 'image=f1934a910f29b509b67511d2491d&id=d28db141cd5b2140adcc170c0d0a4147&&trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
// Upload image
var request = require('request');
var headers = {
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'Content-Type': 'multipart/form-data'
};
var options = {
url: 'https://api.forgingblock.io/upload-image',
method: 'POST',
headers: headers
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Get image
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'image=f1934a910f29b509b67511d2491d';
var options = {
url: 'https://api.forgingblock.io/get-image',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Attach image to checkout or crowdfunding
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'image=f1934a910f29b509b67511d2491d&id=d28db141cd5b2140adcc170c0d0a4147&trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T';
var options = {
url: 'https://api.forgingblock.io/attach-image',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Upload image */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'Content-Type' => 'multipart/form-data'
);
$response = Requests::post('https://api.forgingblock.io/upload-image', $headers);
/* Get image */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'image' => 'f1934a910f29b509b67511d2491d'
);
$response = Requests::post('https://api.forgingblock.io/get-image', $headers, $data);
/* Attach image to checkout or crowdfunding */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'image' => 'f1934a910f29b509b67511d2491d'
);
$response = Requests::post('https://api.forgingblock.io/attach-image', $headers, $data);
/// Upload image
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("POST", "https://api.forgingblock.io/upload-image", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("trade", "A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T")
req.Header.Set("Content-Type", "multipart/form-data")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Get image
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`image=f1934a910f29b509b67511d2491d`)
req, err := http.NewRequest("POST", "https://api.forgingblock.io/get-image", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Attach image to checkout or crowdfunding
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`image=f1934a910f29b509b67511d2491d&id=d28db141cd5b2140adcc170c0d0a4147&trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T`)
req, err := http.NewRequest("POST", "https://api.forgingblock.io/attach-image", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"image":"f1934a910f29b509b67511d2491d"}
{"base64":"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","mimetype":"image/png"}
{"success": "Image was successfully attached to the: d28db141cd5b2140adcc170c0d0a4147"}
POST /upload-image
Upload image
Uploads image. Image could be attached later to the Checkout or Crowdfunding, uses multipart/form-data
POST /get-image
Get image mimetype and its base64 representation
POST /attach-image
Attach image id to Checkout or Crowdfunding
Attach image id to Checkout or Crowdfunding.
Every new invoice generated that has attached image would have imageId
parameter in status response
Creating Store (Advanced)
Single user could own multiple stores. You could think about store like a factory. Every factory is an industrial facility, often a complex consisting of several buildings. And its not always resonable to build everything in only one building. And every building has its own director or manager controling it.
Dashboard UI does support only single store. However in the API there no such limit. And since every store has different pair of trade
and token
this allows some flexibility, like per say you not only could connect different wallets for every store, you, also could share your trade
and token
with different managers you trust, while at the same time, they wouldn't be able to control your account, but only specific store.
Even if you go to the supermarket, you know that there groceries section, meat section, ice-cream section and etc. If you have a huge different category stock, holding multiple stores it is, also you way to go.
curl 'https://api.forgingblock.io/create-store' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&xpub=xpub6CAHoCTvo9DvKceBF8H2DgarHzUbpJX3pkSQKauaCBYScTgoEiTFH1qCdkWCDhPqabcsMt8AmV7QKEVi4MbhF47yCvU5fffXRGnkyr5NskW&name=myawesomestore'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'email': 'TEST@FMGUY.COM',
'password': 'myhardpwdAeng2uabohcehhh',
'xpub': 'xpub6CAHoCTvo9DvKceBF8H2DgarHzUbpJX3pkSQKauaCBYScTgoEiTFH1qCdkWCDhPqabcsMt8AmV7QKEVi4MbhF47yCvU5fffXRGnkyr5NskW',
'name': 'awesomeStore'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/create-store',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => 'test@forgingblock.io',
'password' => 'myhardpwdAeng2uabohce',
'xpub' => 'xpub6CAHoCTvo9DvKceBF8H2DgarHzUbpJX3pkSQKauaCBYScTgoEiTFH1qCdkWCDhPqabcsMt8AmV7QKEVi4MbhF47yCvU5fffXRGnkyr5NskW'
);
$response = Requests::post('https://api.forgingblock.io/create-store', $headers, $data);
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/create-store');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'email' => 'TEST@FMGUY.COM',
'password' => 'myhardpwdAeng2uabohcehhh',
'xpub' => 'xpub6CAHoCTvo9DvKceBF8H2DgarHzUbpJX3pkSQKauaCBYScTgoEiTFH1qCdkWCDhPqabcsMt8AmV7QKEVi4MbhF47yCvU5fffXRGnkyr5NskW',
'name' => 'awesomeStore'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
Example response:
{
"trade": "EPg5V7o2kyBvvuoAPbWnAAkfH4RBbuDvp3UqmQZkuLE8",
"token": "2DDfybdiE2YjCYALrapxGoYDR9QNjm7f2z1kJcKMFJ3zzqAC6fNbsaXVZ4EGo6oX5CUkkGXwRYYhLDr3D33hTeUm",
"store": "5uQ4fdjwbE2HiKSM78xkjcad7qHx2KFdAup3qmVwGwi4",
"wallet": true,
"name": "awesomeStore"
}
POST /create-store
Creating new store
You could connect a wallet at this step, or you could connect it [later](file:///home/user/workspace-tp-fb/docs/fbuni-api-docs/index.html#connecting-wallet)
To connect your wallet, you need to provide Master Public key (xPub) for your wallet.
xPub keys can never be used to access your funds. The xPub does not contain any private key information.
*Beside the API reply, you should also receive email with store details that includes trade
and token
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
xpub | body | [string] | false | Master Public key (xPub) |
name | body | [string] | true | store name |
Response Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
store | body | [string] | true | store id |
wallet | body | [boolean] | true | is wallet connected to the store |
List All Stores, Remove a Store, & Change or Get Store Name
curl 'https://api.forgingblock.io/stores-list' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
curl 'https://api.forgingblock.io/remove-store' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
curl 'https://api.forgingblock.io/v2/get-store-name' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
curl 'https://api.forgingblock.io/change-store-name' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&name=newName2'
// List All Stores
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/stores-list',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Remove Store
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'email': 'test@forgingblock.io',
'password': 'myhardpwdAeng2uabohce',
'store': '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/remove-store',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Get Store Name
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/get-store-name',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Change Store Name
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'name': 'newName2'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/change-store-name',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
/* List All Stores */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/stores-list');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Remove Store */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => 'test@forgingblock.io',
'password' => 'myhardpwdAeng2uabohce',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.forgingblock.io/remove-store', $headers, $data);
/* Get Store Name */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/get-store-name');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Change Store Name */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/change-store-name');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'name' => 'newName2'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
// List All Stores
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/stores-list"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Remove Store
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.forgingblock.io/remove-store", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Get Store Name
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/get-store-name"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Change Store Name
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/change-store-name"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&name=newName2")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response example:
{
"stores": [
{
"id": "CA9zDHDsdH4jgGb2faJn8vzGeweL9nA7izSBVcFNab8H",
"name": "awesomeStore"
},
{
"id": "4MYFSs9jW6DK9ih5LXAwpBeKUChXNxE2mKukpm6Cz2WX",
"name": "newStore"
},
{
"id": "BtHsaAMprMktzEJd9diugeY2mxjddsQE2diuTsjtJ3kX",
"name": "awesomeStore"
},
{
"id": "5Ae1fMSxnFcz7Bcdp5eS9jnD9NUaL61vbNgFCujWvpeF",
"name": "awesomeStore"
},
{
"id": "BzDwF79Ffaz7h5medBvZX8UBPaXLjZ1usiiXUC9rtv1R",
"name": "newStore"
},
{
"id": "DL9Zb5b1hhhKXuaQxaruZbFHVsjF71b5q2DdY6vh5Nt1",
"name": "awesomeStore"
},
{
"id": "Ca29z6gMmfCYVsLergY3HsnzN6D9dkzj7tCaWKEDeRim",
"name": "awesomeStore"
},
{
"id": "3na5AVUvjWy7XEHan5yZeiQCTZk5A5qgYAqjgY9AeQQR",
"name": "awesomeStore"
},
{
"id": "7j9GgfPzirzoeCE339WGW7iLcCmEZrph8HFUXdJgRGGR",
"name": "newStore"
},
{
"id": "524gobveaxhSMbZcQikGbcSGZacREhEH9BPkfFKB2oM3",
"name": "awesomeStore"
},
{
"id": "8uYvTYHc2DvpaTAhYVEhZz3Pm7zP24sQeFMEzDZqCAZ8",
"name": "awesomeStore"
},
{
"id": "8AGi6D6FHyKyHxhZF3ncx787KwKWiFhxtcAH2ZekWgb2",
"name": "newStore"
},
{
"id": "2JbSeAFeeJWfpjGNNzjHdkt24SuJ7rRMbewk3ngpoic6",
"name": "awesomeStore"
},
{
"id": "HjdpXH5TcEhginkGwtTaMvVaAUKo7JhDfDgV79rF5QVH",
"name": "newStore"
},
{
"id": "HuWUierPsme17NhC3vvDSpXhRkFLwGvYfgZLHkEknA4z",
"name": "awesomeStore"
},
{
"id": "7VHyAZFxfay5A4dcvoyJPbs7AJ8NCkRwyge3syn9pAd9",
"name": "awesomeStore"
},
{
"id": "BNSkRsSXtinaFnDK7RVEBgy5LVnaouEHguA32L4TN7AJ",
"name": "newStore"
},
{
"id": "A7u557Eg5h5QYuk9Rfo4NGyQMoHyq9yqd44px1oLa6yb",
"name": "awesomeStore"
},
{
"id": "HZ3oumb3R7dLUqRCDKVk7iZ2B3atRaHTjvdSvp4L1yyD",
"name": "awesomeStore"
},
{
"id": "5Ch96DDtC8zkuv9z6DR9qF6vPUSW1rApCB6Qhxcgu9fj",
"name": "newStore"
},
{
"id": "D82aeJPRwnMMa8PLmU136JfmRAir4FkvFSD9P5GKNcuH",
"name": "awesomeStore"
},
{
"id": "CyEvQyP7GALgq7La5eivsevVVNvPU24Sma9LEWjWCZez",
"name": "awesomeStore"
},
{
"id": "EoNiAMGjbEXXNe8fUMZQ3hDhWEsoKJSaBw2igU7SrZHc",
"name": "newStore"
},
{
"id": "9W5vUWwjuWUA9FmPmtN8SYaRrirzzyRsTFFVRGvVSyZ",
"name": "awesomeStore"
},
{
"id": "7wEtpXAPwYrB2PLogh9CyXPrM98LBNsYmgJ4egcKHe33",
"name": "awesomeStore"
},
{
"id": "HFnZr9izfLQMGjJbNtCmLVo2a3eCLf5HEeVdi6vyirWe",
"name": "newStore"
},
{
"id": "x7GNy2M8h6a1wWHis3cWySJbHKsorSE19i9t83orxXm",
"name": "awesomeStore"
},
{
"id": "BdiSsAfG47GbMpZ7BRsbo6MupkB7HP2iWd8ccR4hFYbP",
"name": "awesomeStore"
},
{
"id": "EDZbCU7DYyvzsKcaG6p4bJHNDYiFJ9hFPchCHxUUipsH",
"name": "newStore"
},
{
"id": "8ouSggku7zPZx2vTDUyajaNCCEm1XwTFG8Hw9w3A3eM9",
"name": "awesomeStore"
},
{
"id": "2ANBQEi6XVxxbVCqJgZHqzHeUvY1bkCCUgzD44z1naBs",
"name": "awesomeStore"
},
{
"id": "2tXABwPpwGXV7uEyYQo2aLLZyzK1T7gsWfWmgqJpY5wT",
"name": "newStore"
},
{
"id": "H6ESzE7pCG8dGZqiKvYZ8T8DfgJspAeR9kGin3mALSn3",
"name": "awesomeStore"
},
{
"id": "9LtbXtMvjwR62zeNUhR7HatHmcyG9A1JACTMJB22zTEN",
"name": "awesomeStore"
},
{
"id": "AmmJDcJuDbS5yqomvCyG1h4bG9zkK9JNoyFHkXR7ELjA",
"name": "awesomeStore"
},
{
"id": "J2vzo1G3bWbzhETS7Htnrqv3WuHuHoghhxaTxxph2AHK",
"name": "newStore"
},
{
"id": "4c9hijHDMTDQcEPKLJUsym8RbdtpTc3smUC5UT8d5SjE",
"name": "newStore"
},
{
"id": "FXh9GMT15ioGBSqBPCZS3P8tFWRTLaWddoe6Q6jGY71Z",
"name": "awesomeStore"
},
{
"id": "DXmUC64Ncsf7PPVgL9waVDYmeyyoFb5MDToxLFWZSyGi",
"name": "awesomeStore"
},
{
"id": "5yXGTssnyLSnEtSCNyjuDtE998BTX77zSwa2c7MbetT5",
"name": "newStore"
},
{
"id": "Ds7hQ9pcA5m7ZZtrBaYQPeUfaYbZGYXZreDHsUqJQ3vQ",
"name": "awesomeStore"
},
{
"id": "31sTpr7fYe3R81HGND4JNRoFJLpM5dMTQqLpV4hScwRT",
"name": "awesomeStore"
},
{
"id": "6jbRTTGZByTu9PLXupbkbVHLwJfatC48XQkkEmr7pkhD",
"name": "newStore"
},
{
"id": "8dYbognHKbVLjrw1bFMqPmtHvZVgzmTEuEaafx78v65k",
"name": "awesomeStore"
},
{
"id": "2EypSDMPh8SzFYRGx8fMKxa5E7stg3PjuqsPFTXTqSka",
"name": "awesomeStore"
},
{
"id": "GgB66YgsEdWfwuhqrRQ65v7wopV2C2DJq2gtzLag1Ahe",
"name": "awesomeStore"
},
{
"id": "2wx73U3yEbaqXHbnmFac4z6D1zUfnag48Vg7jJDfdKsU",
"name": "newStore"
},
{
"id": "HpKQhGcdxZGRaKzSXiupFoknbLNnJ98Zvm8sAqCzcHaL",
"name": "newStore"
},
{
"id": "EWr7RbYamU1Waq1uR4k18VaznBwRTRomGzmzbbNskfJj",
"name": "awesomeStore"
},
{
"id": "BNgVsNoLWvSejw3kwpnxNut3ogyETQeBqhKJy2me9mht",
"name": "awesomeStore"
},
{
"id": "DK2ymnBVdSayFaFLH8mKbcZGLGBEA8dDiak5bkNoV1a9",
"name": "awesomeStore"
},
{
"id": "C7WmCHKhtacPcpsZ7ES6isDQbDBaR8LnTEssL8VR71Mk",
"name": "newStore"
},
{
"id": "5uQ4fdjwbE2HiKSM78xkjcad7qHx2KFdAup3qmVwGwi4",
"name": "awesomeStore"
},
{
"id": "72Vpd8U13UGukSPjGbie7u89bm1jTPVPvchJX47foUVZ",
"name": "awesomeStore"
},
{
"id": "Biv8FS6Jx7S2G4DRoLoDztwVoyrXXYWDjTewdQTRryWR",
"name": "newStore"
},
{
"id": "Cjbsw8wto7H4DtzWimSxExoqg3NF8s4oHJTUx74qEKw2",
"name": "awesomeStore"
},
{
"id": "Bi4Wj2HTtaAzdnCWz151ZbG65dcqo712Kdp1d3x511Sw",
"name": "newStore"
},
{
"id": "4UmjjS4W534FdG7j91PbK2MfEALkhhtw51CUVNgrW6nB",
"name": "awesomeStore"
},
{
"id": "91zBz6emzn5CKAavNLpqFDzdDrmafwFCA68R26gxfspU",
"name": "awesomeStore"
},
{
"id": "CyUH7itgmacF2bGAHzjJQaiShdKsencVi5h9ysuLcsak",
"name": "awesomeStore"
},
{
"id": "FVYNtwk1sa54sCMLPU1KQimLD2y2WoM9W7ymg2Q7pa5B",
"name": "awesomeStore"
},
{
"id": "D3vGAeqNQBbQQUcZRyNcJjEtn7E7xST4BABydEBUFmZZ",
"name": "newStore"
},
{
"id": "6hVAComqCfMREsVzPmBSVmyR7PEbBruJmy8q1iVzN5vJ",
"name": "awesomeStore"
},
{
"id": "CYSrbHATy5JFmEuMqFE7RLNyhvTviCfzUn3abzM9taoy",
"name": "awesomeStore"
},
{
"id": "C3pYUEnk8pNhhH65jkQ3asKAfjhZnMq3sm15HGd2r3v6",
"name": "newStore"
},
{
"id": "Gsaasp7wo2oY4kZTG7XpwrMx6yvKj1r3d7Cn2Pt99sHT",
"name": "awesomeStore"
},
{
"id": "EmR9LB7M92SeWWsMQf98BrmHJtTmjjafPx9n6UbNuAN3",
"name": "awesomeStore"
},
{
"id": "ApYLYi4i4HsUorvAKtLSZrE1cojFesbN2W2p24by7kPp",
"name": "newStore"
},
{
"id": "HZUSz4isteuq1AJEbj4hewUKb7NXiLYwMGKMwPk8GtLx",
"name": "awesomeStore"
},
{
"id": "FcHXNBQddCtWyomTzq5iaKfnnTARAZQjSpParpBRCAXN",
"name": "newStore"
},
{
"id": "CvtM9kZ4iTQeKabHRvmsteQVcsc3423K1vAEY4uWFgGa",
"name": "newStore"
},
{
"id": "ETwoc6bMHdYHAxxbFKWKRqg7G99cgLPC28mSgKWZeSuZ",
"name": "awesomeStore"
},
{
"id": "3Wm6N7XrpGjicKw4R9RzF3CVRPJrCXCxw7QV3rtyrhrs",
"name": "awesomeStore"
},
{
"id": "J8f15FxCHTYwZZrV14AZ4LMV8RuFejRT9VTmo2924bX8",
"name": "awesomeStore"
},
{
"id": "Siac3waYLJsD2bSwfkTyvovsgBVmac8PypCxyaYHctw",
"name": "awesomeStore"
},
{
"id": "3sQtaLVoa8or8zkC3SCSXdCuups3bymabCmyaqWMdrwm",
"name": "newStore"
},
{
"id": "73ZHepHKyschRP5jkeUJqwpn4DptLR69287ZS6dnQ8PX",
"name": "awesomeStore"
},
{
"id": "GKadhbYqdY63sTTMcypJCzyp7ibWLSaEf6xxkS6JZoqE",
"name": "awesomeStore"
},
{
"id": "EvUABsnPPPm3RXRxSmcNCTqtVo64YwvNaqB6UJcaYu3z",
"name": "newStore"
},
{
"id": "3zgFaBYy2Sk8gt11HKm39f67cTSkRZ8E1GiyiES4tacK",
"name": "awesomeStore"
},
{
"id": "GiQx8YNY1w5qM7B3GSinLQd1gw9UxQkc1w9Mu9QHcYL8",
"name": "awesomeStore"
},
{
"id": "2uxKcEDPPy2NLqvpGbChjn8udtFeQmXWaw33mE33XCW4",
"name": "awesomeStore"
},
{
"id": "4An5tFTjSRiBUsAFuBC25BQH8gKDJhibXttx1Vk2CCyk",
"name": "newStore"
},
{
"id": "CQZ59owDgUgrU7CMvtx4LxN6bUcyAdiRDoPuiccKHZ6o",
"name": "awesomeStore"
},
{
"id": "DEW3g8T4qtKuioMPWAfUNLSMRsM3QzyXnuVgE5Cfuqas",
"name": "awesomeStore"
},
{
"id": "8FEx3ypSydHbgpFKEenHyHE4gd1qRvW888ev5tE626ew",
"name": "newStore"
},
{
"id": "6jFJ3gtzKWbXTYK7UNK8qqTxMDWZ9pVrBbfh3ey9rdM2",
"name": "awesomeStore"
},
{
"id": "C6BsRWwE7ocPoiA2P7eGkM6ffCHPbYDB6aQ6qLxCBic1",
"name": "awesomeStore"
},
{
"id": "DfJaDTc5MudLFYuFJPswaLw2dN8E981ewRiyM64rv7hY",
"name": "newStore"
},
{
"id": "8FjKFNxrBJtZYbM6JbtP2AT5DzB6ppfwjEiaXGpsgzzH",
"name": "awesomeStore"
},
{
"id": "5ZeRBT9Az5hSuiFQh8ZYUvVkoEUVZtgZxaqoC877gFtc",
"name": "newStore"
},
{
"id": "Exdn68zoYr9rKVLPP9ikgfDT1brnirMEYgSLuBqm9ni1",
"name": "awesomeStore"
},
{
"id": "H6pz5dHpaDvfy5ZoB6RNhqcegb7wU9kJjeRHcayBmrYd",
"name": "awesomeStore"
},
{
"id": "8LSiecBU64WcNERbz6f2FgfkHG2J11baCREkLtqPxLA7",
"name": "awesomeStore"
},
{
"id": "CCsm4haG3kDLd5SNvHw4vnMxizZsgPZfyg8Wrdt2K8XM",
"name": "newStore"
},
{
"id": "9aCck2z9wmGzytmmKBYkM38QJX1kQViy1frMUeePhP5H",
"name": "awesomeStore"
},
{
"id": "FHhjEBasdiGD3CXTKyS9kRSc1ELYWSA9qkMeasLs378H",
"name": "awesomeStore"
},
{
"id": "CxpTR7qWAEXECHadPKXAunG9NPBQqv36y63uGPxp54eM",
"name": "newStore"
},
{
"id": "AT6xthXC4PkAgiXuL3YSs5EWyGMx1zNMXvvNo9yrZUku",
"name": "awesomeStore"
},
{
"id": "BARb94ujrHNJawM92iX6SWwVGDB2PkLJfD1h6TD4rtX",
"name": "awesomeStore"
},
{
"id": "29AF48ho7Wcj4BBd6oKfRTeN85DWCV6UuHHNGqPerMUq",
"name": "newStore"
},
{
"id": "6gU9AxWJDujnX24PN1Z4L7Js7gtx6T78jyZDzfGW9fHo",
"name": "awesomeStore"
},
{
"id": "57kSu6FUmAQw3S4keVhqDyFuZ8qcczzecQAMj5rsb37j",
"name": "awesomeStore"
},
{
"id": "Eo6ewaU5j1G3THqEvbUsZqtqWJrvGYHtRGa23EkAga7r",
"name": "newStore"
},
{
"id": "B6ScHt9m1pg4ZSkss337pQYRZu1bNRcBZiULojU2sRih",
"name": "awesomeStore"
},
{
"id": "5PpoqcvJR61vsQVbhYXHF8riLteax1GSvSPHDMZ5WTyw",
"name": "awesomeStore"
},
{
"id": "Fow3q4HHLjCWtZa46ZCc917CkVYEYUPndZRqBssDrfkX",
"name": "newStore"
},
{
"id": "Cbf4L89EsssfN9DuLYgwp1L9J65aVntFFtEpp5vEb67T",
"name": "awesomeStore"
},
{
"id": "H346c7PzzejYc2cY5BsVnmWMw6Ww3tbhHYXdooPLmEkB",
"name": "awesomeStore"
},
{
"id": "3nbGRqCngXJnxDVGjuZbdD5i3Y4KUT45hNCA2e6fBWq4",
"name": "newStore"
},
{
"id": "GASJtDRBkz7fEjzMyrrTqq2bvP7REuYwLCYidxF94Fd7",
"name": "awesomeStore"
},
{
"id": "48igeAdYeVRVgcudrWiNtWepXckF2Q8TYn9Kg4EQe3QP",
"name": "awesomeStore"
},
{
"id": "HpUftN3f8eYGiCHLkG6S5M6CgTwzN5xVzxVm4PAdwPoF",
"name": "newStore"
},
{
"id": "2LrP2XNGUKYrS1WgrgZJBvJmkEDn9wM1Z2tBBhq6fWmV",
"name": "awesomeStore"
},
{
"id": "3sFuQK2W6Bvzr5EzmQfFTh3iPwHt1Jcsatfhn5c4CvYa",
"name": "awesomeStore"
},
{
"id": "5c5FV3B1hgeb76B1biSsfYtTL8JpN9Nt7auuEuAE35HK",
"name": "awesomeStore"
},
{
"id": "23UYHSdNAKXoYfAzhGbYhMZNzKW1XSj9W1tfHheNFAez",
"name": "newStore"
},
{
"id": "72Xn12NVWj4McTiFLE8hsrEZpzHuhHimow46PhGqwBNW",
"name": "awesomeStore"
},
{
"id": "6zspEwK8QmYTJ9TPfZAJvdzgrPSNNezLWpb7vz2EC71s",
"name": "newStore"
},
{
"id": "J157eknJgJh88j43ND8FLo7wBF1aQsDnz83fX46ZKude",
"name": "awesomeStore"
},
{
"id": "CHZkoR6SbiTuLzuDrmsYDSDqvu6ALxVS4kkw6FrmKzT2",
"name": "awesomeStore"
},
{
"id": "GidZr6bjz2uskRJTRjAwKxs7zA9Krpkg7LZaoq1LcpR5",
"name": "newStore"
},
{
"id": "9i2ytjrByAGFSdmR2rmBHkXMTinn7Rt51gxLLsv561me",
"name": "awesomeStore"
},
{
"id": "Ab2DnVaHsUsiuSE4QTAPWH7P5VvrX1TLKXbuckUVM6uq",
"name": "awesomeStore"
},
{
"id": "CMxX7ghA5YuXEPVgrBz2Y8MZAJ9cTPCqdecETS9VuaeX",
"name": "newStore"
},
{
"id": "EXcRavcKtTjKW3WJzWLCrcsisbA4KkuT4wHav24Tqby7",
"name": "awesomeStore"
},
{
"id": "Do5wFqNDSXHg3XDFC4oczthv2QKFUPjwAfDt6Gnw97rF",
"name": "awesomeStore"
},
{
"id": "8cksNqsWyRXhQg8ZyLBLbW2qfDyhdjxz3NU9U7eRve4F",
"name": "newStore"
},
{
"id": "FCsayZ2NoTCSLfpRpRKFUjMaiKs9hihLrCUU3nnhQfnJ",
"name": "awesomeStore"
},
{
"id": "Boq88pahjFf8A6up1EKxNciuu3Eymixu8c9cg7G5BD9S",
"name": "awesomeStore"
},
{
"id": "44LJBWdeYg4DedbSyxBK679vRATQB6YF3Nzeuut3PVix",
"name": "newStore"
},
{
"id": "2feGWe32VYk8abiJ4tAx4B9LQQEnYZMNVeqV2RTVDHwP",
"name": "awesomeStore"
},
{
"id": "DFFjxA5v5sSyQCnSKsD6ub3MaZq7o9CWjgBSjU4iqx92",
"name": "awesomeStore"
},
{
"id": "6HJdptZ4pay2yafCZENNJxg8sX3DzrhAbJEscJatqB24",
"name": "newStore"
},
{
"id": "5rc5eZtjfZfLCaveSiprwzVcGVW2mjicNxi1Kn59zE9p",
"name": "awesomeStore"
},
{
"id": "2AXqVZkKB3sLPzXtR8hxnNc3zHa1kymUCnQi888ZRZCU",
"name": "awesomeStore"
},
{
"id": "FQwBGAz8u86KTuLarRtxBPdyuNqGuU4CgU9skBaSqnUk",
"name": "awesomeStore"
},
{
"id": "i3y7hQYaH4kgBQ1K2KpVDwEfQPDuzZdbgnkdRyJNeHZ",
"name": "awesomeStore"
},
{
"id": "CniDbWLBJdckgGwL58vXCPqo48ozPsJHX7xWfG6HRDvY",
"name": "newStore"
},
{
"id": "5VYy1FfKGeFp4decNggSNTF3Rw1REFh4Xo5vTGm6iHjN",
"name": "awesomeStore"
},
{
"id": "Grz58cn5qCrb45CNemAjWNoPsVyYCdBhth8sLvvCConN",
"name": "awesomeStore"
},
{
"id": "3KHroCFqEEqeBHgzRmFkA7UpoCpVTGYFMFfx7FLia5rc",
"name": "newStore"
},
{
"id": "8HrR32WvHJcDuJWwfTCJpe35kFNdmaxtZ1TmNsqbyre1",
"name": "awesomeStore"
},
{
"id": "3hnjfg9P9ePQngcJYfha4jUFi7Bz57tin1LYTrq1MkMk",
"name": "awesomeStore"
},
{
"id": "WwgmEkwTe2xQ6MR18s8nT3YEm3YNGPWN4RVMC13gdW4",
"name": "newStore"
},
{
"id": "2CTXNCDEQkQ67dZRY7BWxT4rq5cMutkPQVMZe7C7CWaK",
"name": "awesomeStore"
},
{
"id": "EFysZ9fLH4UqCHXY37sAgk1f4KYZ7HzoazLMFihhgTyZ",
"name": "awesomeStore"
},
{
"id": "BTKpWzP6K5u9PwqRv8GX8Yzcvx8cgArhPVpg4z8ZriD6",
"name": "newStore"
},
{
"id": "5RMmtzCFrervaJtcWGwa8j4TW94HZ9DPcp8V9ttkrvEM",
"name": "newStore"
},
{
"id": "8DTSFGyub9ezS7BAzRZgGoTWXvDruLyu5ztrrQiRrpeZ",
"name": "awesomeStore"
},
{
"id": "2ByY4eSjqmDvdjewFgMsoJyDJEQQDSfZgXo5ed9QjtLu",
"name": "awesomeStore"
},
{
"id": "9EPfh32WULgp4H1HdJ54SYDDkFnasAjUpmPziJsywNEi",
"name": "newStore"
},
{
"id": "AuRqV5MPJ3afAJaKiMF8sae7SbzLfEJTCR2PMXcFjrod",
"name": "awesomeStore"
},
{
"id": "J5EQfqDbTE8gHH8GTv7JWkECFen1VrqxHaKCfLsg2xbf",
"name": "awesomeStore"
},
{
"id": "3JrAyCNhaehaWCakR6RDiWx7TSRTnJAxnGy5iDKG2XXd",
"name": "awesomeStore"
},
{
"id": "FHSNF4qWQidJpgv9WQ7P1ZmRj2EWaqHuFFMAS99JnDVp",
"name": "newStore"
},
{
"id": "GLBqqsAhytS9DdfU5d87FH4jHignrM99vcqUMmS21Jib",
"name": "awesomeStore"
},
{
"id": "EV9o3wDQ43kyWsW7ewsdA6urztv5sJpc2kypWjiH99LC",
"name": "newStore"
},
{
"id": "2ZtiTouv54qznJAWfEyfvLnLL38PGSLu1B2Y5K8HUzGt",
"name": "awesomeStore"
},
{
"id": "8Co3XDZPs45e9aNuvCUYSZyWxKTa1p2bzHtLVgxBg8c",
"name": "awesomeStore"
},
{
"id": "5gqDbvj3caLiPzqjrBhTFZmMtm6dYUjjrjB7rVXbVi5b",
"name": "awesomeStore"
},
{
"id": "2p5QLFQihFTkY2MecUA7bMJSkiBbMutA2eZe3pYKjeaL",
"name": "newStore"
},
{
"id": "EKBr9cVaL3n7HwbTB72KNgPGxbsvPCBY4qtXkGt4mmgj",
"name": "awesomeStore"
},
{
"id": "J9cbGcdpL281GgxDnzvkZWSBiZYSTAJ6mjh1ov54vrEv",
"name": "newStore"
},
{
"id": "FP7sfsWt2CBsSBVuzoT2fHCsa5juhqYApsnq1pF25AqU",
"name": "awesomeStore"
},
{
"id": "47Ppee5mur3EigeQbrSVVMVwV2iQaBPXAwHRmYHK3tST",
"name": "awesomeStore"
},
{
"id": "2sRLV4fttfZyaH511hmNJTYD6Jd836TDNUbQEfWTVTBz",
"name": "newStore"
},
{
"id": "Csmg38M7MCm4PhT4ryzJsP1CM82WNn9wu952mBWWRoUf",
"name": "awesomeStore"
},
{
"id": "8gaNg4Eiku52JkXZXK7TH58WcsRjmzvMo9E5ZRZQiQGD",
"name": "awesomeStore"
},
{
"id": "3D5GTzwzsNzqNda4oPfhKQz3vDQiW3jqdkgeVDFJFcQp",
"name": "newStore"
},
{
"id": "BszYgvKrxMbfGGEa7xXpL1RtsKyKEniVM9cCxenVEf3r",
"name": "awesomeStore"
},
{
"id": "FVN87VqvowrbGgTQk496S5KkLsHk7bDUPNHPdzyj9M9v",
"name": "awesomeStore"
},
{
"id": "EmeroTSp1nvWq54Sn2wqppiCtMPzbEmukeRQe5cZbWXN",
"name": "newStore"
},
{
"id": "8qHgWmnp4Z3YfAaK2setNNegoy6idUvebrWJerNC7TK4",
"name": "awesomeStore"
},
{
"id": "BCM7KJ7LseEVesheTMCdJ72jrGZY8aPr1iNxVtKsRF8R",
"name": "awesomeStore"
},
{
"id": "86sAku6TnMr8RFcSE8gJyAWTKa8grjk7ZjE1pWiMM1pT",
"name": "awesomeStore"
},
{
"id": "6SfMisRTLfAk3mtcqq6voLmHpNzSujZVSnv1hMYMTmyt",
"name": "awesomeStore"
},
{
"id": "ZZxvCgvaPG2aHTYuvymrW5BkvoQeec6xGevaoAnKhtC",
"name": "newStore"
},
{
"id": "3ZWsQm5ZnwQh866BJx7eyPd9o7R5tVa5fuSFNVdxbt4h",
"name": "awesomeStore"
},
{
"id": "GzbrRBZXBkzC27fBiNpT21SN2M1cwvXBUYQySw4q5Vrs",
"name": "newStore"
},
{
"id": "2pRbtQaM4dpexHJsKnLqS14rUbnQSsH9uRciuy8fCnGz",
"name": "awesomeStore"
},
{
"id": "F9v1HSYtcCZCPby9ZDvbqyn4w1kx222YZW3bfzHZbFMo",
"name": "awesomeStore"
},
{
"id": "3F4TbmyJsAgb33JgJHQxgknft4wcc9Y2Mc2e38DbmkEz",
"name": "newStore"
},
{
"id": "GVUqdyZt7quyzbTEhtbbMh6JY8Nxuh2j7pvr3wubwjjv",
"name": "awesomeStore"
},
{
"id": "GRWzZQYV4uQbVtb2eFLK1k4wU45b1PAG6o9RWC5A3ngi",
"name": "awesomeStore"
},
{
"id": "AeGbPUqU8zAhUPqK3X4csGyMt6BXW4QhDF3Ap6gnxK3N",
"name": "newStore"
},
{
"id": "A4rdeQEJGyQ2ToJXCAchNzGDKN8MqnfeXs25ZSPK2Ego",
"name": "awesomeStore"
},
{
"id": "FG2CgAs2jRTb479kuVntXNLCVQzH8MPzQ7e8Lnjbo9jb",
"name": "awesomeStore"
},
{
"id": "HBowjBwxbqgzKB6neY32mZ6rYiw1Pgp4VmtG1xaTxQYk",
"name": "newStore"
},
{
"id": "5YmU6JakioYV536Ti8U7GYXBAQxRfzNrFVyfCC1VAzMX",
"name": "awesomeStore"
},
{
"id": "HJXxCTeFgagTHLQKXjmat1HvTD5YCvU8iLCVBovw6V3z",
"name": "awesomeStore"
},
{
"id": "DRvT9rApWiLJnFT2ZwkWqW6jwA2gEph3ydKTY2cgz68o",
"name": "newStore"
},
{
"id": "EyhGReaGRxywkq9iUnRTxG1unAZbqnUA7CFdyfvEGs8q",
"name": "newName2"
},
{
"id": "3omAanUEhtWNjkwDX9UscDFHcBxZRqDGs66XdHYU2EDZ",
"name": "awesomeStore"
},
{
"id": "DuAQDD5paKKkH1vhesLWrSBVY7wU86VtVQivSihWVtLA",
"name": "awesomeStore"
},
{
"id": "G7pxq7GAYpBYGpGXnXPaQxHdbVZD9JreM4vpb4Nfpb59",
"name": "awesomeStore"
},
{
"id": "7LWyDvaXiicXdDBMuBif4zUh12tbPSqF6o23FPSX4uiw",
"name": "awesomeStore"
},
{
"id": "ALWhkesF2qYWsyEqHrAucC5kegB7HSKibwrRYX4e4Kur",
"name": "newStore"
},
{
"id": "A7zfRUQ5eUA5zR58W7K1som1Nz7RczPCkct1RYdid8hG",
"name": "awesomeStore"
},
{
"id": "4byvwngLxagmBdYGM1NpddichkZU6d4eeY7yPpCR3N7t",
"name": "newStore"
},
{
"id": "hJME6jHV37JAFhvUXnNRncEx6MMvVc6zLZGSJs7MQTQ",
"name": "awesomeStore"
},
{
"id": "4JSejnqKpKPZFrQcuVWTuRCS23BohY8aDkFoqDVmbHXp",
"name": "awesomeStore"
},
{
"id": "F51WAAeH2ru31feQDsYxgiY5MMPjrN8As9U4tBNaKa6w",
"name": "awesomeStore"
},
{
"id": "DXzP3b3EhEUCSWhmRZhpJDHSrC9zm1c7wjSE7aMwFKtG",
"name": "newStore"
},
{
"id": "2oZqwNkFKMRpHpP5foiQ3ccXE7bZF5tYL1fbJgdZoAfq",
"name": "awesomeStore"
},
{
"id": "EsHDWQWaMG4EJXzhUuuaDhyVT8ymovBr3kgUnBqBM3k4",
"name": "awesomeStore"
},
{
"id": "74b11jAky9QhfjkSiVj75kN9ejzA1jjcL86Kfr9jYp3B",
"name": "newStore"
},
{
"id": "CuM2DfmNav7681Uih7Gcrb4FDdwsUSU9K6am4epE5LVK",
"name": "newStore"
},
{
"id": "p3LVZ5a5mkVXB3cpvxAbxfX9UyD9rMYH58cqxEKBpmh",
"name": "awesomeStore"
},
{
"id": "96NB6re2oBX9gG2x1bjhhDAjR6PjcRaSgM5j8JobnzW8",
"name": "awesomeStore"
},
{
"id": "9v3wdTVvyFjjNzqKFz2yJzN968FLaFH615qUqWtoTw3D",
"name": "newStore"
},
{
"id": "CwLGPpmmmKnmwJLkFCUtqcqLpMAVfq9NCgN2o6Lfr2R1",
"name": "awesomeStore"
},
{
"id": "EBmJ9dS7UdFeYrhTVCTB158SpT1Y8yRcGvA3GtU3LcRP",
"name": "awesomeStore"
},
{
"id": "6yd2wJMCCkKmEwELB82y7eRv5RyfUPJD1NpXpSyzSB9r",
"name": "awesomeStore"
},
{
"id": "GunNVZexp3ai1V9kRhXqtC2mxSH6P6DeWPtUSEpJkPve",
"name": "awesomeStore"
},
{
"id": "2Ctsm7M8Un1eMg7QPnerrXM326NaqeRAA8bM9L2AAooP",
"name": "newStore"
},
{
"id": "FWRVyACwWZGkUkbDRh89hEKVZW3XsVoTAKx6dFDCDhXw",
"name": "newStore"
},
{
"id": "Gr2vKaZgraeSTb357XGpFvqXAP5xeYbGVAyjUyPVsZ9P",
"name": "newStore"
},
{
"id": "BjdrAxJJ7jdoMYVGjCa4xzSusFyCAYD8vEW1aaStCv6v",
"name": "awesomeStore"
},
{
"id": "9f4JAutKfBDEwntDuvaZsqzUR7pKgrmB2sRuGJpyVjq7",
"name": "awesomeStore"
},
{
"id": "DUzcBpz2r7DgkGHyowLZtCYyyeyBMuAu8owp5AMgWogE",
"name": "awesomeStore"
},
{
"id": "9vznUfX3pdRyGAwEtQ762498tmHe28Sd1Gddi7bCqSaV",
"name": "awesomeStore"
},
{
"id": "2TPR11dULpzKPmKV1WJBLfm18QPp8hAdKvrcq18L194i",
"name": "awesomeStore"
},
{
"id": "7emeSZ1BsNR4cM4J8WRAPWcnrt64ryaDQYthvptKfhSr",
"name": "awesomeStore"
},
{
"id": "FmuuqkG7YEaxER4MfyrB6KErrj474fFHzVieRPFEGc2T",
"name": "newStore"
},
{
"id": "2ZCUh65PJoNPDtGtcafQLaY2FGL3Y3XLAZqmka8y6x4E",
"name": "awesomeStore"
},
{
"id": "7r5NHZB1HjPPVgtkUfAv33Mc32Y6V5wFEhM75KhLB3Jy",
"name": "awesomeStore"
},
{
"id": "AStie2Ya2V4Aj4w4TexEtnXsUuSqd2FTaV2D4dZ1aAPV",
"name": "newStore"
},
{
"id": "2vdYfjqbKtvsc9vWeB2xRuRJoTLTKGnRdf5SyURaxrQt",
"name": "newStore"
},
{
"id": "AaTFMV7qnDc4dvdS7kz53NRMuEcYEw3Z1Ys6iFRhTPen",
"name": "awesomeStore"
},
{
"id": "DxfpMnnDWMcUVKFp52nwEr7fYK7Lwkk3Yqg7ofPg5yFh",
"name": "awesomeStore"
},
{
"id": "AdrAPsr6f41tczqxB48GTcUinXnjtXayEFfceS4k7geG",
"name": "newStore"
},
{
"id": "3uEsiMckep28sfrMZsCFUvxZ5zK2MuywGCz8xY4rPA11",
"name": "awesomeStore"
},
{
"id": "6PdgDg4HQmfg8rLUqW39kvqF7bVwfrhaRVKEAtv4AAv4",
"name": "newStore"
},
{
"id": "Br2GmEcpkFncEGSi2P7aNWWhu2xWva6qGnmyi8GixkDN",
"name": "awesomeStore"
},
{
"id": "9hoH56D858ZQzmMqhBAmaNNecwy7Emgynmyrqg5PfJXG",
"name": "newStore"
},
{
"id": "7zoazoPLAS7TTNgVeDK1Pfjdi1Ws1zYV86j9o34Y2DCd",
"name": "awesomeStore"
},
{
"id": "7wmk5P7HExL67umuvnc46wRXFdZqZY8F8gpBxvo8nqJ1",
"name": "awesomeStore"
},
{
"id": "2JsBW8vnzCKUH7DiuWrMAdnrkg5n69b6a6BaHXREFFp6",
"name": "awesomeStore"
},
{
"id": "AFg4og8GsDgEynNgm6y93h1EJH2Z3V6ZJigzgmgGXyay",
"name": "newStore"
},
{
"id": "9fVuUeQUuJjoNG71RGiA3Nvo5cC8NjwpRZqHQwuq7gse",
"name": "awesomeStore"
},
{
"id": "CxJgvPM1hkpuRCDQByLuWfhswxVdwS6Kk5bruUFj29zU",
"name": "awesomeStore"
},
{
"id": "2hahpmesJKHRpN9RiFMaFu2mTciq6QMbe19qATHsFshj",
"name": "awesomeStore"
},
{
"id": "6TJeJ4yM5hGnDi3qyo8C17LVfj2CBA5jkpb61YyzgPHV",
"name": "awesomeStore"
},
{
"id": "2NkvKkCr37ZudUSMwRAZaqr2qozsk8fk3Q3i2AUQCbvC",
"name": "newStore"
},
{
"id": "EpWCHTn9icwQw4XaJHh2KTTcBBaiQ5JSjxgAi7q3o9L9",
"name": "newStore"
},
{
"id": "Ee2htC8ThnvqCnVJ1LPfH2PP8LHrK3uNoF6Ft8hsribQ",
"name": "awesomeStore"
},
{
"id": "HGqngwt5GrawjKfhBT5i1GFwMrefzZxK6UQVCzkGTnUo",
"name": "awesomeStore"
},
{
"id": "9Kh1jfFwXJELHcaxEfrrzNTnVgoh7PvX17XLRGzDaCjA",
"name": "newStore"
},
{
"id": "2k3fmEoT4kdQrv2zqpHA5cpMATcuBf1godTeTXeJ8MV8",
"name": "awesomeStore"
},
{
"id": "3ip1iknah8cbZLqyDgvNjFeNxzL14HHi1UMaVMTHEVb2",
"name": "awesomeStore"
},
{
"id": "5WuwVpnwNwW8g7W4aXfUU6Df46rJsDhr6QEom1HveZbD",
"name": "awesomeStore"
},
{
"id": "Bj2tkRvjB7Nwt2KNHCVD8kFziHasEQ1ZLAH2ZE5r9Gth",
"name": "awesomeStore"
},
{
"id": "6DmXcHzf6FUZQjJwLKmxfVMXEoj38nYHdBFU5EPABErQ",
"name": "newStore"
},
{
"id": "Dydt94XzBnd5SorQZPYRAXTNoMCScFbB67EKRSumQZFM",
"name": "awesomeStore"
},
{
"id": "7q7Y8D9sauLGHvMsehNDfWNXC8yLsUM6QT8BXTrMrJb",
"name": "awesomeStore"
},
{
"id": "9kncAMw4uyHjW6JEpmw1iZFFExeqbGhYtkyQjtauizhg",
"name": "newStore"
}
]
}
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc was successfully removed"}
{
"name": "awesomestore"
}
{
"name": "newName2"
}
POST /v2/stores-list
List All Stores ID's and Names
Any valid trade
that belongs to the account would work, store ID is not private and visible in invoice status
POST /remove-store
Remove a store
That request does work only with
password
of the account, so the store's manager is not able to remove a store, even with posssion of thetrade
andtoken
for the store
POST /v2/get-store-name
Get store name
POST /v2/change-store-name
Change store name
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
name | body | [string] | true | store name |
For /remove-store
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
store | body | [string] | true | store id |
Shopify Integration
curl 'https://api.forgingblock.io/v2/add-shopify-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&source=https://username.myshopify.com'
curl 'https://api.forgingblock.io/v2/add-source-shopify-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&source=https://username2.myshopify.com'
curl 'https://api.forgingblock.io/v2/remove-source-shopify-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166&source=https://username2.myshopify.com'
curl 'https://api.forgingblock.io/v2/get-shopify-store-source' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&token=769861935592995096388092186007720621311273005537151914971703166'
POST /v2/add-shopify-store
Add Shopify Store for integration (you run this only once on creation), after which you should use /add-source-shopify-store
even if removed all domain URLs
Correct domain name URL examples: https://username.myshopify.com
, https://username.myshopify.com/
, http://username.myshopify.com
, http://mystore.com
, https://mystore.com
, https://mystore.com/
Incorrect domain name URL examples: https://username.myshopify.com/someproductlocation
, https://mystore.com/someproductlocation
, mystore.com
, username.myshopify.com
, https://username.myshopify.com/?_cd=2263d5ac8bde3e6f61ccba03711adc43d0a1cfdcdaaf98536a99c22e3286844c&_uid=61409788069&preview_theme_id=
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
source | body | [string] | true | Shopify Store Domain URL |
POST /v2/add-source-shopify-store
Add Shopify Store Domain URL for integration
Correct domain name URL examples: https://username.myshopify.com
, https://username.myshopify.com/
, http://username.myshopify.com
, http://mystore.com
, https://mystore.com
, https://mystore.com/
Incorrect domain name URL examples: https://username.myshopify.com/someproductlocation
, https://mystore.com/someproductlocation
, mystore.com
, username.myshopify.com
, https://username.myshopify.com/?_cd=2263d5ac8bde3e6f61ccba03711adc43d0a1cfdcdaaf98536a99c22e3286844c&_uid=61409788069&preview_theme_id=
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
source | body | [string] | true | Shopify Store Domain URL |
POST /v2/remove-source-shopify-store
Remove Shopify Store Domain URL from integration
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
source | body | [string] | true | Shopify Store Domain URL to remove |
POST /v2/get-shopify-store-source
Get and Array with current domain URLs for Shopify Store integration
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
Account Control
Account Management
curl 'https://api.forgingblock.io/reset-password' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io'
curl 'https://api.forgingblock.io/change-email' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&newemail=test2%40forgingblock.io'
curl 'https://api.forgingblock.io/change-password' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40forgingblock.io&password=AeNu3miG7nahg&newpassword=myhardpwdAeng2uabohcehhh'
// Reset password
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'email': 'postman@fastmail.de'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/reset-password',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
request(options, callback);
// Change email
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'email': 'postman@fastmail.de',
'password': 'AeNu3miG7nahg',
'newemail': 'test@forgingblock.io'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/change-email',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Change password
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'email': 'postman@fastmail.de',
'password': 'AeNu3miG7nahg',
'newpassword': 'myhardpwdAeng2uabohcehhh'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/change-password',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
/* Reset password */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/reset-password');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'email' => 'postman@fastmail.de'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Change email */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/change-email');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'email' => 'postman@fastmail.de',
'password' => 'AeNu3miG7nahg',
'newemail' => 'test@forgingblock.io'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Change password */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/change-password');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'email' => 'test@forgingblock.io',
'password' => 'AeNu3miG7nahg',
'newpassword' => 'myhardpwdAeng2uabohcehhh'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
// Reset password
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40forgingblock.io}`)
req, err := http.NewRequest("POST", "https://api.forgingblock.io/reset-password", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Change email
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40forgingblock.io&password=myhardpwdAeng2uabohce&newemail=test2%40forgingblock.io}`)
req, err := http.NewRequest("POST", "https://api.forgingblock.io/change-email", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("DNT", "1")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Change password
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40forgingblock.io&password=AeNu3miG7nahg&newpassword=myhardpwdAeng2uabohcehhh}`)
req, err := http.NewRequest("POST", "https://api.forgingblock.io/change-password", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"success":"Check email inbox for reset link"}
{"success":"Check email inbox for email change link"}
{"success":"Password has been changed"}
POST /reset-password
Used to reset password
POST /change-email
Used to change email
POST /change-password
Used to change password
Password requirements:
Do not use common sequences or your private details, add another word or two, consider using lowercase and uppercase and special symbols
- At least 8 characters in length
- At least a zxcvbn score 1
Parameters
Parameter | In | Type | Required | Description | Scope |
---|---|---|---|---|---|
body | [string] | true | reset-password, change-email, change-password | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) | change-email, change-password |
newpassword | body | [string] | true | new strong password (zxcvbn score >= 1) | change-password |
newemail | body | [string] | true | new email for password restore | change-email |
Account Informaton
curl 'https://api.forgingblock.io/v2/provide-business-details' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&business=forgingblock&url=https://forgingblock.io&contact=test%40forgingblock.io'
curl 'https://api.forgingblock.io/v2/update-business-details' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&business=forgingblock&url=https://forgingblock.io&contact=test%40forgingblock.io'
curl 'https://api.forgingblock.io/v2/get-business-details' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
// Provide Business Information
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'business': 'mybiz',
'url': 'https://test.com',
'contact': 'test@fastmail.mx'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/provide-business-details',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Update Business Information
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'business': 'mybiz',
'url': 'https://test.com',
'contact': 'test@fastmail.mx'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/update-business-details',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Get Business Information
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'trade': 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/get-business-details',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
/* Provide Business Information */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/provide-business-details');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'business' => 'mybiz',
'url' => 'https://test.com',
'contact' => 'test@fastmail.mx'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Update Business Information */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/update-business-details');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T',
'business' => 'mybiz',
'url' => 'https://test.com',
'contact' => 'test@fastmail.mx'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Get Business Information */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/get-business-details');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'trade' => 'A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
// Provide Business Information
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/provide-business-details"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&business=mybiz&url=https%3A%2F%2Ftest.com&contact=test%40fastmail.mx")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Update Business Information
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/update-business-details"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T&business=mybiz&url=https%3A%2F%2Ftest.com&contact=test%40fastmail.mx")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
// Get Business Information
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/get-business-details"
method := "POST"
payload := strings.NewReader("trade=A6mjm8fgDspPdoeTsXUqsLmKKA3UmNNssPA547GjcEG3T")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response examples:
{'success': "New business information received"}
{"business":"forgingblock3","url":"https://api.forgingblock.io"}
POST /v2/provide-business-details
Provide information about business (single run, used during Dashboard setup)
POST /v2/update-business-details
Update already provided information about business
POST /v2/get-business-details
Get information about business
Parameters
Parameter | In | Type | Required | Description | Scope |
---|---|---|---|---|---|
trade | body | [string] | true | trade agreement id | /v2/provide-business-details , /v2/update-business-details , /v2/get-business-details |
business | body | [string] | true | business name | /v2/provide-business-details , /v2/update-business-details |
url | body | [string] | true | website information | /v2/provide-business-details , /v2/update-business-details |
contact | body | [string] | true | store contact email | /v2/provide-business-details , /v2/update-business-details |
Integrations
E-commerce Plugins
For actual e-commerce integration information check Crypto Payment Plugins for E-Commerce page with plugins and documentation.
Library
If you need a library for your code check those:
Node.js library: https://www.npmjs.com/package/forgingblock.js
PHP Library: https://github.com/forgingblock/ForgingBlock-php-lib
IPN Response Example & Explanation
You could check guide section Integrate ForgingBlock Payment Gateway to your own applications and backend to get example how to handle IPN.
Also, take a look on IPN Code Sample Repo
Checkout has support for notifcation
param for IPN URL as well
Client-side Application Integration
For the client-side applications cookie authentication could be used.
The cookie is valid for 6 hours and it allows to avoid providing email
and password
or trade
and token
continuously for certain API calls.
However store
param should be provided instead of trade
and token
You could try to call endpoints with or without /v2/
to the endpoint name.
Also, to avoid CORS issues include Origin
header with your domain to the endpoint request, along with cookie that you received from /v2/signin
curl 'https://api.forgingblock.io/v2/signin' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' --data 'email=test@forgingblock.io&password=myhardpwdAeng2uabohce'
curl 'https://api.forgingblock.io/v2/signout'
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
'email': 'TEST@FMGUY.COM',
'password': 'myhardpwdAeng2uabohcehhh'
});
var config = {
method: 'post',
url: 'https://api.forgingblock.io/v2/signin',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
// Sign Out
var axios = require('axios');
var qs = require('qs');
var data = qs.stringify({
});
var config = {
method: 'get',
url: 'https://api.forgingblock.io/v2/signout',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
/* Sign In */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/signin');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
'email' => 'TEST@FMGUY.COM',
'password' => 'myhardpwdAeng2uabohcehhh'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
/* Sign Out */
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.forgingblock.io/v2/signout');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/x-www-form-urlencoded'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
// Sign In
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/signin"
method := "POST"
payload := strings.NewReader("email=TEST%40FMGUY.COM&password=myhardpwdAeng2uabohcehhh")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
}
// Sign Out
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.forgingblock.io/v2/signout"
method := "GET"
payload := strings.NewReader("")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Response examples:
{
"success": "Sign In success",
"business": "Wptest",
"url": "https://test.com",
"contact": "test@fastmail.mx",
"logoXnc": "false",
"logoOwc": "false",
"logoKsm": "false",
"logoZina": "false",
"user": "U2FsdGVkX1/FMeB5TOdE2IXgMbpwirjEqa71hs8KDKYzQCbyavWFrIQoHU5TnmyfPMz7rGNnv1zR+IpxBEIejg==",
"modern": "true",
"classic": "false",
"paymentFormRun": "true",
"storeDetails":{"stores":[{"id":"5THSXBzKYsZBMpUwxDJzbgga3b5qvYYGCKHtqkUzutyW","name":"Tesst","image":null,"multi":true}]}
}
{"success":"Sign Out success"}
POST /signin
Sets 6 hours long cookie
For testing purposes /test/login.html webpage could be used to login (it uses https://api-demo.forgingblock.io
baseUrl).
Cookie could be find under name __forgingblock
in cookie store
GET or POST /signout
Sets expired cookie
Parameters
For /signin
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
Legacy V1 Dashboard Cryptocurrency Support
- Legacy V1 Dashboard (Single address wallet) https://v1-dash.forgingblock.io
Acceptable for the small merchants and for the private use. Some manual resolving from the merchant could be required, when there more than one person pays at the same time on the same address.
Consider to register new account, to avoid mixing payment methods with you regular account, if you need to use it for some from cryptocurrencies
Support: