【发布时间】:2018-01-25 06:00:41
【问题描述】:
我正在实施 Authorize.net 的 "Accept Hosted" iframe method 来提交在线支付。我想在 iframe(或灯箱)中嵌入 Authorize.net 结帐表单,然后在交易完成或取消时重定向我的页面(或关闭 iframe/灯箱)。
据我了解,嵌入在 iframe 中的 Authorize.net 页面本身会嵌入另一个 iframe,用于从 iframe 与我的页面进行通信,而不会遇到跨域问题。
我在 iframe 中看到了 Authorize.net 的结帐表单,并在我的“通信器”页面中看到了嵌套 iframe。但是,通信器似乎没有响应“取消”按钮事件。如果我在hostedPaymentReturnOptions 设置中传递cancelUrl,它将响应该事件,但随后iframe 在单击取消按钮时重定向。我不希望 iframe 重定向,我希望我的 父页面 重定向(或关闭 iframe/灯箱)。
使用此设置:
$setting->setSettingName("hostedPaymentReturnOptions");
$setting->setSettingValue('{"showReceipt":false}');
... 通信器 iframe 已加载,我看到一个调整窗口大小的事件:
action=resizeWindow&width=1802&height=572
...但单击“取消”按钮似乎不会触发任何事件。
使用此设置:
$setting->setSettingName("hostedPaymentReturnOptions");
$setting->setSettingValue('{"showReceipt":false,"cancelUrl":"https://www.example.com/"}');
...“取消”按钮将 iframe 重定向到“example.com”,这不是我想要的。我希望我的 父页面 重定向(或采取其他操作)。
我做错了什么?
供参考:
以下是设置 Accept Hosted 的一些说明。
这里是prompting the checkout form的推荐方法。
这是推荐的iFrameCommunicator page。
这与我使用的过程基本相同,但“取消”按钮没有任何作用:
How to implement Authorize.NET Hosted Payments iFrame & Laravel
编辑:
请注意来自 Authorize.net 开发者社区论坛的描述。以我的经验,这不是提供“cancelUrl”时“取消”按钮的工作方式。 URL 在 iframe 中加载,这是不希望的。
在 iframe 场景中,单击“取消”按钮会调用“cancelContinueBtnHandler”函数。该函数将向您传递交易已取消的消息,如果您传递了“cancelUrl”,则会将浏览器定向到该 URL。因此,该 URL 不会在 iframe 中加载,而是在浏览器中加载。
【问题讨论】:
标签: iframe cross-domain authorize.net