如何在使用 javascript 框架(如 ExtJs)创建的应用程序中集成支付网关?
Posted
技术标签:
【中文标题】如何在使用 javascript 框架(如 ExtJs)创建的应用程序中集成支付网关?【英文标题】:How to integrate payment gateway in applications created using javascript frameworks like ExtJs? 【发布时间】:2013-05-29 07:45:06 【问题描述】:我们的应用程序是使用 ExtJs 创建的单页应用程序。 对于任何用户操作,浏览器选项卡都不会重新加载,所有操作都是使用 ajax 执行的。用户可以在同一个浏览器选项卡中打开/关闭多个 ExtJs 窗口/面板,这样所有内容都被限制在同一个浏览器选项卡中。
现在,我们需要在应用程序中集成支付网关,这包括将用户重定向到银行网站并将她带回我们的应用程序。
问题在于,当浏览器重定向用户时,所有应用程序的 JavaScript 代码以及面板和窗口都会被破坏,当用户返回应用程序时,她会发现它与她离开的应用程序不同.
为了解决这个问题,我们考虑使用以下两种方法:
选项 1. 维护应用程序的状态 - 当用户离开银行的网站时,我们会以某种方式维护应用程序的状态 - 例如打开哪些窗口携带哪些数据,哪些变量有哪些值等等。当用户返回时,我们为她生成相同的应用程序状态。
选项 2. 有一个支付网关的浏览器弹出窗口 - 我们打算提供一个按钮,该按钮将打开一个带有交易详细信息的小弹出窗口,并且在这个弹出窗口中,整个支付网关过程将进行重定向和一切处理。
事实证明,选项 1 非常繁琐和复杂,因为保持确切状态不可行。
对于选项 2,我们不确定这是否安全可行?
之前有没有人实施过这种方法。否则,我们还有哪些其他选择?
提前感谢您的帮助。
【问题讨论】:
【参考方案1】:我遇到了这个问题,我在主应用程序中使用 websocket/polling 实现了它,同时弹出一个新的支付窗口。
支付成功后会通知主应用。
这样,每笔付款都在自己的沙箱中运行,完全不受主应用程序的约束,这使得维护非常容易。请注意,我们的后端使用现有会话为每次付款创建一个新会话。
我认为打开新的付款窗口并不少见,这就是我决定这样做的原因。
【讨论】:
感谢您分享弹出窗口的方法。有趣的是,您正在使用 websocket/polling 来通知父窗口。如果要使用弹出方法,我们实际上计划在子窗口的卸载/关闭时调用父窗口的函数以获取此通知。您是否也尝试过并发现任何问题导致您选择 websocket 选项? @netemp 我们的目标是让他们从一开始就完全分开。这就是为什么我专注于这种方法。这更像是一个设计问题,而不是任何已知问题。 感谢您提到的这一点。您能否也分享一下您在使用 pop-blocker 时遇到过任何问题吗?您是否抱怨弹出窗口通常被浏览器阻止,因此应该避免? @netemp 不,我不知道。至少我的客户永远不会回复我。所以我不能肯定地说。但我真的怀疑如果通过单击链接打开弹出窗口,这将是一个严重的问题。 pop url 也指向同一个域,因为我首先联系应用程序服务器,然后再重定向到支付提供商。我不确定,但我认为这对于大多数弹出窗口拦截器来说可能会有所不同,将其评为无广告。但这只是我的猜测,我从来不需要仔细观察。 谢谢@sra。我们也创建了一个小型原型,发现弹出窗口没有被阻止,因为它们是通过单击按钮打开的。感谢到目前为止的时间和投入。以上是关于如何在使用 javascript 框架(如 ExtJs)创建的应用程序中集成支付网关?的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 javascript 框架(如 ExtJs)创建的应用程序中集成支付网关?