curl --request POST \
--url https://api.fireant.vn/mxv/traceability/product \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"qrContent": "<string>"
}
'import requests
url = "https://api.fireant.vn/mxv/traceability/product"
payload = { "qrContent": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({qrContent: '<string>'})
};
fetch('https://api.fireant.vn/mxv/traceability/product', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fireant.vn/mxv/traceability/product",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'qrContent' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fireant.vn/mxv/traceability/product"
payload := strings.NewReader("{\n \"qrContent\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fireant.vn/mxv/traceability/product")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"qrContent\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fireant.vn/mxv/traceability/product")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"qrContent\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"time": "<string>",
"success": true,
"code": "<string>",
"msg": "<string>",
"confirmationCode": "<string>",
"payload": [
{
"qrCode": "<string>",
"serial": "<string>",
"productName": "<string>",
"productCode": "<string>",
"material": "<string>",
"purity": 123,
"weightChi": "<string>",
"weightGram": "<string>",
"origin": "<string>",
"manufacturedAt": "2023-11-07T05:31:56Z",
"inspectedAt": "2023-11-07T05:31:56Z",
"inspectionUnit": "<string>"
}
]
}Truy xuất nguồn gốc sản phẩm vật chất
curl --request POST \
--url https://api.fireant.vn/mxv/traceability/product \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"qrContent": "<string>"
}
'import requests
url = "https://api.fireant.vn/mxv/traceability/product"
payload = { "qrContent": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({qrContent: '<string>'})
};
fetch('https://api.fireant.vn/mxv/traceability/product', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fireant.vn/mxv/traceability/product",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'qrContent' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fireant.vn/mxv/traceability/product"
payload := strings.NewReader("{\n \"qrContent\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fireant.vn/mxv/traceability/product")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"qrContent\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fireant.vn/mxv/traceability/product")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"qrContent\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"time": "<string>",
"success": true,
"code": "<string>",
"msg": "<string>",
"confirmationCode": "<string>",
"payload": [
{
"qrCode": "<string>",
"serial": "<string>",
"productName": "<string>",
"productCode": "<string>",
"material": "<string>",
"purity": 123,
"weightChi": "<string>",
"weightGram": "<string>",
"origin": "<string>",
"manufacturedAt": "2023-11-07T05:31:56Z",
"inspectedAt": "2023-11-07T05:31:56Z",
"inspectionUnit": "<string>"
}
]
}Ủy quyền
OAuth2 Implicit Grant
Nội dung
Request từ app FireAnt gửi lên backend khi quét QR trên thỏi Bạc. App gửi nguyên nội dung quét được (thường là URL dạng https://sp.phuquygroup.vn/Home/VM?id=CBETDRX12); backend tự tách mã sản phẩm.
Nội dung đầy đủ đọc được từ QR code (URL hoặc trực tiếp serial/id).
Phản hồi
Trả về thông tin sản phẩm
Wrapper response của MXV REST API cho các nghiệp vụ giao nhận hàng vật chất. Khác với MXVResponse<T> (dùng status/message/data), các API section 3.3/3.4 trả về success/code/msg/confirmationCode/payload.
Thời điểm server xử lý
true = thành công, false = lỗi
Mã kết quả: "0" = thành công
Thông báo kết quả (VD: "[0]: Thành công!")
Mã xác nhận đăng ký do MXV cấp (top-level field). End user cần lưu lại để dùng cho API huỷ và truy vấn.
Dữ liệu chi tiết (array, mỗi phần tử chứa confirmationcode)
Show child attributes
Show child attributes