3

私は次のことを行おうとしています。標準のHTML/PHPWebサイトを構築しています。サイトに商品を掲載します。誰かが[カートに追加]をクリックすると、ユーザーは商品情報とともにShopifyに移動し、その商品がカートに追加されます(これまでのところ問題ありません...これを完了しました)。彼らがブラウザでクリックしてサイトに戻るとき(つまり、Shopifyカートを離れるとき)、ヘッダーにサイトの製品情報を表示できるようにする必要があります。「5製品|$168.00」のようなもの...基本的にサイト訪問者(shopifyではなく、私たちが構築したHTMLサイトにいる)がカート内の値を確認し、いつでもチェックアウトまたはカートを表示できるようにします。

私はこれに出くわしました:http://api.shopify.com/cart.html#show

私はJSONの初心者で、自分がやろうとしていることの例を探していましたが、見ていませんでした。

誰かのアドバイスや誰かが私を正しい方向に向けるのは素晴らしいことです。

4

4 に答える 4

8

Shopify は実際には、同じドメインから来ていることを前提として JSONP 形式のファイルを提供します (個々のユーザーを識別する Shopify Cookie にアクセスするため)。

言い換えると:

WordPress サイトが www.example.com にあるとします。

付随する「Shop Site」は、shop.example.com にあります (このドメインが Shopify 側のプライマリ ドメインであることを確認してください)。

WordPress サイトからカートにアクセスし、jQuery を使用してテンプレートまたはページに処理するには、次のように呼び出します。

jQuery.ajax({

    url: "//shop.example.com/cart.json",
    dataType: "jsonp",
    success: function( data ) {
        /* Template Code here */
    },
    error: function( jxhr, status, err ) {
        console.log("Error, status = " + status + ", err = " + err);
    }

});

JSONP 形式のファイルにより、クロスドメイン AJAX 呼び出しを Javascript の巧妙な方法で行うことができます。

于 2014-07-20T02:50:40.673 に答える
2

次の 2 つのページが役に立ちます。

リモート Web サイトからカートに追加する

今カートに追加するために何をしているのかわかりませんが、これが「正しい」方法です。すでにこれが機能しているので、あまり心配する必要はありません。

カートを取得するには、AJAX APIを使用する必要があります。この API を使用すると、リンク先の REST バージョンを使用せずに、現在のユーザーのカートを引くことができます。これは、より重いものを持ち上げるために設計されています (たとえば、現在アクティブなすべてのカートを取得するなど)。AJAX バージョンははるかにシンプルで、特にフロントエンドで使用するために設計されています。簡単に言えば、電話するだけです

http://[the-shop].myshopify.com/cart.js

現在のセッションのカートの内容が JSON で返されます。次のようになります。

{
"items": [
    {
        "handle": "aquarius",
        "line_price": 6000,
        "requires_shipping": true,
        "price": 2000,
        "title": "aquarius - medium",
        "url": "/products/aquarius",
        "quantity": 3,
        "id": 30104042,
        "grams": 181,
        "sku": "",
        "vendor": "the candi factory",
        "image": "http://static.shopify.com/s/files/1/0040/7092/products/aquarius_1.gif?1268045506",
        "variant_id": 30104042
    },
    {
        "handle": "amelia",
        "line_price": 4000,
        "requires_shipping": true,
        "price": 2000,
        "title": "amelia - medium",
        "url": "/products/amelia",
        "quantity": 2,
        "id": 30104012,
        "grams": 200,
        "sku": "",
        "vendor": "the candi factory",
        "image": "http://static.shopify.com/s/files/1/0040/7092/products/2766315_da1b.png?1268045506",
        "variant_id": 30104012
    }
],
"requires_shipping": true,
"total_price": 10000,
"attributes": null,
"item_count": 5,
"note": null,
"total_weight": 947

}

于 2012-04-28T00:19:37.410 に答える
1

誰かが同じ問題を抱えている場合に備えて。カメロンの答えは私の問題を解決しました。dataType を「jsonp」に設定している場合は、「.js」を「.json」に変更することを忘れないでください。

于 2014-10-15T03:56:04.433 に答える