Rocketfuel SDK nodejs
Rocketfuel Node.js SDK Integration Guide
This document provides a step-by-step guide for integrating Rocketfuel’s Node.js SDK (rocketfuel-sdk
) to generate invoices and perform purchase checks in your application.
Prerequisites
Node.js installed
An active Rocketfuel account with access credentials:
CLIENT_ID
CLIENT_SECRET
MERCHANT_ID
You can installed the Rocketfuel Node.js SDK:
npm install @rkfl/transact-server
import { Rocketfuel } from '@rkfl/transact-server';
Reading Credentials from Environment Variables
Use environment variables for security and flexibility.
export const CLIENT_ID = process.env.CLIENT_ID;
export const CLIENT_SECRET = process.env.CLIENT_SECRET;
export const MERCHANT_ID = process.env.MERCHANT_ID;
Initializing the Rocketfuel Client
Initialize the RocketfuelClient
with appropriate parameters:
const client = new Rocketfuel({
clientId: CLIENT_ID,
clientSecret: CLIENT_SECRET,
merchantId: MERCHANT_ID,
environment: 'sandbox', // or 'production'
});
Functions
1. Generate Order
export const generateUUID = async (req, res) => {
try {
const payload = req.body;
console.log(payload);
// Call Rocketfuel purchase check API
const result = await client.createOrder(payload);
console.log('Hosted Page Result:', result.uuid);
// Send success response with uuid and it can be used with the frontend sdk
res.json({ success: true, uuid: result.uuid });
} catch (err) {
console.log('Error in generateInvoice:', err);
// Send failure response with error message
res.status(500).json({ success: false, error: err.message || 'Internal Server Error' });
}
};
Cart payload example
{
"merchant_id": "b682f8e6-4df8-ae7f-6f94era353d2", // required
"amount": "59.99", // required
"cart": [
{
"id": "vid1", // required
"price": 19.99, // required
"name": "Amazing Nature Documentary", // required
"quantity": 2, // required
"key": 101, // optional
"totalPrice": 39.98, // optional
"isSubscription": false, // optional
"frequency": "monthly", // optional
"subscriptionPeriod": "1m", // optional
"merchantSubscriptionId": "sub-12345", // optional
"autoRenewal": true, // optional
"isSubscriptionRenewal": false, // optional
"subscriptionId": null, // optional
"refundable": true // optional (default true if omitted)
},
],
"currency": "USD", // required
"order": "ORD-2024-0001", // optional
"redirectUrl": "https://example.com/return", // optional
"customerInfo": {
"name": "John Doe", // optional (whole object)
"email": "[email protected]", // optional
"phone": "+1234567890", // optional
"address": "123 Main Street, NY", // optional
"allowLoginWithoutEmail": true, // optional
"userIdentifier": "user-001" // optional
},
"shippingAddress": { // optional (whole object)
"firstname": "John", // optional
"lastname": "Doe", // optional
"phoneNo": "+1234567890", // optional
"address1": "123 Main Street",
"address2": "Apt 4B", // optional
"state": "NY",
"city": "New York",
"zipcode": "10001", // optional
"country": "USA",
"landmark": "Near Central Park", // optional
"email": "[email protected]" // optional
},
"customParameter": { // optional
"returnMethod": "POST",
"params": [
{ "name": "submerchant", "value": "streamflix" }
]
},
"feeConfiguration": { // optional
"type": "PERCENT",
"value": 2.5 // optional (default 0 if omitted)
},
"siteInfo": { // optional
"siteUrl": "https://exmaple.com", // optional
"siteName": "StreamFlix", // optional
"siteLogo": "https://exmaple.com/logo.png" // optional
},
}
Root Level Fields
Field
Type
Required
Description
merchant_id
string
✅ Yes
Unique identifier of the merchant.
amount
string
✅ Yes
Total amount of the transaction.
cart
array
✅ Yes
List of items in the cart.
currency
string
✅ Yes
Currency code (e.g., USD).
order
string
❌ No
Merchant’s order reference/ID.
redirectUrl
string
❌ No
URL where the customer will be redirected after payment.
customerInfo
object
❌ No
Information about the customer.
shippingAddress
object
❌ No
Shipping address details.
customParameter
object
❌ No
Custom key-value pairs for callback or extra data.
feeConfiguration
object
❌ No
Fee-related configuration for the transaction.
siteInfo
object
❌ No
Website or platform information.
Cart Object (cart[])
Field
Type
Required
Description
id
string
✅ Yes
Unique identifier for the product/item.
price
number
✅ Yes
Price of a single unit.
name
string
✅ Yes
Name/description of the product.
quantity
number
✅ Yes
Number of units purchased.
key
number
❌ No
Custom product key/reference.
totalPrice
number
❌ No
Total price (price * quantity).
isSubscription
boolean
❌ No
Whether this item is a subscription.
frequency
string
❌ No
Subscription frequency (e.g., monthly).
subscriptionPeriod
string
❌ No
Subscription period (e.g., 1m).
merchantSubscriptionId
string
❌ No
Merchant’s subscription reference ID.
autoRenewal
boolean
❌ No
Whether subscription will auto-renew.
isSubscriptionRenewal
boolean
❌ No
Marks if this is a renewal payment.
subscriptionId
string|null
❌ No
Unique identifier of the subscription (if exists).
refundable
boolean
❌ No
Whether item is refundable (default: true).
Customer Info (customerInfo)
Field
Type
Required
Description
name
string
❌ No
Customer’s full name.
string
❌ No
Customer’s email address.
phone
string
❌ No
Customer’s phone number.
address
string
❌ No
Customer’s address.
allowLoginWithoutEmail
boolean
❌ No
Allow login without requiring email.
userIdentifier
string
❌ No
Custom unique identifier for customer.
Shipping Address (shippingAddress)
Field
Type
Required
Description
firstname
string
❌ No
Recipient’s first name.
lastname
string
❌ No
Recipient’s last name.
phoneNo
string
❌ No
Recipient’s phone number.
address1
string
✅ Yes
Street address line 1.
address2
string
❌ No
Street address line 2 (optional).
state
string
✅ Yes
State/Province.
city
string
✅ Yes
City name.
zipcode
string
❌ No
Postal code.
country
string
✅ Yes
Country name.
landmark
string
❌ No
Landmark for easier delivery.
string
❌ No
Recipient’s email.
Custom Parameter (customParameter)
Field
Type
Required
Description
returnMethod
string
❌ No
Callback method (e.g., POST).
params
array
❌ No
Extra parameters as key-value pairs.
Params Object
Field
Type
Required
Description
name
string
✅ Yes
Parameter key.
value
string
✅ Yes
Parameter value.
Fee Configuration (feeConfiguration)
Field
Type
Required
Description
type
string
❌ No
Type of fee (e.g., PERCENT).
value
number
❌ No
Fee value (default: 0).
Site Info (siteInfo)
Field
Type
Required
Description
siteUrl
string
❌ No
Website URL.
siteName
string
❌ No
Website name.
siteLogo
string
❌ No
Logo image URL.
2. Transaction lookup
The transactionLookup
Function is an asynchronous method that lets you retrieve details about a specific transaction from Rocketfuel’s API. You provide a transaction ID (txId
) and specify the type of ID ('ORDERID'
or 'TXID'
). The function ensures you have a valid access token, then makes a POST request to the transaction lookup endpoint.
Input parameters:
txId
: The identifier for the transaction you want to look up.type
: (Optional) Specifies iftxId
it is an order ID ('ORDERID'
) or transaction ID ('TXID'
). Defaults to'ORDERID'
.
Purpose: Use this to verify transaction status, get payment info, or troubleshoot payments.
Usage Example
Assuming you have an instance of your SDK client (e.g., named client
) that includes the transactionLookup
method:
async function checkTransaction(txId) {
try {
const result = await client.transactionLookup(txId, 'ORDERID');
console.log('Transaction Details:', result);
// Process the transaction details as needed
} catch (error) {
console.error('Error fetching transaction details:', error.message);
}
}
// Example call:
checkTransaction('12345ABC');
Replace
'12345ABC'
with the actual order ID or transaction ID.Change
'ORDERID'
to'TXID'
If you are using the transaction ID.\
3. Webhook Signature Verification
The verifyWebhookSignature
Function is a synchronous method that ensures the authenticity and integrity of incoming webhook payloads sent by Rocketfuel. It uses RSA-SHA256 to verify that the payload hasn’t been tampered with and was genuinely sent from Rocketfuel’s backend.
Input Parameters
body
: The full parsed JSON object received in the webhook request. It must contain:
Purpose
Use this function to verify that a webhook is valid and trusted before processing its contents. It prevents spoofed requests, data tampering, and unauthorized events.
Usage Example
Assuming you have an instance of your SDK client (e.g., named client
) that includes the verifyWebhookSignature
method:
function handleWebhook(req, res) {
const isValid = client.verifyWebhookSignature(req.body);
if (!isValid) {
console.warn('Webhook signature verification failed');
return res.status(403).send('Invalid signature');
}
const payload = JSON.parse(req.body.data.data);
console.log('Verified Webhook Payload:', payload);
// Process your payload
res.status(200).send('Webhook received');
}
Make sure
req.body
is already parsed into an object. If you're using Express, use a raw body parser middleware to retain the exact content for verification if needed.
📌 Notes
This function returns
true
if the signature is valid, otherwisefalse
.Your webhook endpoint must always return a successful response (e.g., HTTP 200), as Rocketfuel verifies the endpoint only once during registration through the merchant dashboard.
Last updated
Was this helpful?