WooCommerce 从A网站创建一个订单到B网站

基本上我一直在寻找方法,当客户从WooCommerce网站的 “我的账户 “页面注册时,在Bxx WooCommerce网站上创建一个订单。

这样做的原因是,我在Bxx上使用电子邮件营销,而从其他网站添加电子邮件联系人的唯一方法是使用WooCommerce提供的 “REST API”。

现在学会了这方法,所以你也可以设法实现复杂的东西。下面内容能为你省去了几个小时,你可以弄清楚系统是如何工作的,如有更好的方法,请与我讨论!

那么,当一个网站发生事件时,你如何在一个网站上创建一个WooCommerce订单?一起来看看吧!

创建一组REST API密钥

进入你想创建订单的网站,然后进入WooCommerce -> Settings -> Advanced -> REST API -> Add key。输入你的描述,最重要的是将权限设为 “读/写”。点击 “生成API密钥”。

现在你将看到一组密钥,特别是 “Consumer Key ” 和 “Consumer Secret”。

现在,您希望创建订单的网站(或任何东西,如WooCommerce产品、客户等)已经 “准备就绪”,因为我们刚刚为另一个网站创建了一种与之沟通、读取和写入的方式。

在其他网站上添加代码

一旦其他网站上发生了什么,例如提交了一个表格,你可以使用一些代码来 “发送数据 “到你想以编程方式创建订单的网站。

在我的案例中,我选择了 “woocommerce_created_customer “钩子:只要WooCommerce的客户在https://you-b.com(看到主页上面的注册表吗?),我就希望在 Bxx 上创建一个订单。我已经在 Bxx 上创建了API密钥,所以我可以将两者连接起来,让它们发挥其魔力。

PHP片段。当网站 “B”上发生事件时,在WooCommerce网站 “A “上创建订单

注意:当然要把你的 Consumer Key 和 Consumer Secret 粘贴到 $live_ck 和 $live_cs 的变量中。同时,将 $live_url 网站地址改为你的!

add_action( 'woocommerce_created_customer', 'bbloomer_create_order_from_wcwkly', 9999, 3 ); 
function bbloomer_create_order_from_wcwkly( $customer_id, $new_customer_data, $password_generated ) {
   $live_ck = 'ck_0fd00c39d21d4e4d3eab43085ca1dd46ef030087';  // A站点 Consumer Key 
   $live_cs = 'cs_8b298f41f7c1d4bf2704b35d56b52e7b05ddddab';  // A站点 Consumer Secret
   $live_url = 'https://www.you-a.com/wp-json/wc/v3/orders?consumer_key=' . $live_ck . '&consumer_secret=' . $live_cs;
   $customer = new WC_Customer( $customer_id );
   $body = array(
      'status' => 'completed',
      'meta_data' => array( array( 
         'key' => 'createdby',
         'value' => 'you-b.com'   //B
      )),
      'total' => 0,
      'billing' => array(
         'first_name' => $customer->get_billing_first_name(),
         'email' => $customer->get_email(),
      ),
      'line_items' => array( array( 
         'product_id' => 195376,
         'quantity' => 1,
      )),
   );
   $raw_response = wp_remote_post( $live_url, 
      array(
         'headers' => array( 'Content-Type' => 'application/json' ),
         'timeout' => 30,                    
         'body' => json_encode( $body ),
      )
   );
}

在案例中,正如你从代码中看到的,创建一个状态为已完成的订单,在其中记录了一些元数据,说该订单是由其他网站的URL创建的,总额设置为0元,加入了账单的名字和电子邮件,以及一个ID=195376 和 数量=1 的产品。

所有可以使用的参数都在这里:https://woocommerce.github.io/woocommerce-rest-api-docs/#order-properties – 你可以设置任何参数,但不能为 “只读 ” 的参数。

最终结果?有了。测试用户输入 “www “作为名字,输入 “rodolfomelogli……@…. “作为帐单电子邮件,这是动态的一点数据,而其他的是通过代码设置的。

在哪里添加代码

你可以把上面PHP片段放在你的子主题的 functions.php 文件底部(结尾删除”?>” 如果有)。请群内与我讨论,网站不再开启讨论