{"id":27594,"date":"2021-05-19T12:18:00","date_gmt":"2021-05-19T09:18:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27594"},"modified":"2021-10-18T04:11:10","modified_gmt":"2021-10-18T01:11:10","slug":"um-guia-rapido-sobre-woocommerce-rest-api","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/um-guia-rapido-sobre-woocommerce-rest-api\/","title":{"rendered":"Um guia r\u00e1pido sobre WooCommerce REST API"},"content":{"rendered":"<p>Voc\u00ea est\u00e1 procurando interagir com a API WooCommerce REST? O WooCommerce fornece uma API REST que obter\u00e1 dados em tempo real do back-end que podem ser colocados em qualquer lugar em seu aplicativo externo. Por meio de sua API REST, \u00e9 poss\u00edvel gerenciar seus dados WooCommerce acessando os terminais. Neste artigo, estudamos como usar a API REST do WooCommerce e enviar solicita\u00e7\u00f5es HTTP para o WooCommerce.<\/p>\n<p>Se voc\u00ea deseja construir sua pr\u00f3pria loja, voc\u00ea pode usar WooCommerce como back-end para gerenciar seus produtos, imagens de produtos, galeria, etc. E, em seguida, usando a API REST, buscar os dados do produto e exibi-los em seu aplicativo externo. O WooCommerce fornece uma <a href=\"https:\/\/woocommerce.github.io\/woocommerce-rest-api-docs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documenta\u00e7\u00e3o da API REST<\/a> para interagir com o back-end. Aqui voc\u00ea obter\u00e1 os detalhes sobre tudo, como produtos, clientes, pedidos, impostos, etc. Neste artigo, vamos interagir com os terminais do produto. De forma semelhante, voc\u00ea pode integrar outras op\u00e7\u00f5es como clientes, pedidos, etc.<\/p>\n<h3>Obtenha sua chave e segredo do consumidor<\/h3>\n<p>Para come\u00e7ar a usar a API REST do WooCommerce, primeiro voc\u00ea precisa obter sua chave e segredo do consumidor. Essas chaves s\u00e3o a identifica\u00e7\u00e3o da loja e s\u00e3o necess\u00e1rias ao fornecer uma chamada de API para WooCommerce.<\/p>\n<p>Voc\u00ea deve instalar o WooCommerce em seu back-end do WordPress. Em seguida, v\u00e1 para a p\u00e1gina <strong>WooCommerce-&gt; Configura\u00e7\u00f5es<\/strong>. Clique na guia Avan\u00e7ado e, em seguida, no link REST API.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-6082042fde2a8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-6082042fde2a8.png\" alt=\"Um guia r\u00e1pido sobre WooCommerce REST API\" ><\/a><\/p>\n<p>Nesta p\u00e1gina, clique no bot\u00e3o &#8216;Criar uma chave API&#8217;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-60820430658a2.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-60820430658a2.png\" alt=\"Um guia r\u00e1pido sobre WooCommerce REST API\" ><\/a><\/p>\n<p>Insira a descri\u00e7\u00e3o, escolha as permiss\u00f5es &#8216;Ler \/ Gravar&#8217; e clique no bot\u00e3o Gerar chave API. Voc\u00ea tamb\u00e9m pode escolher a permiss\u00e3o de leitura. Depende de sua necessidade. Se voc\u00ea s\u00f3 precisa ler os dados do WooCommerce, escolha a op\u00e7\u00e3o &#8216;Ler&#8217;. E se voc\u00ea quiser fazer opera\u00e7\u00f5es de leitura e grava\u00e7\u00e3o, sua op\u00e7\u00e3o seria &#8216;Ler \/ Gravar&#8217;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-60820430e1fa8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-60820430e1fa8.png\" alt=\"Um guia r\u00e1pido sobre WooCommerce REST API\" ><\/a><\/p>\n<p>Copie a chave e o segredo do consumidor que ser\u00e3o necess\u00e1rios ao fazer chamadas de API.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-60820430e1fa8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-60820430e1fa8.png\" alt=\"Um guia r\u00e1pido sobre WooCommerce REST API\" ><\/a><\/p>\n<h3>Interaja com a API WooCommerce REST<\/h3>\n<p>Assim que estiver pronto com sua chave e segredo do consumidor, podemos come\u00e7ar com o c\u00f3digo que interage com o WooCommerce. Como precisamos enviar solicita\u00e7\u00f5es HTTP, instale a biblioteca Guzzle usando o comando abaixo.<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p><a href=\"https:\/\/artisansweb.net\/use-guzzle-php-http-client-sending-http-requests\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a>Guzzle \u00e9 um cliente PHP HTTP que torna f\u00e1cil o envio de solicita\u00e7\u00f5es HTTP e trivial para integra\u00e7\u00e3o com servi\u00e7os da web.<\/p>\n<p>Agora vamos pegar alguns terminais, como obter todos os produtos, obter um \u00fanico produto, atualizar um produto e integr\u00e1-lo.<\/p>\n<h4>Obtenha produtos<\/h4>\n<p>Ao chamar os pontos de extremidade da API WooCommerce, voc\u00ea precisa definir o cabe\u00e7alho de autoriza\u00e7\u00e3o, que \u00e9 uma string codificada em base64 de sua chave e segredo do consumidor.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\nuse GuzzleHttpClient;\n\u00a0\ndefine('WC_CONSUMER_KEY', 'PASTE_CONSUMER_KEY');\ndefine('WC_CONSUMER_SECRET', 'PASTE_CONSUMER_SECRET');\n\u00a0\u00a0\n$client = new Client([\n\u00a0\u00a0\u00a0\u00a0\/\/ Base URI is used with relative requests\n\u00a0\u00a0\u00a0\u00a0'base_uri' =&gt; 'YOUR_DOMAIN_BASE_URL',\n]);\n\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('GET', '\/wp-json\/wc\/v3\/products', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'headers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Basic \". base64_encode(WC_CONSUMER_KEY.':'.WC_CONSUMER_SECRET)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'query' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'per_page' =&gt; 18,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'verify' =&gt; false, \/\/only needed if you are facing SSL certificate issue\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$body = $response-&gt;getBody();\n\u00a0\u00a0\u00a0\u00a0$arr_body = json_decode($body);\n\u00a0\u00a0\u00a0\u00a0print_r($arr_body);\n} catch (Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>No c\u00f3digo acima, chamei o endpoint, que fornece uma lista de produtos. Aqui, passei 18 como um valor &#8216;por p\u00e1gina&#8217;, que fornecer\u00e1 18 dados do produto em resposta. Voc\u00ea pode passar esse valor de acordo com sua necessidade. Certifique-se de substituir os marcadores pelos valores reais antes de atingir o ponto de extremidade.<\/p>\n<h4>Obtenha um \u00fanico produto<\/h4>\n<p>Se voc\u00ea deseja buscar os dados de um \u00fanico produto, seu endpoint ser\u00e1 o seguinte.<\/p>\n<pre><code>$response = $client-&gt;request('GET', '\/wp-json\/wc\/v3\/products\/PRODUCT_ID_HERE', [\n\u00a0\u00a0\u00a0\u00a0'headers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Basic \". base64_encode(WC_CONSUMER_KEY.':'.WC_CONSUMER_SECRET)\n\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0'verify' =&gt; false,\n]);<\/code><\/pre>\n<h4>Atualizar um produto<\/h4>\n<p>Voc\u00ea pode atualizar um produto enviando uma solicita\u00e7\u00e3o PUT para o endpoint da API. Digamos que voc\u00ea queira atualizar um regular_price de seu produto.<\/p>\n<pre><code>$response = $client-&gt;request('PUT', '\/wp-json\/wc\/v3\/products\/PRODUCT_ID_HERE', [\n\u00a0\u00a0\u00a0\u00a0'headers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Basic \". base64_encode(WC_CONSUMER_KEY.':'.WC_CONSUMER_SECRET)\n\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0'json' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'regular_price' =&gt; '12.20',\n\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0'verify' =&gt; false,\n]);<\/code><\/pre>\n<p>Estas s\u00e3o algumas liga\u00e7\u00f5es b\u00e1sicas. Da mesma forma, o usu\u00e1rio pode enviar solicita\u00e7\u00e3o HTTP para Clientes, Pedidos, Cupons, etc. Voc\u00ea pode ler mais sobre isso na <a href=\"https:\/\/woocommerce.github.io\/woocommerce-rest-api-docs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documenta\u00e7\u00e3o oficial<\/a>.<\/p>\n<h3>Interaja com a API REST WooCommerce usando JavaScript<\/h3>\n<p>WooCommerce lan\u00e7a sua pr\u00f3pria <a href=\"https:\/\/www.npmjs.com\/package\/@woocommerce\/woocommerce-rest-api\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">biblioteca JavaScript<\/a> que \u00e9 \u00fatil para enviar chamadas de API para WooCommerce a partir da estrutura JavaScript. Digamos que voc\u00ea queira interagir com a API REST de seu aplicativo baseado em React.<\/p>\n<p>Nesse caso, instale a biblioteca &#8216;@ woocommerce \/ woocommerce-rest-api&#8217; pelo comando:<\/p>\n<pre><code>npm install --save @woocommerce\/woocommerce-rest-api<\/code><\/pre>\n<p>Em seguida, em seu componente React, voc\u00ea pode obter a lista de produtos usando o c\u00f3digo abaixo.<\/p>\n<pre><code>import React from 'react';\nimport ReactDOM from 'react-dom';\nimport WooCommerceRestApi from \"@woocommerce\/woocommerce-rest-api\";\n\u00a0\nclass ProductsComponent extends React.Component {\n\u00a0\u00a0constructor(props) {\n\u00a0\u00a0\u00a0\u00a0super(props);\n\u00a0\u00a0\u00a0\u00a0this.state = {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0products: []\n\u00a0\u00a0\u00a0\u00a0};\n\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0componentDidMount() {\n\u00a0\u00a0\u00a0\u00a0const api = new WooCommerceRestApi({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url: \"YOUR_DOMAIN_BASE_URL\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0consumerKey: \"PASTE_CONSUMER_KEY\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0consumerSecret: \"PASTE_CONSUMER_SECRET\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0version: \"wc\/v3\"\n\u00a0\u00a0\u00a0\u00a0});\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ List products\n\u00a0\u00a0\u00a0\u00a0api.get(\"products\", {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0per_page: 18, \/\/ 18 products per page\n\u00a0\u00a0\u00a0\u00a0})\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.then((response) =&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Successful request\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.setState({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0products: response.data\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.catch((error) =&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Invalid request, for 4xx and 5xx statuses\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.finally(() =&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Always executed.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0render() {\n\u00a0\u00a0\u00a0\u00a0return (\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h2&gt;Products&lt;\/h2&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;ul&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{this.state.products.map(product =&gt; (\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;li key={product.id}&gt;{product.name} - ${product.regular_price}&lt;\/li&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0))}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/ul&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0}\n}\n\u00a0\nconst element = &lt;ProductsComponent&gt;&lt;\/ProductsComponent&gt;\n\u00a0\nReactDOM.render(element, document.getElementById(\"root\"));<\/code><\/pre>\n<p>Aqui, estou imprimindo a lista de nomes e pre\u00e7os de produtos. O usu\u00e1rio tamb\u00e9m pode imprimir outros dados. Se voc\u00ea quiser ver todos os dados no console, registre o response.data no m\u00e9todo de sucesso. Assim como no exemplo acima, voc\u00ea pode enviar outras solicita\u00e7\u00f5es HTTP de seu aplicativo React.<\/p>\n<h3>Conclus\u00e3o<\/h3>\n<p>Neste tutorial, estudamos sobre como chamar a API WooCommerce REST usando PHP e JavaScript. Passamos por alguns endpoints de API do WooCommerce. O usu\u00e1rio pode brincar com o outro endpoint seguindo a documenta\u00e7\u00e3o e enviando as solicita\u00e7\u00f5es HTTP necess\u00e1rias.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se voc\u00ea est\u00e1 procurando construir uma loja online, WooCommerce \u00e9 uma das melhores op\u00e7\u00f5es. Podemos usar WooCommerce REST API e construir loja em qualquer idioma.<\/p>\n","protected":false},"author":1,"featured_media":22224,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[317,502,278,613],"tags":[848],"class_list":["post-27594","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-base-de-dados","category-laravel","category-php-9","category-uncategorized-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27594"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27594\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/22224"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}