当前位置: 首页 > 知识库问答 >
问题:

如何使用Guzzle更新Woocommerce订单API

商麒
2023-03-14
use stdClass;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;


$data = new stdClass();
$data->fulfillment = new stdClass();

$trackingUrl = "123456789";

$shopUrl = "localhost/Test";
$consumerKey = "cs_mykey";
$consumerSecret = "ck_mykey";
$orderId = "123";

$subPath = "/wc-api/v2/orders/".$orderId;

$data->fulfillment->tracking_url = $trackingUrl;
$data->fulfillment->status = 'completed';

$headers = array(
   'Content-Type: application/json'
);

$method = "POST";

$url = "http://localhost/Test/wc-api/v2/orders/123?oauth_consumer_key=ck_mykey&consumer_key=ck_mykey&consumer_secret=cs_mykey&oauth_timestamp=1505544895&oauth_nonce=9ecd49e80860e09ddaf91f148451532620976b8d&oauth_signature_method=HMAC-SHA256&oauth_signature=mysignature";

$Result = callApi($url, json_encode($data), $headers, $method);

echo '<pre>'; print_r($Result);


function callApi($url = NULL, $body = NULL, $headers = array(), $requestType = "POST")
{
   $client = new GuzzleHttp\Client();
   $body = $body ? $body : new stdClass();
   $request = $client->POST($url)->setPostField($body)->send();

  $data = $request->getBody()->getContents();
  return json_decode($data);

}

多谢了。

共有1个答案

易星宇
2023-03-14

在我改变了下面的功能之后,现在订单更新了。

function callApiPost($url = NULL, $body = NULL, $headers = array(), $requestType = "POST")
{

    $client = new Client();
    $body = $body ? $body : new stdClass();
    $request = new Request($requestType, $url, $headers, json_encode($body));
    $response = $client->send($request, ['timeout' => 10]);
    if($requestType === 'DELETE') {
        return $httpCode = $response->getStatusCode();
    } else {
        $data = $response->getBody()->getContents();
        return json_decode($data);
    }
}

通过使用guzzle我们不需要使用Post函数,我们只需要获取请求并发送请求,它将更新订单。

零钱。

 类似资料:
  • 当客户通过Ajax单击thank you页面上的一个按钮时,我正在尝试将woocommerce订单的状态从processing更改为completed。 我的代码如下: 和我的functions.php中的php 我知道ajax在没有语句的情况下可以正常工作,但使用它,我会得到一个500内部服务器错误。我还知道,如果我不使用ajax并将其挂到thank you页面中,那么它就会毫无问题地更改状态。

  • 我试图更新与WooCommerce订单相关的数据。我可以检索存量数据,但不能更新。在开始之前,我已经手动创建了订单,方法是转到仪表板的订单页面,单击添加订单按钮,然后填写发货和账单地址详细信息,并添加一些产品。 然后我创建一个woocommerce/checkout/FormPay的副本。php在我的主题中,我向其中添加了以下代码: 这将返回与URL中的id号对应的id号,因此我知道我在正确的位置

  • WooCommerce的订单页面内容繁多,如果直接打印后台页面,想必是惨不忍睹,还好有一款免费插件可以解决这个问题——WooCommerce Print Invoices & Delivery Notes,这个插件的好处是通过修改模版,你可以打印订单中的任何内容,漂亮的打印出来。 关于该插件的使用不再赘述,本文介绍如何修改打印模版,加入自己需要的数据。比如,加入产品缩略图和产品分类,效果如下图所示

  • 问题内容: 在WooCommerce中,从以下代码行: 如何从订单ID获取WooCommerce订单详细信息? 问题答案: 3.0版以上的WOOCOMMERCE订单 自Woocommerce大型主要更新3.0+以来,事情已经发生了很多变化: 对于 对象,无法像以前一样直接访问属性,并且会引发一些错误。 现在,对象实例需要使用new 以及 getter和setter方法。 此外,还有一些用于订购商品

  • 我已经将WooCommerce应用到我的网店,并连接了一个CorvusPay网关进行在线支付。 现在我们遇到的问题是,Corvus要求我的订单号包含字符(大写和小写)以及数字。 我在Wordpress中看到并尝试了许多插件和过滤器,了解如何更改我的订单号,但在订单处理并发送到Corvus的过程中,订单号仍然是原来的post ID。 我知道WooCommerce使用Wordpress帖子ID来创建初

  • 有没有可能为WooCommerce订单生成像R5U14D8PLA这样的随机订单号?所有的插件都有顺序或crc32哈希数字,但找不到一种方法,生成随机顺序数字(数字字母)