过去几周我一直在开发我的第一个 RoR/Shopify 应用程序,它快完成了。我唯一遇到的麻烦是申请费用。当用户在商店中看到我的应用程序时,他单击“获取”,然后初始化身份验证过程。正在安装应用程序,用户可以接受/拒绝收费。如果他拒绝,他将被重定向到我在商店中的应用列表。 现在这是我的问题。如果用户拒绝付费,我的应用程序仍会安装,如果他第二次点击我的横幅,我需要检查他是否为此付费。我通过
if (ShopifyAPI::RecurringApplicationCharge.current)
some logic since the charge is valid
else
redirect_to billing_index_path(:shop_url => cur_shop_url)
我的想法是,如果用户还没有付款,则让带有收费费用的弹出窗口再次出现。这不起作用,我收到一条错误消息,指出我的网站未显示,因为 X-Frame-Options 设置为 DENY。我已经尝试删除我的 application_controller.rb 和我的 application.rb 中的选项
Response.headers.delete('X-Frame-Options')
和
config.action_dispatch.default_headers.delete('X-Frame-Options')
分别。用户第一次安装该应用程序时,一切似乎都正常,嵌入、逻辑等,但在他第二次尝试后,一切都变得一团糟。每次用户访问我的应用程序时,如何嵌入所有站点?我读到 Shopify 的回复默认有一个 DENY header ,但我确信必须有解决此问题的方法。我不能让用户每次都卸载该应用程序。
提前致谢
最佳答案
Shopify 忽略其收费批准表格中的 302。原因是,您的应用嵌入在 iframe 中。无论来源如何,支付确认端点都拒绝嵌入 iframe - 他们甚至不将自己的网站列入白名单!!
这意味着您不能简单地在订阅确认 url 上做一个表单发布和 302 成功,那太容易了。
您必须编写一些 javascript 来获取确认 url 并执行 window.top.location = confirm_url;
。
您必须脱离 iframe,否则 shopify 也会拒绝您的重定向功能,您将回到原来的位置。
或者,您可以在新窗口中打开链接。
我必须转换我的“快速而简单”的应用程序以进行 Ajax 调用以将订阅信息提交到我的服务器,然后使用发回的结果确认 URL 进行 JS 重定向。
不得不说,Shopify 的 API 可怕地文档不足,而且实现得非常糟糕。他们的“API”每时每刻都设置了障碍。
关于ruby-on-rails - 无法在 Shopify 的应用程序中嵌入网站(X-Frame-Options),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230982/