liquidity-invoice-generation
Invoice generation system compatible with Liquidity Network
IMPORTANT: Requires web3-utils
and bignumber.js
dependencies
Usage
const invoice: Invoice = createInvoice({
network: 4,
publicKey: '0xE6987CD613Dfda0995A95b3E6acBAbECecd41376',
generateId: true,
contractAddress: '0x4FED1fC4144c223aE3C1553be203cDFcbD38C581',
tokenAddress: '0x4FED1fC4144c223aE3C1553be203cDFcbD38C581',
amount: '12000000000000',
})
const encodedInvoice: string = encodeInvoice(invoice)
const decodedInvoice: Invoice = decodeInvoice(encodedInvoice)
- Feed
encodedInvoice
into a QR code generator as plain text. (i.g: user https://www.the-qrcode-generator.com or a library) to be scanned by the user. - Feed
decodedInvoice
into the sendTransfer
function of the NOCUSManager. - If no amount is specified invoice.amount will be undefined, it needs to be set before making a transfer with the nocust manager client side.
- If tokenAddress is not specified, Ether will be used.
The typical merchant needs to track the completion of payments by its customer, to do so we use generateId
.
- SERVER SIDE, generate an invoice with
generateId
set to true
and save the nonce in the invoice object invoice.nonce
in the merchant server db. It is important to be done server side otherwise the client can manipulate the value. - Encode the invoice with
encodeInvoice
function and send it to the client front-end to display the QR code - Wait for an incoming payment with the nocust-manager that has the correct nonce value AND amount.