Keys for testing
Base Url
Review Pending FIO Requests Example
The following is an example of how to get, approve or reject pending fio requests. Use the FIO Testnet Monitor to register your Testnet private/public keys and fund your Testnet account if you haven’t registered yet.
Import
Importing using commonJS syntax is supported by Node.js out of the box:
const { FIOSDK } = require('@fioprotocol/fiosdk');
const { fetch } = require('node-fetch');
Step 1. Initializing the SDK.
See Using FIOSDK
page.
Step 2. Get pending fio requests.
const { requests: pendingRequests } = await fioSdk.getPendingFioRequests()
Step 3. Approve FIO Request.
Now you could create a transfer and call recordObtData
to mark request as approved.
const { fee: transferFee } = await fioSdk.getFee('transfer_tokens_pub_key');
fioSdk.returnPreparedTrx = true
const preparedTrx = await fioSdk.pushTransaction(
'fio.token',
'trnsfiopubky',
{
payee_public_key: pendingRequest.content.payee_public_address,
amount: FIOSDK_LIB.FIOSDK.amountToSUF(pendingRequest.content.amount),
max_fee: transferFee,
// tpid: "[email protected]"
}
)
const transferResult = await fioSdkPayer.executePreparedTrx(
'transfer_tokens_pub_key',
preparedTrx
)
fioSdk.returnPreparedTrx = false
console.log(transferResult.transaction_id);
const { fee: recordObtFee } = await fioSdk.getFeeForRecordObtData(pendingRequest.payer_fio_address);
const recordObtDataResult = await fioSdk.genericAction('recordObtData', {
fioRequestId: requestId,
payerFioAddress: pendingRequest.payer_fio_address,
payeeFioAddress: pendingRequest.payee_fio_address,
payerTokenPublicAddress: fioSdkPayer.publicKey,
payeeTokenPublicAddress: pendingRequest.content.payee_public_address,
amount: pendingRequest.content.amount,
chainCode: 'FIO',
tokenCode: 'FIO',
status: 'sent_to_blockchain',
obtId: '',
maxFee: recordObtFee,
})
console.log(recordObtDataResult);
Rejecting FIO Requests
FIOSDK has rejectFundsRequest
method to do it
const { fee: rejectFee } = await fioSdk.getFeeForRejectFundsRequest(payerFioAddress)
const rejectResult = await fioSdk.rejectFundsRequest(requestId, rejectFee)
console.log(rejectResult);
Final code
The following summarizes the steps to get and approve pending FIO Request:
const { FIOSDK } = require('@fioprotocol/fiosdk');
const { fetch } = require('node-fetch');
const fetchJson = async (uri, opts = {}) => {
return fetch(uri, opts)
}
const baseUrl = 'http://testnet.fioprotocol.io/v1/';
async function main() {
const privateKey = '';
const publicKey = '';
const limit = null;
const offset = null;
const memo = ''; // optional
const fioSdk = new FIOSDK(
privateKey,
publicKey,
baseUrl,
fetchJson
)
let pendingRequests
try {
const { requests } = await fioSdk.getPendingFioRequests()
pendingRequests = requests
} catch (e) {
console.log(e);
}
const pendingRequest = pendingRequests[0]
const { fee: transferFee } = await fioSdk.getFee('transfer_tokens_pub_key');
fioSdk.returnPreparedTrx = true
const preparedTrx = await fioSdk.pushTransaction(
'fio.token',
'trnsfiopubky',
{
payee_public_key: pendingRequest.content.payee_public_address,
amount: FIOSDK_LIB.FIOSDK.amountToSUF(pendingRequest.content.amount),
max_fee: transferFee,
// tpid: "[email protected]"
}
)
const transferResult = await fioSdk.executePreparedTrx(
'transfer_tokens_pub_key',
preparedTrx
)
fioSdk.returnPreparedTrx = false
console.log(transferResult.transaction_id);
const { fee: recordObtFee } = await fioSdk.getFeeForRecordObtData(pendingRequest.payer_fio_address);
const recordObtDataResult = await fioSdk.genericAction('recordObtData', {
fioRequestId: requestId,
payerFioAddress: pendingRequest.payer_fio_address,
payeeFioAddress: pendingRequest.payee_fio_address,
payerTokenPublicAddress: fioSdk.publicKey,
payeeTokenPublicAddress: pendingRequest.content.payee_public_address,
amount: pendingRequest.content.amount,
chainCode: 'FIO',
tokenCode: 'FIO',
status: 'sent_to_blockchain',
obtId: '',
maxFee: recordObtFee,
})
console.log(recordObtDataResult);
}
main()
id | Payee FIO Address | Payer FIO Address | Memo | Amount |
---|