Я сталкиваюсь с очень странным поведением с пользовательским интерфейсом Braintree dropin Ion.Пользовательский интерфейс Braintree Dropin не работает с Ionic Framework, если не обновляется сила
Поэтому я использую решение: Can't create Braintree client token with customer ID , чтобы создать логику в первый раз и вернуть клиента.
$http({
method: 'POST',
url: 'http://localhost:3000/api/v1/token',
data: {
customerId: braintreeReturnCustomerId
}
})
Как я прошел в customerId на моем клиенте. На моем сервере nodejs у меня есть логика, чтобы проверить, не является ли clientId неопределенным. Если он не определен, это первый раз клиент. Если customerId имеет значение, он обратный клиент. Очень прямолинейно:
app.post('/api/v1/token', jsonParser, function (request, response) {
var customerId = request.body.customerId;
if (customerId == undefined) {
gateway.clientToken.generate({}, function (err, res) {
if (err) throw err;
response.json({
"client_token": res.clientToken
});
});
} else {
console.log ("using exsiting customer!");
gateway.clientToken.generate({
customerId: customerId
}, function (err, res) {
if (err) throw err;
response.json({
"client_token": res.clientToken
});
});
}
});
Мой клиент находится в Ионном представлении. Поэтому, когда я плачу в первый раз, он знает, что это пользователь времени frist, а затем генерирует customerId для меня, и я храню его в своей базе данных. Все хорошо. Затем БЕЗ обновления (поскольку приложение Ionic не обновляется при изменении состояния), я перехожу в другое состояние и возвращаюсь в состояние оплаты, оно не отображает кредитную карту магазина. Даже мой сервер регистрирует clientId, и я знаю. УВЕРЕН, что код сервера работает с частью else с gateway.clientToken.generate ({customerId: customerId} ...
Если я принудительно обновляю изображение, например, используя
$window.location.reload(true);
сразу после первого платежа время успешно или я просто вручную обновить страницу в моем браузере Chrome (как я в ионическом Serve), то DROPIN страница UI платеж будет отображаться магазин кредитной карты от первого платежа времени.
Я пытаюсь отключить кеширование просмотра, например, «cache: false». Но это не помогает. Мне нужно принудительно обновить, чтобы заставить пользовательский интерфейс Dropin работать для t он второй раз. Я думаю, что это код javascript в пользовательском интерфейсе dropin, вызывающий эту проблему, но я не знаю, как это исправить ...
Ничего себе. Спасибо, что указали на эту проблему. Но я не использую аутентификацию на стороне сервера b/c. Я использую Firebase. Вот мое решение для решения этой проблемы: http://stackoverflow.com/questions/32573992/how-to-structure-my-app-to-use-firebase-braintree-ionic-angularjs-and-a-minim Мог вы скажите мне, подходит ли этот подход Firebase к стандарту OWASP? –
@HughHou, хотя у меня нет опыта работы с Firebase, введение доверенной третьей стороны для генерации аутентификации/генерации сродни тому, что ваш собственный сервер генерирует/хранит эту информацию. Я не могу прокомментировать вашу конкретную реализацию, но, как правило, это достойное направление, чтобы не создавать клиентов, генерирующих/поддельных идентификаторов клиентов. –