Sử dụng REST API WooCommerce để tạo đơn hàng từ 1 trang web khác

Hôm nay Zubi Cloud sẽ chia sẻ 1 hướng dẫn rất tuyệt vời và chuyên nghiệp dành cho những lập trình viên đang thiết kế và phát triển Theme WordPress bán hàng sử dụng plugin WooCommerce. ĐÓ LÀ cách Sử dụng REST API WooCommerce để tạo đơn hàng từ một trang web khác.

 

Và nó hoạt động chắc chắn, bởi vì chúng tôi đã triển khai test nó trên 1 số trang web.

 

Về cơ bản, Zubi Cloud hướng dẫn bạn cách tạo đơn hàng trên trang web Zubi Cloud Store khi một khách hàng đăng ký tài khoản từ trang web id.zubicloud.com (Chú ý trang này phải là wp sử dụng plugin WooCommerce). Lý do để làm điều đó là chúng ta có thể sử dụng tiếp thị qua email trên Zubi Cloud Store và cách duy nhất để thêm địa chỉ liên hệ qua email từ một trang web khác là sử dụng “REST API” mà WooCommerce cung cấp.

 

Các bước hướng dẫn để Sử dụng REST API WooCommerce để tạo đơn hàng từ một trang web khác

1. Hãy tạo một tập hợp các khóa API REST

Truy cập trang web mà bạn muốn tạo đơn hàng, sau đó vào WooCommerce -> Cài đặt -> Nâng cao -> REST API -> Thêm khóa.

Nhập mô tả của bạn và quan trọng nhất là đặt quyền thành “Đọc / Viết”. Nhấp vào “Tạo khóa API”:

rest api woocommerce1

Bây giờ bạn sẽ được cung cấp API, và cụ thể là “Mã khách hàng” và “mã bí mật”:

rest api woocommerce2

Bây giờ, trang web của bạn nơi bạn muốn tạo đơn đặt hàng (hoặc bất cứ thứ gì, ví dụ như sản phẩm WooCommerce, khách hàng, v.v.) đã “sẵn sàng” vì chúng tôi vừa tạo một cách để một trang web khác giao tiếp với nó, đọc và viết .

2. Thêm mã vào trang web “khác”

Ngay sau khi điều gì đó xảy ra trên trang web khác, ví dụ như một biểu mẫu được gửi, bạn có thể sử dụng một số mã để “gửi dữ liệu” đến trang web mà bạn muốn tạo đơn hàng theo chương trình.

 

Trong trường hợp của tôi, tôi đã chọn hook “woocommerce_create_customer ”: ngay sau khi khách hàng WooCommerce đăng ký trên https://id.zubicloud.com Tôi muốn một đơn đặt hàng được tạo ra trên Zubi Cloud Store. Tôi đã tạo các khóa API trên Zubi Cloud Store, vì vậy tôi có thể kết nối hai khóa và để chúng phát huy tác dụng.

Tạo đơn hàng trên trang web WooCommerce “A” khi sự kiện xảy ra trên trang web “B”

Chèn đoạn code phía dưới vào file functions.php trong trang web mà bạn tạo ra khóa API

Lưu ý: Hãy thay đổi các thông số bên dưới đã tạo ra ở Bước 1 vào đoạn code bên dưới nhé.

  • $live_ck là mã khách hàng
  • $live_cs là mã bí mật
  • https://store.zubicloud.com/ là link web bạn tạo ra API ở bước 1.
  • ‘value’ => ‘id.zubicloud.com’ là trang web bạn để Form đặt hàng đăng ký
add_action( 'woocommerce_created_customer', 'zubicloud_create_order_from_wcwkly', 9999, 3 ); 

function zubicloud_create_order_from_wcwkly( $customer_id, $new_customer_data, $password_generated ) {
$live_ck = 'ck_blablabla';
$live_cs = 'cs_blablabla';
$live_url = 'https://store.zubicloud.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' => 'id.zubicloud.com'
)),
'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 ),
)
);
}

Trong trường hợp của tôi, như bạn có thể thấy từ mã, tôi đang tạo một đơn đặt hàng với trạng thái đã hoàn thành , tôi đang ghi một số dữ liệu meta trong đó bằng cách nói rằng đơn đặt hàng được tạo bởi URL trang web khác, tôi đang đặt tổng số thành $ 0, tôi đang thêm tên và email thanh toán cũng như một sản phẩm có ID = 195376 và số lượng = 1.

 

Tất cả các thông số có thể được sử dụng đều có tại đây: https://woocommerce.github.io/woocommerce-rest-api- docs / # order-properties – bạn có thể đặt bất kỳ tham số nào không phải là “chỉ đọc”.

 

Chúc bạn thành công.



Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments