The following sample will show you how to prompt a user to send Hbar. Useful to make a payment. We will first generate a request for the end user with transaction's details. Once validated, you will get notified about transaction's status.
Prerequisites:
Step 1: Import the following modules
Let's continue building on the index.js from the previous example (Environment Set-up) and add the following modules:
Before initializing the payment, you probably need to get the fees from our service. For that matter, we will simply need to specify the amount of the transaction
When initializing a payment, a request is sent to the end user for authorization.
/* Update the fields with your informations */consthbarAmount=100;consttoAccountId='';constfromAccountId='';/* Request for payment */awaitclient.pay({toAccountId, fromAccountId, hbarAmount});
1.2 From an account to an account and to a middleman
You can also add middleman account to pay throughout the process. Middleman take fees, those fees can be a fixed amount of HBAR (MiddleManFeesType.HBAR) or a percent (MiddleManFeesType.PERCENT) of the hbarAmount, the type is defined in the middleManTypeOfFees property.
Payer account fromAccountId will pay Hedera Hashgraph network fees for each transaction. If there is three middlemen and one recipient, payer will pay four transactions fees. Note that middle men fees are taken from the hbarAmount
/* Update the fields with your informations */consthbarAmount=100;consttoAccountId='';constfromAccountId='';constmiddleManAccountId=''constmiddleManAccountId2='';/* Add 3rd-party payment */constmiddleMen= [ { middleManAccountId, middleManTypeOfFees:MiddleManFeesType.HBAR, middleManFees:10 }, { middleManAccountId2, middleManTypeOfFees:MiddleManFeesType.PERCENT, middleManFees:2 },];/* Request for payment with tiers */awaitclient.pay({toAccountId, fromAccountId, hbarAmount, middleMen});
Step 4: Listen to new Payments
Finally get notified when a new payment has been done successfully!
/* Subscribe to new Payments */client.paymentValidation().subscribe(payment => {console.log('new Payment', payment);});
⭐ Congratulations! You have successfully completed a payment process
Code Check ✅
Your index.js file should look like this:
index.js
const { Client,TierFeesType } =require("@xact-wallet-sdk/client");require("dotenv").config();asyncfunctionpay() {//Grab your api key from your .env fileconstapiKey=process.env.API_KEY;// If we weren't able to grab it, we should throw a new errorif (apiKey ==null) {thrownewError("Environment variables API_KEY must be present"); }/* Create a new instance of Client */constclient=newClient({apiKey});/* Init the connexion */awaitclient.initConnexion();/* Update the fields with your informations */consthbarAmount=100;consttoAccountId='';constfromAccountId='';constmiddleManAccountId=''constmiddleManAccountId2='';/* Add tiers payment */constmiddleMen= [ { middleManAccountId, middleManTypeOfFees:MiddleManFeesType.HBAR, middleManFees:10 }, { middleManAccountId: middleManAccountId2, middleManTypeOfFees:MiddleManFeesType.PERCENT, middleManFees:2 }, ];/* Get Xact Fees */constxactFees=awaitthis.client.getXactFeesPayment(100);/* Request for payment */awaitclient.pay({toAccountId, fromAccountId, hbarAmount, middleMen});/* Listen for Payment's success */client.paymentValidation().subscribe(payment => {console.log('new Payment', payment); });}pay();