Beetechsoft liên kết API với Shopify
Trong thế giới thương mại điện tử ngày nay, khả năng tích hợp ứng dụng và dịch vụ vào các cửa hàng trực tuyến là điều cực kỳ quan trọng. Cùng với sự phát triển nhanh chóng của Shopify, một trong những nền tảng thương mại điện tử hàng đầu, việc Beetechsoft liên kết với API Shopify đã trở thành một phần quan trọng của chiến lược kinh doanh cho doanh nghiệp.
Nguồn: Tham khảo.
I. Shopify - Mạng lưới thương mại điện tử hàng đầu
Shopify là là một nền tảng thương mại điện tử (e-commerce) phổ biến và mạnh mẽ cho phép người dùng tạo và quản lý cửa hàng trực tuyến của họ. Nó cung cấp một loạt các công cụ và tính năng để giúp các doanh nhân, cửa hàng trực tuyến và những người có ý định kinh doanh trực tuyến tạo ra, quản lý và phát triển các cửa hàng trực tuyến của họ một cách dễ dàng và hiệu quả.
Dưới đây là một số điểm quan trọng về Shopify:
- Tạo cửa hàng trực tuyến: Shopify cho phép người dùng dễ dàng tạo cửa hàng trực tuyến riêng của họ mà không cần có kiến thức về lập trình. Người dùng có thể tùy chỉnh giao diện, thêm sản phẩm, quản lý đơn hàng và thực hiện nhiều tác vụ quản lý cửa hàng khác một cách đơn giản.
- Giao diện dễ sử dụng: Nền tảng này có giao diện thân thiện với người dùng và cung cấp trình tạo cửa hàng kéo và thả (drag-and-drop) cho phép bạn thiết kế trang web của bạn theo ý muốn.
Nguồn: Tham khảo.
- Quản Lý Sản Phẩm: Bạn có thể quản lý danh mục sản phẩm, tùy chỉnh thuộc tính và thông tin sản phẩm, quản lý tồn kho, và thậm chí tạo phiên bản sản phẩm với các biến thể khác nhau.
- Xử Lý Đơn Hàng: Shopify cung cấp các tính năng quản lý đơn hàng, cho phép bạn xem, xác nhận và xử lý các đơn đặt hàng từ khách hàng của bạn.
- Thanh Toán An Toàn: Shopify tích hợp với nhiều cổng thanh toán và hệ thống thanh toán trực tuyến, giúp bạn xử lý thanh toán an toàn và tiện lợi cho khách hàng.
- Phân Tích và Thống Kê: Bạn có thể theo dõi hiệu suất cửa hàng của mình thông qua báo cáo và phân tích, từ đó cải thiện chiến lược kinh doanh của bạn.
- Tùy Chọn Mở Rộng: Shopify hỗ trợ các ứng dụng và tích hợp bên ngoài để mở rộng tính năng và chức năng của cửa hàng của bạn.
- Hỗ Trợ Kỹ Thuật: Nền tảng cung cấp hỗ trợ kỹ thuật và tài liệu phát triển cho những người muốn tùy chỉnh và mở rộng cửa hàng của họ bằng cách sử dụng mã lập trình.
Shopify đã trở thành một trong những nền tảng thương mại điện tử phổ biến nhất trên toàn cầu, được sử dụng bởi hàng ngàn doanh nhân và cửa hàng trực tuyến để kinh doanh sản phẩm và dịch vụ của họ trực tuyến.
II. Tích hợp quản lý danh sách sản phẩm liên kết với Shopify trên hệ thống BeeID phát triển bởi Beetech
1. Tạo store và app trong Shopify
1.1. Tạo tài khoản Shopify Partners
+ Truy cập Shopify Developer Portal
+ Đăng nhập hoặc tạo tài khoản nếu bạn chưa có.
1.2. Tạo ứng dụng Shopify
+ Tạo một ứng dụng mới bằng cách nhấp vào "Create App"
+ Đặt tên cho ứng dụng của bạn và cung cấp các thông tin cần thiết.
+ Lấy thông tin xác thực Client ID và Client secret để xác thực với Shopify API.
1.3. Tạo store
2. Giải thích luồng liên kết website với API Shopify
Figure 1. Sơ đồ liên kết API Shopify
2.1. Xác thực với API Shopify
- Tương ứng với bước 1-4 trên Figure 1. Sơ đồ liên kết API Shopify
- Để xác thực, bạn cần sử dụng OAuth để gửi yêu cầu đến URL xác thực của Shopify theo link https:// store_name.myshopify.com/admin/oauth/authorize . Trong đó, store_name là tên cửa hàng Shopify mà bạn muốn tích hợp đã tạo ở mục 1.3.
- Sau khi xác thực ứng dụng sẽ nhận được access token. Sử dụng access token này để thực hiện request các API.
- Shopify hỗ trợ các SDK tương ứng với các ngôn ngữ khác nhau: curl, node.js, PHP, Python, Ruby, Go, .Net
2.2. Sử dụng API Shopify
- Sử dụng access token nhận được ở mục 2.1 để thực hiện các request API đến Shopify bằng cách thêm mã thông báo vào tiêu đề Authorization của yêu cầu.
Ví dụ: Response của API lấy danh sách sản phẩm trên Shopify
Figure 2. Ví dụ về API lấy danh sách sản phẩm trên Shopify
- Chi tiết các API của Shopify được mô tả tại đây
3. Tích hợp Shopify-API PHP SDK vào dự án BeeID với Laravel framework
3.1. Cài đặt thư viện Shopify-API PHP SDK bằng composer
$ composer require shopify/shopify-api
3.2. Tạo các file DbSessionStorage, CookieHandler và AuthRedirection
Tạo các file DbSessionStorage, CookieHandler và AuthRedirection trong thư mục App/Lib với nội dung trong link
DbSessionStorage: Xử lý lưu session
CookieHandler: Xử lý ghi cookie vào http request
AuthRedirection: gọi phương thức Shopify\Auth\OAuth::begin trả về URL sử dụng để chuyển hướng người dùng đến màn hình Xác thực Shopify
3.3. Tạo middleware EnsureShopifySession để xác thực đăng nhập shopify
Tạo file app/Http/Middleware/EnsureShopifySession.php với nội dung trong link
Khai báo middleware trong file app/Http/Kernel.php. Ở biến $routeMiddleware thêm dòng sau:
'shopify.auth' => \App\Http\Middleware\EnsureShopifySession::class, |
3.4. Khởi tạo thư viện shopify/shopify-api
Thêm đoạn code sau vào hàm boot của file app/Providers/AppServiceProvider.php
customDomain = env('SHOP_CUSTOM_DOMAIN', null); Context::initialize( env('SHOPIFY_API_KEY', 'not_defined'), env('SHOPIFY_API_SECRET', 'not_defined'), env('SHOPIFY_API_SCOPES', 'not_defined'), env('MY_DOMAIN, 'not_defined'), New DbSessionStorage(), ApiVersion::LATEST, false, false, null, '', null, (array)$customDomain, ); |
Khai báo các giá trị sau trong file .env
+ SHOPIFY_API_KEY: Giá trị CLIENT_ID lấy ở mục 1.3 Tạo ứng dụng Shopify
+ SHOPIFY_API_SECRET: Giá trị CLIENT_SECRET lấy ở mục 1.3 Tạo ứng dụng Shopify
+ SHOPIFY_API_SCOPES: Shopify API access scopes. Nối các scope cần sử dụng phân cách bởi dấu “,”
Ví dụ: read_products,write_products
(Tham khảo danh sách Shopify API access scopes)
+ DOMAIN: Domain của website của bạn
3.5. Tạo các route xác thực đăng nhập trong file routes/web.php
+ route /auth
Route::get('/api/auth', function (Request $request) { $shop = Utils::sanitizeShopDomain($request->query('shop')); // Delete any previously created OAuth sessions that were not completed (don't have an access token) Session::where('shop', $shop)->where('access_token', null)->delete(); return AuthRedirection::redirect($request); }); |
+ route /auth/callback
Route::get('/api/auth/callback', function (Request $request) { $session = OAuth::callback( $request->cookie(), $request->query(), 'App\Lib\CookieHandler', 'saveShopifyCookie'], ); return redirect(route('list-product')); })->name("api.auth.callback"); |
Như vậy, chúng ta đã hoàn thành mục 2.1: Xác thực với API Shopify
3.6. Thêm 1 route lấy list danh sách sản phẩm để hiển thị
Route::get('/api/products', function (Request $request) { /** @var AuthSession */ $session = $request->get('shopifySession'); // Provided by the shopify.auth middleware, guaranteed to be active $client = new Rest($session->getShop(), $session->getAccessToken()); $result = $client->get('products'); return view('products.index',['products'=>$result->getDecodedBody()['products']]); })->middleware('shopify.auth')->name('list-product'); |
Dòng $result = $client->get('products'); để thực hiện call API lấy danh sách sản phẩm từ Shopify
Tham số truyền vào là đường dẫn của Shopify API endpoint có định dạng:
+ Đường dẫn bắt đầu sau tiền tố /admin/api/{version}/, chẳng hạn như truyền vào 'products'thì sẽ thực hiện gọi API /admin/api/{version}/products.json
(Tham khảo danh sách các Shopify Rest API)
Kết quả sau cùng sẽ hiển thị danh sách sản phẩm liên kết với Shopify trên website như hình minh họa:
Figure 3 Danh sách sản phẩm trên shopify
Figure 4 Danh sách sản phẩm liên kết với Shopify trên website BeeID
4. Nguồn tham khảo
- Shopify: https://www.shopify.com/
- Shopify API Documentation: https://shopify.dev/docs/api
- Source code tham khảo: https://github.com/Shopify/shopify-app-template-php