如何将 Woocommerce WordPress 插件连接到基于 Spring Security Oauth2 JWT 的 Spring Boot API?

How to connect Woocommerce WordPress plugin to a Spring Boot API based on Spring Security Oauth2 JWT?

我是一名 Spring 开发人员,试图找出如何将 WordPress WooCommerce 网站连接到我的 REST Spring 启动服务。我没有使用过 WordPress,所以那里有很多未知数。我正在与 WordPress 方面的另一位开发人员合作,试图解决这个问题,但我们有点迷茫。

是否有 WordPress 网站访问 Spring 引导 Oauth2 API(包括 JWT 令牌交付服务)的最佳实践?

我的情况的具体描述:


现在状态(工作):

有人在 WooCommerce 网站上订购了产品,订单状态设置为处理中。

目标:

WordPress WooCommerce 后端调用 Spring 启动 API 来发送订购的产品数量。

我们的发现和尝试:


Spring开机:

我们发现 Spring boot outh2 是通往 REST API ENDPOINT 的途径 我找到的唯一资源是这一次,非常好而且足够:

https://developer.okta.com/blog/2018/04/02/client-creds-with-spring-boot

https://www.youtube.com/watch?v=X80nJ5T7YpE

WordPress:

问题是,我们在 WordPress Webhooks 上找到了很多,但没有找到很多关于如何使用令牌系统调用 API 端点的信息。 以下是我们使用的一些资源,但还不够:

https://developer.wordpress.org/plugins/http-api/

https://woocommerce.github.io/woocommerce-rest-api-docs/v3.html?shell#webhooks

https://duckduckgo.com/?q=wordpress+oauth2+rest+call&t=bravened&ia=web

关于本案例中的服务器到服务器通信,我们想了解的内容**(握手):


  1. WordPress中,我手动安全地存储用户名和密码 Spring 安全知道,在 WordPress 上。

  2. WordPress,一个订单已经完成。

  3. WordPress 调用 Spring 启动 Https 请求到 /api 并带有 Payload: 订单信息、密码和用户名

  4. Spring看到没有Token或者Token过期

  5. Spring 在请求负载中搜索 用户名和密码

  6. Spring 生成一个签名的JWT令牌基于用户名和密码。

  7. WordPress 收到令牌并且 stores 是安全的

  8. WordPress HTTPS 请求 /api with Payload: OrderInformation, Token .

  9. Spring 验证 令牌,接受订单信息

  10. Spring 对信息做任何需要做的事情以及何时做 一切顺利

  11. Spring Oauth2 必须以某种方式告诉 Woocomerce 信息 已 成功交付 否则 Woocomerce 必须重新发送 信息。并开始表格点

我们希望这个 POST 应该为有相同问题的人完成什么:


如果有人知道如何配置 WordPress WooCommerce 的任何资源或最佳实践,请让我们这些有很多未知数的人知道下一步该做什么。 我们希望这个 post 及其答案可以成为其他人找到所需信息的门户和顶点。

非常感谢您

我不确定 Spring Boot API 具体的,但我已经与其他 REST API 进行了这种类型的集成。

我建议使用 wordpress action hook。我推荐你使用的挂钩是 woocommerce_order_status_changed.

// define the woocommerce_order_status_changed callback 
function action_woocommerce_order_status_changed( $this_get_id, $this_status_transition_from, $this_status_transition_to, $instance ) { 
    // make action magic happen here... 
}; 
         
// add the action 
add_action( 'woocommerce_order_status_changed', 'action_woocommerce_order_status_changed', 10, 4 ); 

// make action magic happen here...处写下你与API联系的逻辑。 运行 您在 $this_status_transition_to 处理时的代码。 $instance 应该有 woocommerce 订单实例,您可以使用它推送到 API。

我想给出的一些建议是。

  1. 为了安全起见,将 API Token/Credentials 保存在环境变量中。
  2. 建议使用 Guzzle package to make http request. Use composer 安装包。