尝试在本地主机上登录时出现 Amazon Pay Sandbox 错误 - “Scheme not HTTPS”

问题描述

我正在尝试为一家网上商店集成 Amazon Pay。登录按钮显示正确,但是一旦我使用沙箱帐户凭据登录显示地址小部件,我的 Chrome 开发工具控制台中就会出现以下错误[Amazon.error] 尝试重定向http://myownvirtualhost.local/shop.html?.. .但方案不是 HTTPS。 所以错误很明显,但我该如何解决这个问题?登录后,重定向应该发生在 HTTPS url 上,但正如已经提到的,我正在使用配置的虚拟主机在我的本地主机上进行开发。我还使用了正确的 (EU) 沙箱 Widget.js 文件,并在我的 PHP 配置中将沙箱模式设置为 true。

我的代码

OffAmazonPayments.Button('amazonPayButton','MERCHANT-ID',{
                type:  'PwA',language: 'de-DE',authorization: function() {
                    loginoptions = {scope: 'profile postal_code payments:widget payments:shipping_address',popup: true };
                    authRequest = amazon.Login.authorize(loginoptions,'http://myownvirtualhost.local/shop.html?action=cart');
                },onError: function (error) {
                    console.log('auth request: ' + error.getErrorCode() + ': ' + error.getErrorMessage());
                }
            });

我没有提供我的商家 ID,因为这是一个示例。所以我的重定向 url 有 HTTP 作为方案,这就是错误的原因。我很困惑,因为在阅读了 Amazon Pay 集成指南的注册章节后,我认为 SSL 与 localhost 无关。 来自集成指南:

获取 SSL 证书。您的服务器需要具有由受信任的证书颁发机构颁发的有效 SSL 证书。 注意:在“本地主机”环境中工作时,不需要 SSL 证书。有关详细信息,请参阅 SSL 认证。

感谢任何帮助。提前致谢!

解决方法

我认为“localhost”应该按字面理解为默认的“http://localhost”域。

如果您想坚持使用虚拟主机,有两种选择:

  1. 为它安装一个本地 SSL 证书(在 SO 上和互联网上有很多关于此的指南)
  2. 即使没有安装证书,也将返回 URL 设置为“https://myownvirtualhost.local”。您的浏览器将显示错误。将地址修改为“http://”即可解决问题。这不是很优雅,但对于开发目的来说应该足够了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...