Мы используем authorize.net Node SDK для обработки платежей. У нас есть вызываемая Firebase функция для обработки запроса на обработку платежа, но мы не можем получить ответ на транзакцию.
Проблема в следующем коде.
try {
// MAKE GLOBAL VARIABLE TO HOLD RESPONSE? -> (problems with async callback)
let RESPONSE_FOR_CLIENT;
await ctrl.execute(async function () {
var apiResponse = ctrl.getResponse();
var response = await new ApiContracts.CreateTransactionResponse(apiResponse);
RESPONSE_FOR_CLIENT = response;
if (response != null) {
if (response.getMessages().getResultCode() == ApiContracts.MessageTypeEnum.OK) {
if (response.getTransactionResponse().getMessages() != null) {
// ... do stuff
}
else {
console.log('Failed Transaction.');
if (response.getTransactionResponse().getErrors() != null) {
// ... do stuff
}
}
}
else {
console.log('Failed Transaction. ');
}
});
return RESPONSE_FOR_CLIENT;
} catch (error) {
throw new functions.https.HttpsError('unknown', error);
}
Да, я знаю, что проблема в том, что ctrl.execute является функцией обратного вызова, и я действительно запутался, почему authorize.net реализовал это таким образом. Java и python SDK запускают их синхронно, чтобы вы могли легко отправить ответ пользователю.
Итак, я думаю, что должен быть способ вернуть ответ, я просто не знаю как. Спасибо.