Đường dẫn môi trường : https://api.meinvoice.vn
Đặc tả các API kết nối tới MEINVOICE.VN
1. Thực hiện Đăng nhập qua API để lấy JWT (Access Token)
NOTE : Phương thức đăng nhập response sẽ trả về Access Token dùng để xác thực người dùng và gọi đến các Api tiếp theo
Phương thức
| Method |
URL |
| POST |
/api/v2/oauth |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; charset=utf-8 |
| TaxCode |
Mã số thuế |
| Body |
|
|
| Key |
Value |
Description |
| grant_type |
password |
Loại ủy quyền |
| username |
Tên tài khoản |
Tên tài khoản đăng nhập |
| password |
Mật khẩu |
|
Hàm gọi Ajax
var access_token;
$.ajax({
type: "POST",
url: "https://api.meinvoice.vn/api/v2/oauth",
dataType: 'json',
headers: {'TaxCode': 'Mã_Số_Thuế'},
data: { "grant_type": "password", "username": userName, "password": password },
success: function (result, status, sender) {
//JWT được trả về qua result.access_token
access_token = result.access_token;
}
});
| Response |
|
|
| Key |
Value |
Description |
| CompanyID |
VD : 1962 |
Mã công ty |
| FullName |
VD : Nguyễn Bá Hiệu |
Tên người dùng |
| RoleType |
VD : 1 |
Loại phân quyền |
| TaxCode |
VD : 0101243150-103 |
Mã số thuế |
| UserID |
VD : 831016ff-cac0-4a9d-8c2e-6ae9123dc41e |
ID User |
| UserName |
VD : nbhieu@software.misa.com.vn |
Tên đăng nhập |
| access_token |
VD : 831016ff-cac0-4a9d-8c2e-6ae9123dc41e |
Token dùng để lấy thông tin người dùng, sử dụng để gọi các api tiếp theo |
| expires_in |
VD : 1209599 |
Thời gian hết hạn của access token tính theo giây |
| token_type |
VD : bearer |
Loại token |
2. Thực hiện Lấy thông tin User
Phương thức
| Method |
URL |
| GET |
/api/v2/user/getcurent |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; |
| Authorization |
'Bearer ' + access_token |
| TaxCode |
Mã số thuế |
Hàm gọi Ajax
//Hệ thống authenticate sẽ xác thực người dùng qua đối tượng headers của request, headers bắt buộc phải có thông tin như vị dụ dưới đây
$.ajax({
type: "GET",
url: "https://api.meinvoice.vn/api/v2/user/getcurent",
dataType: 'json',
async: false,
headers: {
'Authorization': 'Bearer ' + access_token,
'TaxCode': 'Mã_Số_Thuế',
'Content-Type': 'application/json'
},
data: null,
success: function (result, status, sender) {
console.log(JSON.parse(result.data));
},
complete: function () {},
statusCode: { 404: function () { alert('API not found') }, }
});
3. Lấy danh sách vật tư hàng hóa
Phương thức
| Method |
URL |
| GET |
/InventoryItem/Get?start=0&length=100&sort=ModifiedDate |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; charset=utf-8 |
| Authorization |
'Bearer ' + access_token |
| TaxCode |
Mã số thuế |
| Body |
|
|
| Key |
Value |
Description |
| start |
VD: 0 |
Lấy bắt đầu từ số {start} |
| length |
VD : 100 |
Số lượng bản ghi lấy về |
| sort |
VD : ModifiedDate Sắp xếp dữ liệu theo {sort} |
Sắp xếp dữ liệu theo {sort} |
Hàm gọi Ajax
//Hệ thống authenticate sẽ xác thực người dùng qua đối tượng headers của request, headers bắt buộc phải có thông tin như vị dụ dưới đây
$.ajax({
type: "GET",
url: "https://api.meinvoice.vn/InventoryItem/Get?start=0&length=100&sort=ModifiedDate",
dataType: 'json',
headers: {
'Authorization': 'Bearer ' + access_token,
'TaxCode': 'Mã_Số_Thuế',
'Content-Type': 'application/json'
},
data: null,
success: function (result, status, sender) {
console.log(JSON.parse(result.data));
},
complete: function () {},
statusCode: { 404: function () { alert('API not found') }, }
});
4. Lấy danh sách Khách hàng
Phương thức
| Method |
URL |
| GET |
/AccountObject/Get?start=0&length=100&sort=ModifiedDate&accountObjectType=-1 |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; charset=utf-8 |
| Authorization |
'Bearer ' + access_token |
| TaxCode |
Mã số thuế |
| Body |
|
|
| Key |
Value |
Description |
| start |
VD: 0 |
Lấy bắt đầu từ số {start} |
| length |
VD : 100 |
Số lượng bản ghi lấy về |
| sort |
VD : ModifiedDate Sắp xếp dữ liệu theo {sort} |
Sắp xếp dữ liệu theo {sort} |
| accountObjectType |
VD : -1 |
Loại khách hàng: 0 - Tổ chức, 1 - Cá nhân, -1 - Tất cả |
Hàm gọi Ajax
//Hệ thống authenticate sẽ xác thực người dùng qua đối tượng headers của request, headers bắt buộc phải có thông tin như vị dụ dưới đây
$.ajax({
type: "GET",
url: "https://api.meinvoice.vn/AccountObject/Get?start=0&length=100&sort=ModifiedDate&accountObjectType=-1",
dataType: 'json',
headers: {
'Authorization': 'Bearer ' + access_token,
'TaxCode': 'Mã_Số_Thuế',
'Content-Type': 'application/json'
},
data: null,
success: function (result, status, sender) {
console.log(JSON.parse(result.data));
},
complete: function () {},
statusCode: { 404: function () { alert('API not found') }, }
});
5. Lấy danh sách hóa đơn
Phương thức
| Method |
URL |
| GET |
/SAInvoice/Get?start=0&length=100&sort=ModifiedDate&fromDate=2019-07-18&toDate=2019-09-18 |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; charset=utf-8 |
| Authorization |
'Bearer ' + access_token |
| TaxCode |
Mã số thuế |
| Body |
|
|
| Key |
Value |
Description |
| start |
VD: 0 |
Lấy bắt đầu từ số {start} |
| length |
VD : 100 |
Số lượng bản ghi lấy về |
| sort |
VD : ModifiedDate Sắp xếp dữ liệu theo {sort} |
Sắp xếp dữ liệu theo {sort} |
| fromDate |
VD : 2019-07-18 |
Từ thời gian |
| toDate |
VD : 2019-09-18 |
Đến thời gian |
Hàm gọi Ajax
//Hệ thống authenticate sẽ xác thực người dùng qua đối tượng headers của request, headers bắt buộc phải có thông tin như vị dụ dưới đây
$.ajax({
type: "GET",
url: "https://api.meinvoice.vn/SAInvoice/Get?start=0&length=100&sort=ModifiedDate&fromDate=2019-07-18&toDate=2019-09-18",
dataType: 'json',
headers: {
'Authorization': 'Bearer ' + access_token,
'TaxCode': 'Mã_Số_Thuế',
'Content-Type': 'application/json'
},
data: null,
success: function (result, status, sender) {
console.log(JSON.parse(result.data));
},
complete: function () {},
statusCode: { 404: function () { alert('API not found') }, }
});
6. Lấy chi tiết hóa đơn
Phương thức
| Method |
URL |
| GET |
/SAInvoice/Get?id=02389110-b38e-4812-b83e-4377d1b04529 |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; charset=utf-8 |
| Authorization |
'Bearer ' + access_token |
| TaxCode |
Mã số thuế |
| Body |
|
|
| Key |
Value |
Description |
| id |
VD: 02389110-b38e-4812-b83e-4377d1b04529 |
Mã hóa đơn cần lấy |
Hàm gọi Ajax
//Hệ thống authenticate sẽ xác thực người dùng qua đối tượng headers của request, headers bắt buộc phải có thông tin như vị dụ dưới đây
$.ajax({
type: "GET",
url: "https://api.meinvoice.vn/SAInvoice/Get?id=02389110-b38e-4812-b83e-4377d1b04529",
dataType: 'json',
headers: {
'Authorization': 'Bearer ' + access_token,
'TaxCode': 'Mã_Số_Thuế',
'Content-Type': 'application/json'
},
data: null,
success: function (result, status, sender) {
console.log(JSON.parse(result.data));
},
complete: function () {},
statusCode: { 404: function () { alert('API not found') }, }
});
7. Thêm hóa đơn
Phương thức
| Method |
URL |
| POST |
/SAInvoice/Insert |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; charset=utf-8 |
| Authorization |
'Bearer ' + access_token |
| TaxCode |
Mã số thuế |
| Body |
|
|
| Key |
Value |
Description |
| param |
VD: Xem hàm JS |
Chuỗi dữ liệu hóa đơn |
Hàm gọi Ajax
//Hệ thống authenticate sẽ xác thực người dùng qua đối tượng headers của request, headers bắt buộc phải có thông tin như vị dụ dưới đây
var pram = {};
param.detail = "[{'RefDetailID':'d02f415a-b663-45c9-8e60-5ca0555f8b4d', 'RefID':'d02f415a-b663-45c9-8e60-5ca0555f8b4c','InventoryItemName':'Áo sơ mi nữ','Description':'Áo sơ mi nữ','InventoryItemType':0,'Quantity':1.0,'UnitPrice':350000.0,'AmountOC':350000.0,'Amount':350000.0,'DiscountRate':5.55,'DiscountAmountOC':19425.0,'DiscountAmount':19425.0,'VATRate':10.0,'VATAmountOC':33058.0,'VATAmount':33058.0,'IsTemp':false,'IsPromotion':false,'SortOrder':1},{'RefDetailID':'d02f415a-b663-45c9-8e60-5ca0555f8b4e','RefID':'a62391ba-d6ec-4cc7-b3eb-b2592af194f7','InventoryItemName':'Áo sơ mi nam','Description':'Áo sơ mi nam','InventoryItemType':0,'Quantity':1.0,'UnitPrice':500000.0,'AmountOC':500000.0,'Amount':500000.0,'DiscountRate':5.0,'DiscountAmountOC':25000.0,'DiscountAmount':25000.0,'VATRate':10.0,'VATAmountOC':47500.0,'VATAmount':47500.0,'IsTemp':false,'IsPromotion':false,'SortOrder':2}]";
param.data = "{'RefID':'4e3f34c5-9aaf-4ff9-bedd-6d857cd1b2f2','RefType':0,'AccountObjectID':'fc1150e3-28fd-4cff-817e-3863a7d1a07e','AccountObjectTaxCode':null,'AccountObjectName':'Công ty A1','AccountObjectAddress':'Hà Nội','ContactName':null,'ReceiverName':'Khách mua','receiveremail':'a @bcd.com','ReceiverMobile':'0983299792','PaymentMethod':'TM/CK','InvTemplateNo':'01GTKT0/001','InvTypeCode':'01GTKT','InvSeries':'AB/19E','InvNo':' < Chưa cấp số> ','VATRate':10.0,'TotalSaleAmountOC':850000.0,'TotalDiscountAmountOC':44425.0,'TotalVATAmountOC':80558.0,'TotalAmountOC':886133.0,'InvDate':'/Date(1566957347884)/','CurrencyID':'VND','ExchangeRate':1,'TotalSaleAmount':850000.0,'TotalDiscountAmount':44425.0,'TotalVATAmount':80558.0,'TotalAmount':886133.0,'PublishStatus':0,'EInvoiceStatus':1,'CompanyID':9480,'CompanyTaxCode':'0101243150-186','TotalAmountWithVAT':886133.0}";
$.ajax({
type: "POST",
url: "https://api.meinvoice.vn/SAInvoice/Insert",
dataType: 'json',
headers: {
'Authorization': 'Bearer ' + access_token,
'TaxCode': 'Mã_Số_Thuế',
'Content-Type': 'application/json'
},
data: JSON.Stringfy(param),
success: function (result, status, sender) {
console.log(JSON.parse(result.data));
},
complete: function () {},
statusCode: { 404: function () { alert('API not found') }, }
});
8. Chỉnh sửa/ cập nhật hóa đơn
Phương thức
| Method |
URL |
| POST |
/SAInvoice/Update |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; charset=utf-8 |
| Authorization |
'Bearer ' + access_token |
| TaxCode |
Mã số thuế |
| Body |
|
|
| Key |
Value |
Description |
| param |
VD: Xem hàm JS |
Chuỗi dữ liệu hóa đơn |
Hàm gọi Ajax
//Hệ thống authenticate sẽ xác thực người dùng qua đối tượng headers của request, headers bắt buộc phải có thông tin như vị dụ dưới đây
var pram = {};
param.detail = "[{'RefDetailID':'d02f415a-b663-45c9-8e60-5ca0555f8b4d', 'RefID':'d02f415a-b663-45c9-8e60-5ca0555f8b4c','InventoryItemName':'Áo sơ mi nữ','Description':'Áo sơ mi nữ','InventoryItemType':0,'Quantity':1.0,'UnitPrice':350000.0,'AmountOC':350000.0,'Amount':350000.0,'DiscountRate':5.55,'DiscountAmountOC':19425.0,'DiscountAmount':19425.0,'VATRate':10.0,'VATAmountOC':33058.0,'VATAmount':33058.0,'IsTemp':false,'IsPromotion':false,'SortOrder':1},{'RefDetailID':'d02f415a-b663-45c9-8e60-5ca0555f8b4e','RefID':'a62391ba-d6ec-4cc7-b3eb-b2592af194f7','InventoryItemName':'Áo sơ mi nam','Description':'Áo sơ mi nam','InventoryItemType':0,'Quantity':1.0,'UnitPrice':500000.0,'AmountOC':500000.0,'Amount':500000.0,'DiscountRate':5.0,'DiscountAmountOC':25000.0,'DiscountAmount':25000.0,'VATRate':10.0,'VATAmountOC':47500.0,'VATAmount':47500.0,'IsTemp':false,'IsPromotion':false,'SortOrder':2}]";
param.data = "{'RefID':'4e3f34c5-9aaf-4ff9-bedd-6d857cd1b2f2','RefType':0,'AccountObjectID':'fc1150e3-28fd-4cff-817e-3863a7d1a07e','AccountObjectTaxCode':null,'AccountObjectName':'Công ty A1','AccountObjectAddress':'Hà Nội','ContactName':null,'ReceiverName':'Khách mua','receiveremail':'a @bcd.com','ReceiverMobile':'0983299792','PaymentMethod':'TM/CK','InvTemplateNo':'01GTKT0/001','InvTypeCode':'01GTKT','InvSeries':'AB/19E','InvNo':' < Chưa cấp số> ','VATRate':10.0,'TotalSaleAmountOC':850000.0,'TotalDiscountAmountOC':44425.0,'TotalVATAmountOC':80558.0,'TotalAmountOC':886133.0,'InvDate':'/Date(1566957347884)/','CurrencyID':'VND','ExchangeRate':1,'TotalSaleAmount':850000.0,'TotalDiscountAmount':44425.0,'TotalVATAmount':80558.0,'TotalAmount':886133.0,'PublishStatus':0,'EInvoiceStatus':1,'CompanyID':9480,'CompanyTaxCode':'0101243150-186','TotalAmountWithVAT':886133.0}";
$.ajax({
type: "POST",
url: "https://api.meinvoice.vn/SAInvoice/Update",
dataType: 'json',
headers: {
'Authorization': 'Bearer ' + access_token,
'TaxCode': 'Mã_Số_Thuế',
'Content-Type': 'application/json'
},
data: JSON.Stringfy(param),
success: function (result, status, sender) {
console.log(JSON.parse(result.data));
},
complete: function () {},
statusCode: { 404: function () { alert('API not found') }, }
});
9. Thêm phiếu xuất kho
Phương thức
| Method |
URL |
| POST |
/SAInvoice/InsertOutWard |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; charset=utf-8 |
| Authorization |
'Bearer ' + access_token |
| TaxCode |
Mã số thuế |
| Body |
|
|
| Key |
Value |
Description |
| param |
VD: Xem hàm JS |
Chuỗi dữ liệu hóa đơn |
Hàm gọi Ajax
//Hệ thống authenticate sẽ xác thực người dùng qua đối tượng headers của request, headers bắt buộc phải có thông tin như vị dụ dưới đây
var pram = {};
param.detail = "[{'RefDetailID':'d02f415a-b663-45c9-8e60-5ca0555f8b4d', 'RefID':'d02f415a-b663-45c9-8e60-5ca0555f8b4c','InventoryItemName':'Áo sơ mi nữ','Description':'Áo sơ mi nữ','InventoryItemType':0,'Quantity':1.0,'UnitPrice':350000.0,'AmountOC':350000.0,'Amount':350000.0,'DiscountRate':5.55,'DiscountAmountOC':19425.0,'DiscountAmount':19425.0,'VATRate':10.0,'VATAmountOC':33058.0,'VATAmount':33058.0,'IsTemp':false,'IsPromotion':false,'SortOrder':1},{'RefDetailID':'d02f415a-b663-45c9-8e60-5ca0555f8b4e','RefID':'a62391ba-d6ec-4cc7-b3eb-b2592af194f7','InventoryItemName':'Áo sơ mi nam','Description':'Áo sơ mi nam','InventoryItemType':0,'Quantity':1.0,'UnitPrice':500000.0,'AmountOC':500000.0,'Amount':500000.0,'DiscountRate':5.0,'DiscountAmountOC':25000.0,'DiscountAmount':25000.0,'VATRate':10.0,'VATAmountOC':47500.0,'VATAmount':47500.0,'IsTemp':false,'IsPromotion':false,'SortOrder':2}]";
param.data = "{'RefID':'4e3f34c5-9aaf-4ff9-bedd-6d857cd1b2f2','RefType':0,'AccountObjectID':'fc1150e3-28fd-4cff-817e-3863a7d1a07e','AccountObjectTaxCode':null,'AccountObjectName':'Công ty A1','AccountObjectAddress':'Hà Nội','ContactName':null,'ReceiverName':'Khách mua','receiveremail':'a @bcd.com','ReceiverMobile':'0983299792','PaymentMethod':'TM/CK','InvTemplateNo':'01GTKT0/001','InvTypeCode':'01GTKT','InvSeries':'AB/19E','InvNo':' < Chưa cấp số> ','VATRate':10.0,'TotalSaleAmountOC':850000.0,'TotalDiscountAmountOC':44425.0,'TotalVATAmountOC':80558.0,'TotalAmountOC':886133.0,'InvDate':'/Date(1566957347884)/','CurrencyID':'VND','ExchangeRate':1,'TotalSaleAmount':850000.0,'TotalDiscountAmount':44425.0,'TotalVATAmount':80558.0,'TotalAmount':886133.0,'PublishStatus':0,'EInvoiceStatus':1,'CompanyID':9480,'CompanyTaxCode':'0101243150-186','TotalAmountWithVAT':886133.0}";
param.invoiceDelivery = "{'ContractCode':'0121014','ContractDate':'/Date(1572307200000)/','ContractOwner':'Công ty TNHH ABC','JournalMemo':'Điều chuyền','TransporterName':'Lê Linh','Transport':'Ô tô','ListFromStockName':'Hà Nội','ListToStockName':'Ninh Bình','TransportContractCode':'0124874','DeliveryType':1,'EntityState':2,'RefID':'831ffb0d-5906-4e08-a0c3-14bc8ee2315d'}";
$.ajax({
type: "POST",
url: "https://api.meinvoice.vn/SAInvoice/InsertOutWard",
dataType: 'json',
headers: {
'Authorization': 'Bearer ' + access_token,
'TaxCode': 'Mã_Số_Thuế',
'Content-Type': 'application/json'
},
data: JSON.Stringfy(param),
success: function (result, status, sender) {
console.log(JSON.parse(result.data));
},
complete: function () {},
statusCode: { 404: function () { alert('API not found') }, }
});
10. Cập nhật phiếu xuất kho
Phương thức
| Method |
URL |
| POST |
/SAInvoice/UpdateOutWardEinvoice |
Trong đó
| Request header |
|
| Key |
Value |
| ContentType |
application/json; charset=utf-8 |
| Authorization |
'Bearer ' + access_token |
| TaxCode |
Mã số thuế |
| Body |
|
|
| Key |
Value |
Description |
| param |
VD: Xem hàm JS |
Chuỗi dữ liệu hóa đơn |
Hàm gọi Ajax
//Hệ thống authenticate sẽ xác thực người dùng qua đối tượng headers của request, headers bắt buộc phải có thông tin như vị dụ dưới đây
var pram = {};
param.detail = "[{'RefDetailID':'d02f415a-b663-45c9-8e60-5ca0555f8b4d', 'RefID':'d02f415a-b663-45c9-8e60-5ca0555f8b4c','InventoryItemName':'Áo sơ mi nữ','Description':'Áo sơ mi nữ','InventoryItemType':0,'Quantity':1.0,'UnitPrice':350000.0,'AmountOC':350000.0,'Amount':350000.0,'DiscountRate':5.55,'DiscountAmountOC':19425.0,'DiscountAmount':19425.0,'VATRate':10.0,'VATAmountOC':33058.0,'VATAmount':33058.0,'IsTemp':false,'IsPromotion':false,'SortOrder':1},{'RefDetailID':'d02f415a-b663-45c9-8e60-5ca0555f8b4e','RefID':'a62391ba-d6ec-4cc7-b3eb-b2592af194f7','InventoryItemName':'Áo sơ mi nam','Description':'Áo sơ mi nam','InventoryItemType':0,'Quantity':1.0,'UnitPrice':500000.0,'AmountOC':500000.0,'Amount':500000.0,'DiscountRate':5.0,'DiscountAmountOC':25000.0,'DiscountAmount':25000.0,'VATRate':10.0,'VATAmountOC':47500.0,'VATAmount':47500.0,'IsTemp':false,'IsPromotion':false,'SortOrder':2}]";
param.data = "{'RefID':'4e3f34c5-9aaf-4ff9-bedd-6d857cd1b2f2','RefType':0,'AccountObjectID':'fc1150e3-28fd-4cff-817e-3863a7d1a07e','AccountObjectTaxCode':null,'AccountObjectName':'Công ty A1','AccountObjectAddress':'Hà Nội','ContactName':null,'ReceiverName':'Khách mua','receiveremail':'a @bcd.com','ReceiverMobile':'0983299792','PaymentMethod':'TM/CK','InvTemplateNo':'01GTKT0/001','InvTypeCode':'01GTKT','InvSeries':'AB/19E','InvNo':' < Chưa cấp số> ','VATRate':10.0,'TotalSaleAmountOC':850000.0,'TotalDiscountAmountOC':44425.0,'TotalVATAmountOC':80558.0,'TotalAmountOC':886133.0,'InvDate':'/Date(1566957347884)/','CurrencyID':'VND','ExchangeRate':1,'TotalSaleAmount':850000.0,'TotalDiscountAmount':44425.0,'TotalVATAmount':80558.0,'TotalAmount':886133.0,'PublishStatus':0,'EInvoiceStatus':1,'CompanyID':9480,'CompanyTaxCode':'0101243150-186','TotalAmountWithVAT':886133.0}";
param.invoiceDelivery = "{'ContractCode':'0121014','ContractDate':'/Date(1572307200000)/','ContractOwner':'Công ty TNHH ABC','JournalMemo':'Điều chuyền','TransporterName':'Lê Linh','Transport':'Ô tô','ListFromStockName':'Hà Nội','ListToStockName':'Ninh Bình','TransportContractCode':'0124874','DeliveryType':1,'EntityState':2,'RefID':'831ffb0d-5906-4e08-a0c3-14bc8ee2315d'}";
$.ajax({
type: "POST",
url: "https://api.meinvoice.vn/SAInvoice/UpdateOutWardEinvoice",
dataType: 'json',
headers: {
'Authorization': 'Bearer ' + access_token,
'TaxCode': 'Mã_Số_Thuế',
'Content-Type': 'application/json'
},
data: JSON.Stringfy(param),
success: function (result, status, sender) {
console.log(JSON.parse(result.data));
},
complete: function () {},
statusCode: { 404: function () { alert('API not found') }, }
});