попробуйте перевести на промисы
const { exec } = require('child_process');
const cmd = `curl -X POST https://secure.payu.com/api/v2_1/orders -H "Content-Type: application/json" -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" -d '{ "notifyUrl": "https://your.eshop.com/notify", "customerIp": "127.0.0.1", "merchantPosId": "145227", "description": "RTV market", "currencyCode": "PLN", "totalAmount": "21000", "buyer": { "email": "john.doe@example.com", "phone": "654111654", "firstName": "John", "lastName": "Doe", "language": "pl" }, "products": [ { "name": "Wireless Mouse for Laptop", "unitPrice": "15000", "quantity": "1" }, { "name": "HDMI cable", "unitPrice": "6000", "quantity": "1" } ]}'`;
execCommand(cmd)
.then(({ stdout, stderr }) => console.log(`stdout: ${stdout}\nstderr: ${stderr}`))
.catch(err => console.error(err)
.finally(() => console.log('App has been finished'))
function execCommand(cmd) {
return new Promise(resolve, reject) {
exec(cmd, (error, stdout, stderr) => error? reject(error) : resolve({ stdout, stderr }));
};
}
И честно говоря не знаю как узнать успешно выполнился curl или нет, так как stderr будет приходить всегда. Возможно можно смотреть на код возврата процесса...
А вообще Вам правильно написали, надо использовать что-то из либ (requset, axios, fetch...) для отправки запросов. Не хотите внешнюю либу - можно использовать нативную библиотеку http.