问题描述
我正在尝试为一家网上商店集成 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”域。
如果您想坚持使用虚拟主机,有两种选择:
- 为它安装一个本地 SSL 证书(在 SO 上和互联网上有很多关于此的指南)
- 即使没有安装证书,也将返回 URL 设置为“https://myownvirtualhost.local”。您的浏览器将显示错误。将地址修改为“http://”即可解决问题。这不是很优雅,但对于开发目的来说应该足够了。