Я перешел по этой ссылке в качестве руководства по внедрению и официальному W3C руководству .
Вот моя логика для отображения кнопки Google Payна нашем сайте:
- Проверьте, доступно ли
window.PayentRequest
, и если да, то: - Метод BuildData, paymentDetails и paymentOptions.Создайте новый объект PaymentRequest с этими значениями.
- Вызов
paymentRequest.canMakePayment().then((result)=>{ //if result is true, display the GPay the button }).catch(()=>{}}
- Когда кнопка появляется, обработчик onClick создает новый объект PaymentRequest с methodData, paymentDetails и paymentOptions и вызывает
.show()
Наше приложение находится в React, и я делаю шаги 1–3 этого в componentDidMount.В большинстве случаев это работает отлично - страница завершает загрузку, проверяет, доступен ли PaymentRequest и поддерживается ли PaymentMethod, а затем устанавливает состояние для отображения кнопки Google Pay, и щелчок вызывает собственный платежный лист браузера.
Вот проблема, которую я пытался решить:
В Google Chrome (v 72.0.3626.109) (как на настольном, так и на мобильном устройстве) кнопка GooglePay иногда не отображается при переходе на страницуи появляется только когда я обновляюсь пару раз.Для случаев, когда он не обнаруживается, из журналов я видел, что метод canMakePayment вообще не разрешается - он не входит ни в then
, ни catch
.Я не понимаю, где оно может вызывать исключение, и где оно генерируется, или почему оно молча терпит неудачу.
Любое понимание было бы полезно - если canMakePayment()
возвращает обещание, почему и когдаРазве это не решит?Где я могу проверить на наличие ошибок?
Вот скрипка того, что я делаю - и я мог бы повторить проблему на этой скрипке - https://jsfiddle.net/soham_scratchpad/bzsyrjaf/5/