У меня есть приложение Flutter, и я пытаюсь получить одноразовый клиент от Braintree. Согласно документации braintree , у меня есть это в моей облачной функции:
exports.getClientNonce = functions.https.onCall(async (data, context) => {
gateway.clientToken.generate({}, function (err, response) {
if (err) {
throw new functions.https.HttpsError('unknown', 'Error getting client nonce');
} else {
console.log(`token: ${response.clientToken}`);
return response.clientToken;
}
});
});
Затем в моем приложении Flutter я вызываю функцию (опять же, я следую тому, что плагин говорит ):
try {
HttpsCallable callable = CloudFunctions.instance.getHttpsCallable(
functionName: 'getClientNonce',
);
dynamic result = await callable.call({});
final value = result.data;
debugPrint('token: $value');
var data = await BraintreePayment().showDropIn(
nonce: value,
amount: '2.0',
enableGooglePay: false,
inSandbox: true);
print("Response of the payment $data");
} on CloudFunctionsException catch (e) {
debugPrint('An error occurred');
} catch (e) {
debugPrint('An error occurred');
}
}
Я попытался изменить функцию облака так, чтобы она возвращала только случайное число (как только функция будет выполнена), и мое приложение Flutter правильно получает значение (так что облачная функция общается нормально). И в моей консоли Firebase я могу просмотреть одноразовый номер клиента, указанный console.log
. Но функция по какой-либо причине не может вернуть фактический одноразовый номер клиента. (Должен быть какой-то строковый хэш длиной более 2000 символов)