Hướng dẫn Merchant tích hợp với SaleMall

token=DoEncode("shop_id=SHOP_ID&code=MA_DON&status=TRANG_THAI_DON")

- Khách hàng sẽ nhúng mã này vào trang tạo đơn thành công. 5

ĐĂNG KÝ VÀ KẾT NỐI SHOP

1. Đăng ký shop mới

Mỗi Shop ~ 1 website bán hàng.

B1. Đăng ký shop : đăng nhập: https://salekit.vn  sẽ được chuyển tới trang TẠO SHOP mới

B2.  Tạo danh mục và sản phẩm. Nếu website của bạn có nhiều sản phẩm, hoặc thông tin sản phẩm được cập nhật thường xuyên thì bạn sử dụng API để đồng bộ sản phẩm sang SaleMall.

B3. Ký hợp đồng : SaleMall sẽ liên hệ với shop, thống nhất tỷ lệ hoa hồng và ký hợp đồng.

B4. Kết nối hệ thống

2. Các bước kết nối

B1. Đồng bộ sản phẩm 

Áp dụng với các shop có nhiều sản phẩm, hoặc thông tin sản phẩm thường xuyên thay đổi.

Merchant gọi chuyển thông tin sản phẩm sang SaleMall theo API với link như sau (giao thức POST)
https://server.salemall.vn/api/product

Truyền sang danh sách thông tin các sản phẩm cần đồng bộ theo cấu trúc như sau
shop_id=&token=&items=[JSON]

shop_id: ID của shop được tạo bên SaleMall

token là chuỗi bảo mật được sinh ra như sau : token = DoEncode("shop_id="), trong đó hàm DoEncode được mô tả ở Phụ lục 1a bên dưới, truyền vào chuỗi mã hóa được thiết lập theo ID của Shop

JSON là chuỗi thông tin các sản phẩm cần đồng bộ; Cấu trúc thông tin mỗi sản phẩm như ví dụ sau:

{" item_code":"B01","item_name":"Product name1","item_description":"Product desc1",
"item_price":50000,"item_price_sale":40000,"item_weight":200,"item_url":"http://lazada.vn/prd/1","item_aff_rate":15, "image_url":":"http://lazada.vn/prd/1","}

Chi tiết các tham số trong thông tin sản phẩm đề cập ở Phụ lục 2a bên dưới

Trong quá trình đồng bộ thông tin

  • Nếu sản phẩm chưa tồn tại bên SaleMall (kiểm tra theo item_code) thì sẽ thêm mới
  • Trường hợp sản phẩm đã tồn tại bên SaleMall thì sẽ cập nhật thông tin sản phẩm bên SaleMall

B2. Merchant lưu cookie 

Các tham số trong link bán hàng cần phải được lưu vào cookie trên trình duyệt của khách hàng :

  1. LAST CLICK : link sau sẽ đè link trước.
  2. EXPIRE DATE : thời gian tồn tại của cookie theo thống nhất hai bên, tối thiểu 30 ngày
  3. Các tham số gồm:
  • aff= (hoặc ref=) : mã của SaleMall trên Merchant website
  • link_id: mã link_id do SaleMall tạo ra (theo dõi click do user tạo ra từ link_id chia sẻ của affiliate)

Ví dụ: http://yourdomain.com/product/a-b-c?ref=salemall&link_id=123

B3. Merchant tạo đơn hàng

Khi user tạo đơn hàng, merchant tạo đơn và gửi thông tin sang cho SaleMall theo 1 trong 2 cách như sau

Chi tiết các tham số trong thông tin đơn hàng, sản phẩm của đơn hàng được đề cập ở Phụ lục 2b

3.1 Mã nhúng Javascript

Merchant nhúng mã sau vào trang web tạo đơn thành công

Merchant đặt giá trị vào biến smOrderSync  theo các tham số như sau:

smOrderSync=”type=create&shop_id=xxx&link_id=mmm&code=yyy&status=nnn&contact_code=….
&contact_name=…..&contact_email=…..&contact_mobile=…..&token=token&items=[JSON]”

JSON là chuỗi thông tin các sản phẩm trong đơn hàng; Cấu trúc thông tin mỗi sản phẩm như ví dụ sau:   

{"item_cat_id":1,"item_code":68,"item_name":"Tên sản phẩm","item_quantity":3,item_price":9000,
"revenue":10000,"comm”:20000}

3.2 Thông qua API

Merchant website sẽ gọi API với link như bên dưới qua phương thức POST
https://server.salemall.vn/api/order

Truyền sang mảng dữ liệu được khởi tạo từ các thông tin liên quan đến đơn hàng theo cấu trúc sau

type=create&shop_id=xx&link_id=mm&code=yy&status=S&contact_code=….&contact_name=…..
&contact_email=…..&contact_mobile=…..&token=token&items=[JSON]

JSON là chuỗi thông tin các sản phẩm trong đơn hàng truyền sang theo cấu trúc như trong phần 3.1        

B4. Merchant cập nhật đơn

Merchant website sẽ gọi API với link như bên dưới qua phương thức POST
https://server.salemall.vn/api/order

Truyền sang mảng dữ liệu được khởi tạo từ các thông tin liên quan đến đơn hàng theo cấu trúc sau

type=&shop_id=xx&code=yy&status=ss&contact_code=….&contact_name=…..
&contact_email=…..&contact_mobile=…..&token=token&items=[JSON]

JSON là chuỗi thông tin các sản phẩm trong đơn hàng theo cấu trúc giống lúc Tạo đơn hàng         

Các thông tin về khách hàng (contact) và/hoặc sản phẩm (JSON) chỉ cần truyền sang SaleMall nếu có thay đổi

B5. Test kết nối hệ thống

Phần này do đầu mối kỹ thuật của SaleMall và Merchant sẽ làm việc cùng với nhau, đảm bảo :

  • Ghi nhận đúng cookie affiliate
  • Truyền thông tin đơn hàng từ Merchant sang SaleMall theo thời gian thực
    • Thông tin đơn hàng mới
    • Thông tin cập nhật đơn hàng

Sau khi trạng thái đơn hàng được chuyển sang Đơn hàng Thành công thì Merchant không cập nhập được thông tin đơn hàng này bên SaleMall nữa

PHỤ LỤC

1. Cấu hình gọi API

a. Mã hóa token

Merchant truyền theo chuỗi mã hóa token dùng các hàm thư viện mã hóa do SaleMall cung cấp như sau

Code mã hóa tham khảo (mã hóa chuỗi INPUT, sử dụng chuỗi strShopKey là mã SaleMall cấp cho shop)

  • PHP

$strInput = INPUT ;

$value = new AES_Encryption($strShopKey, $strShopKey);

$token  = urlencode(base64_encode($value->encrypt($strInput)));

  • Java

$strInput = INPUT ;

$token  = URLEncoder.encode(AESEncryption.encrypt( strInput, strShopKey);

 

b. Giá trị trả về

Sau gọi API thì SaleMall sẽ trả về một trong các mã như sau

Mã trả về

Mô tả

200

Thành công: Trả về order_code vừa tạo thành công

40x

Có lỗi … (kèm thông báo lỗi tương ứng)

 

2. Tham số đồng bộ

a. Thông tin sản phẩm

Các tham số liên quan đến sản phẩm được chuyển sang SaleMall

  Tên trường  

Kiểu dữ liệu  

Bắt buộc?

Mô tả  

item_code

String

Y

Mã sản phẩm

item_name

String

Y

Tên sản phẩm

Item_cat_id

String

N

ID của danh mục sản phẩm

item_description

String

N

Mô tả sản phẩm

item_price

Integer

Y

Đơn giá gốc sản phẩm

Item_price_sale

Integer

Y

Đơn giá sản phẩm sau khi giảm (giá bán thực tế)

item_weight

Integer

N

Trọng lượng (theo gram)

item_url

String

Y

Link tới trang mô tả chi tiết sản phẩm trong website Merchant

item_aff_rate

String

N

Tỷ lệ hoa hồng chia sẻ cho affiliate (chỉ áp dụng khi hai bên đã thống nhất với nhau và tỷ lệ này lớn hơn tỷ lệ chia sẻ theo shop và theo danh mục)

image_url

String

N

Đường dẫn chi tiết đến file ảnh của sản phẩm

 

b. Thông tin đơn hàng

Tên tham số  

Kiểu dữ liệu  

Bắt buộc?

Mô tả  

shop_id

Integer

Y

ID của shop được tạo bên SaleMall

code

Integer

Y

Mã đơn hàng của merchant

items

String

Y

Chuỗi JSON chứa thông tin sản phẩm của đơn hàng:

item_cat_id: Mã danh mục của merchant(optional)

item_code: Mã sản phẩm

item_name: Tên sản phẩm

item_price: Đơn giá bán 1 sản phẩm (sau discount)

item_quantity: Số lượng sản phẩm trong đơn

revenue: Doanh thu các sản phẩm (optional)

comm:  Tổng hoa hồng chia cho SaleMall

comm_aff: Hoa hồng chia cho Affiliate (optional)

comm_mgr: Hoa hồng chia cho đại lý mẹ (optional)

comm_net: Hoa hồng chia cho network (optional)

status

Integer

Y

Trạng thái đơn hàng

·     0: Chờ duyệt,

·     1: Đang xử lý

·     2: Đang chuyển

·     3: Thành công

·     4: Hủy đơn

link_id

Integer

Y

Link affiliate lấy từ cookie (ghi nhận thông tin affiliate), lưu ý tên cookie mặc định là link_id, tên này có thể được tùy biến theo thống nhất giữa SaleMall và Merchant (khi tùy biến cần lưu ý cập nhật cả ở phần lưu thông tin cookie)

contact_name

String(50)

N

Tên khách hàng

contact_email

String(50)

N

Email khách hàng

contact_mobile

String(50)

N

Mobile khách hàng

note

String(255)

N

Ghi chú đơn hàng

token

String

Y

token=DoEncode("shop_id=&code=&status=")

Trong đó hàm DoEncode được mô tả Phụ lục 1a, truyền vào chuỗi mã hóa được thiết lập theo ShopId, OrderCode và OrderStatus

 

3. Thông báo mã lỗi

Trạng thái mã thông báo trong SaleMall

  Tham số  

Mô tả  

200

Cập nhật thành công

401

Thiếu tham số Parameter

402

Dữ liệu đã tồn tại

403

Lỗi

404

Không tìm thấy dữ liệu