GoodDollar PaymentSDK for vendors.
This API will allows vendors to request and handle payment with the GoodDollar protocol in their Apps/Stores.
Requirements:
- Node.js
- npm or yarn
npm install ----
or
yarn add ----
generatePaymentLink(PaymentDetails:string)
Creates a payment link.
var result = generatePaymentLink({
address:'0x00521965e7bd230323c423d96c657db5b79d099f',
recipient:'3dPB4qR3AeJ2cKsjRgajwtMaRk7N24hULg6',
amount:'22200',
reason:'afds',
category:'Digital Services',
vendorData:{
callbackUrl:'www.google.com',
invoiceId:'abcd'
}
});
The result variable will store the expected output i.e. Payment Link.
http://wallet.gooddollar.org:3000/? code=eyJtIjoiM2RQQjRxUjNBZUoyY0tzalJnYWp3dE1hUms3TjI0aFVMZzYiLCJhIjoiM... the query param code is the base64 encrypted value returned from generateCode.
The generated code will return an object with the paymenDetails params and the ones that we already have
Example:
{
"m":"3dPB4qR3AeJ2cKsjRgajwtMaRk7N24hULg6",
"a":"22200",
"r":"afds",
"cat":"Digital Services"
}
generatePaymentQR(PaymentDetails):DataURL
Same as above but create a QR containing the payment link from the generatePaymentLink method described above. Returns Data URL link (in string format).
var result = await generatePaymentQR({
address:'0x00521965e7bd230323c423d96c657db5b79d099f',
recipient:'3dPB4qR3AeJ2cKsjRgajwtMaRk7N24hULg6',
amount:'22200',
reason:'afds',
category:'Digital Services',
vendorData:{
callbackUrl:'www.google.com',
invoiceId:'abcd'
}
});
validateTx(TxData):boolean
Reads fuse blockchain for txhash and check it has a Transfer log with the amount + sha3(invoiceid/data) paid to recipient in event log data.
Listens to Transfer event with to=recipient and data=sha3(invoiceid/data) resolves promise once event detected.
var result = await validateTx({
txHash:"0x16d3c01a2786ce2022ef036ed122c5ff38b1809bf14302c3b89de73cbcbcac8d",
recipient:"0x2FaDA5F33728761648dAB4BE25BF0fE831B9dD34",
amount:500,
invoiceId:"receipt-id-3938383"
});
true
PaymentDetails {
address: string,
recipient: string,
amount: number,
reason: string,
category: string,
vendorData?: VendorMetadata
}
VendorMetadata {
callbackUrl: URL,
invoiceId: string,
website: URL,
vendorName: string
}
TxData {
txHash: string,
recipient: string,
amount: number,
invoiceId: string,
network?: string
}