Я пытаюсь внедрить платежную систему в своем приложении, запустив отдельный сервер для обработки платежей с помощью braintree. Я не могу понять, как отправить сообщение клиенту (когда платеж поступил неправильно) для обработки клиентской части результата. Как я могу заставить моего клиента пойти в catch вместо того, чтобы потом основываться на result.success? Или как мне получить результат.success в моем. Then? На самом деле мой результат объект не имеет свойства, содержащее мой result.success (result.success является булевым)Отправка ошибки клиенту в качестве обратного вызова HTTP-запроса
Сервер:
router.post("/checkout", function (req, res) {
var nonceFromTheClient = req.body.payment_method_nonce;
var amount = req.body.amount;
gateway.transaction.sale({
amount: amount,
paymentMethodNonce: nonceFromTheClient,
}, function (err, result) {
res.send(result.success);
console.log("purchase result: " + result.success);
});
});
Клиент:
fetch('https://test.herokuapp.com/checkout', {
method: "POST",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ payment_method_nonce: nonce, amount: this.props.amount })
}).then((result) => {
console.log(result);
}).catch(() => {
alert("error");
});
}
Спасибо за ваш ответ! Он все еще идет в .then() даже с кодом состояния 400. Но я могу получить код состояния от моего клиента в результате, поэтому я сделал свою логику там :) –
Вы wlecome! Пробовали ли вы передать второй параметр функции fetch в своем клиенте, а не в .catch()? 'выборки ('https://test.herokuapp.com/checkout', { метод: "POST", заголовки: { 'Content-Type': 'приложения/JSON' }, тела: JSON . ((result) => { console.log (результат); }, (ошибка) => { console.log. (ошибка); }); ' – giankotarola