学习 WooCommerce REST API

news2024/11/16 9:58:10

主要学习这个技术文档即可
WooCommerce REST API 技术文档

WooCommerce 官方文档

github : woocommerce/woocommerce

以下设置以及测试代码,都来自 WooCommerce REST API 技术文档

设置 REST API

  1. 设置 – 固定链接 (Settings > Permalinks.)
  2. WooCommerce – 设置 – 高级 – REST API --添加Key(WooCommerce > Settings > Advanced > REST API – Generate API keys)
  3. WooCommerce – 设置 – 高级 --旧版 API – 启用旧版 REST API ( Enable legacy REST API ) 我这里直接安装的新版,这一步就不需要了

Nodejs 测试

WooCommerce API - Node.js Client

  1. $ npm install --save woocommerce-api
    不行的话 $ sudo cnpm install --save woocommerce-api

  2. $ cat api_test.js

    请使用自己的 url , 换成自己的 key 和 secret

    var WooCommerceAPI = require('woocommerce-api');
     
    var WooCommerce = new WooCommerceAPI({
      url: 'https://wp85.XXXX.cn',
      consumerKey: 'ck_cf61c5516792ddb93aefb45999d3ffd369dcXXXX',
      consumerSecret: 'cs_a9ac5c1ca3d96fad52d36858faf1ffa98743XXXX',
      wpAPI: true,
      version: 'wc/v1' 
    });
    
    // 可选 products customers orders settings
    WooCommerce.getAsync('products').then(function(result) {
      // JSON.parse 后结果是一个数组,打印头一个试试
      // console.log(JSON.parse(result.toJSON().body));
      console.log(JSON.parse(result.toJSON().body)[0].categories);
      return JSON.parse(result.toJSON().body);
    });
    
  3. $ node api_test.js

     [ { id: 18, name: '电脑', slug: '%e7%94%b5%e8%84%91' } ]
    

PHP 测试

automattic/woocommerce

  1. composer require automattic/woocommerce

  2. $ cat api_test.php
    请使用自己的 url , 换成自己的 key 和 secret

     <?php
     require __DIR__ . '/vendor/autoload.php';
     
     use Automattic\WooCommerce\Client;
     
     $woocommerce = new Client(
       'https://wp85.XXXX.cn',
       'ck_cf61c5516792ddb93aefb45999d3ffd369dcXXXX',
       'cs_a9ac5c1ca3d96fad52d36858faf1ffa98743XXXX',
       [
         'version' => 'wc/v3'
       ]
     );
     
     use Automattic\WooCommerce\HttpClient\HttpClientException;
     
     try {
       // Array of response results.
       $results = $woocommerce->get('products');
       // Example: ['customers' => [[ 'id' => 8, 'created_at' => '2015-05-06T17:43:51Z', 'email' => ...
       // 返回的是一个数组,单独打印头一个 products 试试
       echo '<pre><code>' . print_r($results[0]->categories, true) . '</code><pre>'; // JSON output.
       
       echo '<pre><code>' . print_r($results, true) . '</code><pre>'; // JSON output.
     
       // Last request data.
       $lastRequest = $woocommerce->http->getRequest();
       echo '<pre><code>' . print_r($lastRequest->getUrl(), true) . '</code><pre>'; // Requested URL (string).
       echo '<pre><code>' .
         print_r($lastRequest->getMethod(), true) .
         '</code><pre>'; // Request method (string).
       echo '<pre><code>' .
         print_r($lastRequest->getParameters(), true) .
         '</code><pre>'; // Request parameters (array).
       echo '<pre><code>' .
         print_r($lastRequest->getHeaders(), true) .
         '</code><pre>'; // Request headers (array).
       echo '<pre><code>' . print_r($lastRequest->getBody(), true) . '</code><pre>'; // Request body (JSON).
     
       // Last response data.
       $lastResponse = $woocommerce->http->getResponse();
       echo '<pre><code>' . print_r($lastResponse->getCode(), true) . '</code><pre>'; // Response code (int).
       echo '<pre><code>' .
         print_r($lastResponse->getHeaders(), true) .
         '</code><pre>'; // Response headers (array).
       echo '<pre><code>' . print_r($lastResponse->getBody(), true) . '</code><pre>'; // Response body (JSON).
     } catch (HttpClientException $e) {
       echo '<pre><code>' . print_r($e->getMessage(), true) . '</code><pre>'; // Error message.
       echo '<pre><code>' . print_r($e->getRequest(), true) . '</code><pre>'; // Last request data.
       echo '<pre><code>' . print_r($e->getResponse(), true) . '</code><pre>'; // Last response data.
    
  3. $ php api_test.php

    Array
     (
         [0] => stdClass Object
             (
                 [id] => 18
                 [name] => 电脑
                 [slug] => %e7%94%b5%e8%84%91
             )
     
     )
     ...
    
  4. 或者放到网站目录
    http://127.0.0.1/wooCommerce/api_test.php

在这里插入图片描述

错误处理

问题

  1. php 错误: Error: Consumer Key 无效。 [woocommerce_rest_authentication_error]Automattic\WooCommerce\HttpClient\Request Object

  2. node 错误: body: ‘{“code”:“woocommerce_rest_authentication_error”,“message”:“Consumer Key \u65e0\u6548\u3002”,“data”:{“status”:401}}’,

  3. 其实这个问题就是 WooCommerce REST API 官方文档
    的问题 :
    “woocommerce_rest_cannot_view” or 401 error while making a request?

解决方式

之前学习的时候使用的 IP + 端口方式 ,没有 HTTPS
所以死活过不去!

只好重新配置网站,使用正确的 ssl 证书和 https 访问
因为只在虚拟机学习,本地 /etc/hosts 直接加上一条,居然也可以!

$ cat /etc/hosts

...
# wzh 20230621
192.168.0.105 wp85.XXXX.cn
...

再次测试,OK!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL - 第4节 - MySQL数据类型

目录 1.数据类型的作用 2.数据类型分类 3.数值类型 3.1.tinyint类型 3.2.bit类型 3.3.float类型 3.4.decimal类型 4.字符串类型 4.1.char类型 4.2.varchar类型 4.3.char和varchar比较 5.时间日期类型 6.enum和set类型 6.1.enum和set类型 6.2.调查表案例 6.3.通…

二手车交易APP开发功能有哪些?

二手车交易APP开发功能有哪些&#xff1f; 1、车辆估价&#xff1a;在选购二手车时&#xff0c;了解车辆的市场价值是非常重要的。为了保证客户能够准确估计车辆的价值&#xff0c;二手车APP软件开发应该具备车辆估价功能。用户可以通过APP输入车辆的基本信息&#xff0…

离线(内网)主机创建python项目运行环境

一、创建requirements.txt文件 文件中是python项目需要的依赖和版本号 二、把依赖下载到本地 准备一个能联网的pc&#xff0c;把依赖下载到本地 pip download -d ./venv -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple/这个命令会把依赖下载到venv文件夹…

指数全线收跌,上证跌破3200点,仅4137只个股下跌!

如题&#xff0c;端午假期前一天&#xff0c;A股指数全线收跌&#xff0c;上证指数跌破3200点&#xff0c;仅4137只个股下跌&#xff01;就问你服不服&#xff1f; 不要急&#xff0c;不要慌&#xff0c;我们来细细分析。 过去一两周&#xff0c;上证指数以震荡为主&#xff…

嵌入式Linux学习入门

大四毕业了&#xff0c;签了一份嵌入式开发的工作&#xff0c;现在准备入门了&#xff0c;搜集一些要学习的内容。 嵌入式开发学习路线 51单片机&#xff0c;arm&#xff0c;stm32在单片机上 在单片机上编程c语言和在嵌入式系统写c语言&#xff0c;有很大不同 gcc又与我们普…

与反恐、反间谍科同级,美国国家安全部设立网络安全科

美国国家安全部&#xff08;NSD&#xff09;成立了一个新的网络部门&#xff0c;旨在能够更有力地应对高技术性的网络威胁。 这个新成立的部门&#xff0c;正式名称为国家网络安全科&#xff0c;是为了响应美国司法部 &#xff08;DoJ&#xff09; 2022 年全面网络审查中的核心…

导致JVM内存泄露的ThreadLocal详解

很常见的关于ThreadLocal的面试题的问法&#xff1a; 1.说说你对ThreadLocal的理解。 2.ThreadLocal 是什么&#xff1f;有哪 些使用场景&#xff1f;什么是线程局部变量&#xff1f; 3.ThreadLocal内存泄漏分析与解决方案。 ps:想理解好ThreadLocal&#xff0c;必须先得理…

Spring Boot命令行启动添加参数

一、Spring Boot命令行三种参数形式 通过java -jar启动springboot的jar项目时&#xff0c;可以动态传递参数来进行配置和开发&#xff0c;比如 java -jar xxx.jar --server.port8081 可以通过server.port修改项目启动的端口&#xff0c;通过命令行传递的参数具有更高的优先级…

华为OD机试 JavaScript 实现【最优策略组合下的总的系统消耗资源数】【牛客练习题】,附详细解题思路

一、题目描述 在通信系统中有一个常见的问题是对用户进行不同策略的调度&#xff0c;会得到不同系统消耗的性能。 假设由N个待串行用户&#xff0c;每个用户可以使用A/B/C三种不同的调度策略&#xff0c;不同的策略会消耗不同的系统资源。 请你根据如下规则进行用户调度&…

【Java-SpringBoot+Vue+MySql】Day3.2-RESTful风格

目录 一、RESTful风格介绍 1、知识轰炸 2、代码演练 &#xff08;1&#xff09;测试get接口 &#xff08;2&#xff09;测试Post接口 &#xff08;3&#xff09;测试Put接口 &#xff08;4&#xff09;测试delete接口 二、Swagger介绍 1、知识轰炸 2、实操演练 &#x…

Android修行手册-多路USB外接摄像头

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

CSS3-盒子模型

盒子模型的介绍 盒子概念 盒子组成 盒子内减 拓展 1. 盒子的概念 1 页面中的每一个标签&#xff0c;都可看做是一个 “盒子”&#xff0c;通过盒子的视角更方便的进行布局 2 浏览器在渲染&#xff08;显示&#xff09;网页时&#xff0c;会将网页中的元素看做是一个个的矩形区域…

Selenium详解

Selenium 环境配置好之后&#xff0c;我们就可以使用 Selenium 来操作浏览器&#xff0c;做一些我们想做的事情了。在我们爬取网页过程中&#xff0c;经常发现我们想要获得的数据并不能简单的通过解析 HTML 代码获取&#xff0c;这些数据是通过 AJAX 异步加载方式或经过 JS 渲染…

Python高级系列教程:Python闭包和装饰器

今天我们将继续讲解 Python 中的闭包和装饰器。虽然我们还没有详细学习这两个概念&#xff0c;但在面向对象编程中&#xff0c;我们已经经常使用装饰器了。装饰器可以给函数增加额外的功能&#xff0c;就像语法糖一样甜。在 Python 中&#xff0c;装饰器的格式通常是在函数上方…

三分钟学习一个python小知识1-----------我的对python的基本语法的理解

文章目录 一、变量定义二、数据类型三、条件语句四、循环语句五、函数定义总结 一、变量定义 在Python中&#xff0c;使用等号&#xff08;&#xff09;进行变量的定义&#xff0c;并不需要声明变量的类型&#xff0c;Python会自动根据赋值的数据类型来判断变量的类型&#xf…

算法篇——动态规划 完全和多重背包问题 (js版)

一些分析总结 01 背包 问题和 完全背包 问题的不同点在于&#xff0c;所有的物品只能使用一次&#xff0c;判断 哪些物品 装进背包里 物品价值和 最大&#xff1b;而 完全背包 问题中&#xff0c;所有物品都能使用n次&#xff0c;判断 哪个物品 装 n 个进去 物品价值和 最大。…

Mybatis源码分析_日志模块 (1)

不得不承认&#xff0c;学习MyBatis的时间成本要比学习Spring低很多&#xff0c;Mybatis是我所了解过的代码量最小、整体架构最简单&#xff0c;但是又是最具有学习价值的一个框架。如果&#xff0c;你想快速的阅读一个框架的源码&#xff0c;并且掌握这个框架的精髓&#xff0…

浅析GeoServer CVE-2023-25157 SQL注入

简介 GeoServer是一个开源的地图服务器&#xff0c;它是遵循OpenGIS Web服务器规范的J2EE实现&#xff0c;通过它可以方便的将地图数据发布为地图服务&#xff0c;实现地理空间数据在用户之间的共享。 影响版本 geoserver<2.18.7 2.19.0<geoserver<2.19.7 2.20.0…

国内外八大敏捷开发工具盘点

1、Leangoo领歌&#xff1b;官网&#xff1a;Leangoo领歌 - 高效企业必备的敏捷工具,Scrum工具,SAFe敏捷工具,敏捷项目管理,敏捷研发工具 2、VersionOne&#xff1b;官网&#xff1a;https://www.collab.net/products/versiononehttps://www.collab.net/products/versionone …

Python高级系列教程:Python高级语法与正则表达式

学习目标 1、能够掌握with语句的使用 2、能够知道生成器的两种创建方式 3、能够知道深拷贝和浅拷贝的区别 4、能够掌握Python中的正则表达式编写 一、Python高级语法 1、with语句和上下文管理器 ☆ with语句 Python提供了 with 语句的写法&#xff0c;既简单又安全。文件操…