Quick Start for Buyers
Prerequisites
Integration Steps
Installation
npm install ethersComplete Payment Flow
const axios = require('axios');
const { ethers } = require('ethers');
const { createPaymentHeader } = require('./payment-header-generator');
async function payForResource(resourceUrl, wallet) {
try {
// Step 1: Initial request to resource (expect 402)
const initialResponse = await axios.get(resourceUrl).catch(err => err.response);
// Step 2: Check for 402 Payment Required
if (initialResponse.status !== 402) {
return initialResponse.data;
}
const { paymentRequirements } = initialResponse.data;
// Step 3: Generate payment header (sign EIP-3009 authorization)
const paymentHeaderBase64 = await createPaymentHeader({
wallet: wallet,
paymentRequirements: paymentRequirements,
network: paymentRequirements.network,
});
// Step 4: Retry request with payment header
const paidResponse = await axios.get(resourceUrl, {
headers: { 'X-PAYMENT': paymentHeaderBase64 },
});
return paidResponse.data;
} catch (error) {
throw error;
}
}
// Example usage
async function main() {
const privateKey = process.env.PRIVATE_KEY;
const provider = new ethers.JsonRpcProvider('https://evm-t3.cronos.org');
const wallet = new ethers.Wallet(privateKey, provider);
const resourceUrl = 'https://seller-api.example.com/api/premium-data';
const result = await payForResource(resourceUrl, wallet);
return result;
}
main();Generating Payment Header
Common Pitfalls
Last updated
Was this helpful?