7

我有一个网页,用户可以从我的页面添加来自 3rd 方商业网站(amazon、shopify、magento 等)的产品。用户选择多个产品然后单击结帐,然后页面将他们重定向到第 3 方商务网站的结帐页面。

这适用于亚马逊,因为他们有一个我们代理的服务器端 API。输入:一堆产品,输出:结帐 URL。很简单,而且效果很好。

但是,我们坚持使用 magento。

  • 没有用于将产品添加到用户远程购物车的公共 API
  • 未记录的 API 只支持一次添加一个产品,所以支持多个产品需要多次 API 调用(这很慢)
  • 大多数 magento 站点始终不支持 HTTPS 和/或重定向到 HTTP,我们的站点使用 HTTPS。因此,它实际上不起作用。
  • 我们在尝试 AJAX 请求时遇到了 CORS 问题——我们目前正在使用 iframe 破解它。
  • 第一个请求给了我们一个“无 cookie”错误页面,而不是实际将其添加到购物车中。

有没有办法解决这个问题?magento 支持 CORS 请求吗?magento 对 HTTPS 的支持是什么?

我看到http://community.magento.com/t5/Programming-Questions/API-Redirecting-user-to-magento-instance-to-view-their-cart/mp/9113#M2029要求我们的客户安装扩展,但这可能是不可接受的

4

2 回答 2

1

也许你可以用这样的查询字符串试试?

<?php

$formKey = Mage::getSingleton('core/session')->getFormKey();?>

<form action="/checkout/cart/add/product/<?php echo $productid; ?>" method="post">
    <input type="hidden" name="form_key" value="<?php echo $formKey; ?>" />

    <input type="text" name="qty"> QTY

    <input type="submit" value="Add to basket" />
</form>
于 2015-09-15T14:53:02.107 回答
1

尽管 Magento 中没有开箱即用的 API 功能支持这一点,但可以通过编写一个小的 API 模块来扩展 Magento 以支持这一点,安装在 Magento 中以使其工作。通过创建 API 扩展,您可以制定规则,例如接受要添加到购物篮的多个产品。

Magento 的文档一直很差,通常像我这样的开发人员必须调试和单步调试代码,以了解特定功能的实际工作方式。一旦你变得足够熟练,你就会开始看到一个“更大的图景”,它可以让你“预测”Magento 的行为,并且通常可以让你跳过一步一步的调试调查。

我建议您从专业开发人员那里获得帮助来构建它(我会说至少有 2-3 年的后端开发经验),并让经过认证的 Magento 开发人员来帮助您:业余爱好者可能会做出可行的解决方案花更少的钱,但从长远来看,你会付出代价,更不用说你的模块在 Magento 版本和版本之间的可移植性,以及与安全相关的问题(XSS、SQL 注入等)。

Magento 支持 HTTPS(实际上,这取决于站点的系统管理员,以正确配置 Web 服务器),并且有一点 CORS 支持(默认情况下,实施“同源”策略)。更改 CORS 也将是一项开发任务,尽管我并不真正了解这与 REST 或 SOAP API 有什么关系。

另外,请注意 Magento 严重依赖 cookie 来支持会话(并且针对客户会话将购物篮存储在数据库中)。

这就是我真正能说的,提供的关于您的实际问题的信息很少。

如果您需要更多信息,我很乐意提供帮助,但我需要更多详细信息,以便找出最佳解决方案。

于 2015-09-08T18:14:05.060 回答