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

@ Hyarionの回答に基づいて構築するために、Magento v1.7で受け取った問題はAccess Denied、クーポンのアクセス許可がに表示され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 に答える
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 に答える