7 votes

Comment ajouter des articles au panier à l'aide de l'API Shopify ?

Je travaille sur une application web personnalisée utilisant l'API Shopify. L'idée est d'utiliser l'application comme vitrine exclusive et de ne faire que des demandes à l'API Shopify. J'ai configuré une application privée dans mon compte Shopify pour ce faire.

Je n'ai aucun problème à récupérer les produits à partir de l'API (en utilisant le point de terminaison de l'API /admin/produits.json). Mais j'ai beaucoup de mal à faire en sorte que le produit soit ajouté au panier à partir de mon domaine, en utilisant le point de terminaison de l'API API Ajax J'obtiens la réponse JSON appropriée lorsque j'utilise mon client REST (j'utilise l'extension Postman de Google Chrome), mais je ne parviens pas à la faire fonctionner dans ma propre application.

Dans mon application, j'envoie une requête AJAX à mon propre serveur, qui appelle à son tour le point de terminaison de l'API à l'aide de curl et renvoie une réponse JSON (pour éviter le problème de l'inter-domaine/de l'utilisation de JSONP). Bien que les deux réponses JSON soient identiques, l'article n'est pas ajouté au panier dans mon application Web.

Code échantillon :

Javascript :

$(".add-to-cart").on('click', function() {
     // sample initialization code here
     // ...
        $.post("/url-to-server", {
            id: id, // this is the variant ID
            quantity: 1
        }, function(response) {
                    // more checking to make sure we have proper response
        });

        return false;
    });

Code côté serveur (PHP) :

protected function _ajax_add_item_to_cart()
{
    $args = $this->input->post();

    // custom app method that makes curl request
    $result = $this->_shopify_request('post', 'cart/add.js', $args);

    // custom app method that returns valid JSON
    return $this->json_response(true, 'Item Added!', [
        'item' => $result
    ]);
}

Exemple de réponse JSON (même résultat en utilisant le client REST de Postman) :

{
  "id": 313743963,
  "title": "All Natural GumBits 16oz",
  "price": 3800,
  "line_price": 3800,
  "quantity": 1,
  "sku": "",
  "grams": 0,
  "vendor": "horseshow",
  "properties": null,
  "variant_id": 313743963,
  "url": "/products/all-natural-gumbits-16oz",
  "image": "http://cdn.shopify.com/s/files/1/0235/4155/products/gumbits.png?43",
  "handle": "all-natural-gumbits-16oz",
  "requires_shipping": true
}

C'est la première application que je construis en utilisant l'API de Shopify, donc j'apprécierais toute aide que je pourrais obtenir. J'ai envisagé de m'inscrire auprès d'une application partenaire et d'utiliser l'authentification OAuth, mais cela semble excessif pour ce que je dois faire puisque je ne veux pas utiliser la vitrine Shopify et que je ne prévois pas de proposer mon application dans l'App Store de Shopify.

10voto

hjblok Points 1511

Il semble qu'il y ait un sans-papiers (documenté aquí ) pour transférer un client directement à la page de paiement (avec un panier pré-rempli). Il suffit de construire une URL spéciale, par exemple :

# order 1 item of product with variant_id 300823433
http://murray-inc9186.myshopify.com/cart/300823433:1

ou

# order 1 item  of product with variant_id 300823433
# order 2 items of product with variant_id 261826220
http://murray-inc9186.myshopify.com/cart/300823433:1,261826220:2

Vous pouvez peut-être utiliser cette URL spéciale au lieu d'envoyer un POST AJAX vers le panier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X