const Straddle = require('straddle');
const { v4: uuidv4 } = require('uuid');
const straddle = new Straddle('51NBBbbDBkrcnHrnR0nBGsOvFHQrM0n8T1FKZmAUWbJqq8oRsAM3dEZzBIbHwzKrVUUFOyRvX1Ib8Sn3VWWQMW00r300IIrGBWb1');
async function processOrder(orderDetails) {
const correlationId = uuidv4();
try {
// Create customer
const customer = await straddle.customers.create({
name: orderDetails.name,
type: 'individual',
email: orderDetails.email,
phone: orderDetails.phone,
external_id: orderDetails.customerId,
device: {
ip_address: orderDetails.ipAddress
}
}, {
headers: {
'Correlation-Id': correlationId,
'Request-Id': uuidv4()
}
});
// Create charge
const charge = await straddle.charges.create({
paykey: orderDetails.paykey,
amount: orderDetails.amount,
currency: orderDetails.currency,
payment_date: new Date().toISOString().split('T')[0], // Today's date
consent_type: 'internet',
device: {
ip_address: orderDetails.ipAddress
},
external_id: orderDetails.orderId
}, {
headers: {
'Correlation-Id': correlationId,
'Request-Id': uuidv4()
}
});
console.log(`Order processed successfully. Charge ID: ${charge.id}`);
} catch (error) {
console.error(`Error processing order. Correlation ID: ${correlationId}`, error);
}
}
processOrder({
name: 'Jane Smith',
email: 'jane@example.com',
phone: '+11234567890',
customerId: 'cust_67890',
ipAddress: '192.168.1.1',
amount: 2000,
currency: 'usd',
paykey: 'TYooMQauvdEDq54NiTphI7jx',
orderId: 'order_54321'
});