0

我正在使用 Magento (v1.5.1.0) 的 SOAP API,并设法完成了创建购物车、添加用户、添加帐单/送货地址、付款方式等的整个过程,但是我无法获得优惠券工作。

我正在使用的代码如下:

    if ($couponCode != '') {
        try {
            $result = $this->magentoservice->shoppingCartCouponAdd($sessionId, $cartId, $couponCode);                
        } catch (Exception $err) {
            return $this->returnError($err->getMessage());
        }
    }

我已经尝试过使用来宾用户和注册用户,但我一直抛出相同的异常 - “访问被拒绝。”。据我从有限的文档和论坛帖子中可以看出,这甚至不是预期的错误。

$sessionId 和 $cartId 绝对有效。$couponCode 如果直接在 magento 前端输入就可以了。

谁能告诉我如何解决这个问题?

4

2 回答 2

1

感谢 John,我在 magento.stackexchange.com 网站上得到了答案。

https://magento.stackexchange.com/questions/2729/magento-api-gives-access-denied-when-trying-to-add-a-coupon

问题是 api 角色不包括对优惠券的访问。但是我没有看到这个的原因是它没有显示在后端。

直接编辑 api_role 表,我能够将购物车优惠券的 4 条记录设置为允许。

于 2013-04-03T07:18:30.523 回答
1

为了建立@Hyarion 的答案,我在 Magento v1.7 中接收的问题Access Denied是优惠券权限没有出现在我的 API 用户中,Admin > System > Web Services > xxx Roles > (select Role) > Role Resources所以我无法为我的 API 用户启用它们。

对我有用的修复是运行这个数据库查询,它应该影响 3 条记录(每个角色):

update api_rule set api_permission='allow' where role_id=1 -- Replace with your desired role id and resource_id like 'cart/coupon%'

于 2016-03-05T00:14:39.057 回答