Используйте Google PaymentRequest на локальном сайте, работающем в эмуляторе Android

Я пытаюсь протестировать API Google PaymentRequest на локальном веб-сайте, запущенном в моем эмуляторе Android. Тем не менее, когда я делаю

var paymentRequest = window.PaymentRequest(//some object here//);

Я получаю следующую ошибку

"Error: Failed to construct 'PaymentRequest': Must be in a secure context

Теперь PaymentRequest работает на localhost и https, но запускает его из порта на эмуляторе Android, где находится URI. 10.2.2.01:8000/myUrlHere потерпит неудачу, потому что это не localhost. Есть идеи как обойти это?

2 ответа

Решение

PaymentRequest должен использоваться в безопасном контексте, который является одним из:

  1. HTTPS.
  2. Localhost.
  3. Локальный файл на диске.

http: // 10.2.2.01:8000 не является безопасным контекстом, поэтому вы не можете использовать PaymentRequest там. Попробуйте одно из следующего:

  1. https: //10.2.2.01:8000. (Сертификат SSL должен быть действительным. Это означает, что значок замка в строке URL-адреса должен быть зеленым. Вы можете получить его, например, по https://letsencrypt.org/.)
  2. https: // localhost: 8000.
  3. Файл:///sdcard/index.html

Если у вас есть устройство Android, есть способ протестировать свой сайт, подключив устройство через USB-кабель и обслуживая с локального хоста. Попробуй это:

https://developers.google.com/web/tools/chrome-devtools/remote-debugging/

Если вы этого не сделаете, вы можете попробовать этот инструмент с эмулятором:

https://ngrok.com/

ngrok позволяет обслуживать прокси-сервер localhost с домена ***.ngrok.com.

Другие вопросы по тегам