5.1.1 Create Shipments (C#)

Create Shipment

Sample source code to create shipment in a Console Application (requires Newtonsoft.JSON from NuGet)
using System; using System.Collections.Generic; using System.IO; using System.Net; using Newtonsoft.Json; namespace PrinshipShipment { public class PersonInfo { public string Name { get; set; } public string ContactPerson { get; set; } public string Address1 { get; set; } public string Address2 { get; set; } public string Address3 { get; set; } public string PostCode { get; set; } public string City { get; set; } public string State { get; set; } public string CountryCode { get; set; } public string StationCode { get; set; } public string Phone1 { get; set; } public string Phone2 { get; set; } public string MobilePhone { get; set; } public string Fax { get; set; } public string Email { get; set; } public string Url { get; set; } } public class ItemInfo { public string Description { get; set; } public int Quantity { get; set; } public decimal UnitValue { get; set; } public string HSCode { get; set; } public string SKU { get; set; } public string Url { get; set; } } public class PackageInfo { public string PackageReference { get; set; } public float Length { get; set; } public float Width { get; set; } public float Height { get; set; } public float ActualWeight { get; set; } } public class ShipmentDetails { public PersonInfo Shipper { get; set; } public PersonInfo Consignee { get; set; } public List<ItemInfo> Items { get; set; } public List<PackageInfo> Packages { get; set; } public DateTime ShipmentDate { get; set; } public String TOSMode { get; set; } public String ReferenceNo { get; set; } public String ReferenceSource { get; set; } public String PackageType { get; set; } public String WeightType { get; set; } public String CurrencyCode { get; set; } public String Remarks { get; set; } public string HawbNo { get; set; } } public class ShipmentRequest { public List<ShipmentDetails> Shipments { get; set; } } public class APIHelper { const string PRODUCTION_URL = "https://apiv2.unixus.com.my/"; const string SANDBOX_URL = "https://sandbox-apiv2.unixus.com.my/"; const string myRefreshToken = "88888888"; // Replace with your Refresh Token static string api_url = SANDBOX_URL; public static string GetAccessToken() { var httpWebRequest = (HttpWebRequest)WebRequest.Create(api_url + "Token/Refresh"); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { string json = "{ 'RefreshToken' : '" + myRefreshToken + "'}'"; streamWriter.Write(json); streamWriter.Flush(); streamWriter.Close(); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); var token = ""; using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { try { string result = streamReader.ReadToEnd(); dynamic obj = JsonConvert.DeserializeObject<object>(result); token = obj.AccessToken; } catch (System.Exception ex) { Console.WriteLine(string.Format("Error occurred getting AccessToken: {0}", ex.Message)); } } return token; } public static void CreateShipment() { var shipment = new ShipmentDetails(); // Create Sender Info PersonInfo sender = new PersonInfo(); sender.Name = "Unixus Solutions Sdn. Bhd."; sender.ContactPerson = "IT Department"; sender.Address1 = "46-02 JALAN TUN ABDUL RAZAK,"; sender.Address2 = "SUSUR 1,"; sender.Address3 = string.Empty; sender.PostCode = "80000"; sender.City = "JOHOR BAHRU"; sender.State = "JOHOR"; sender.CountryCode = "MY"; sender.StationCode = ""; sender.Phone1 = "607-2222668"; sender.Phone2 = ""; sender.MobilePhone = ""; sender.Fax = ""; sender.Email = "[email protected]"; sender.Url = ""; shipment.Shipper = sender; // Create Consignee Info PersonInfo consignee = new PersonInfo(); consignee.Name = "ABC Sdn Bhd."; consignee.ContactPerson = "Mr. Ng"; consignee.Address1 = "Test Address 1"; consignee.Address2 = "Test Address 2"; consignee.Address3 = string.Empty; consignee.PostCode = "70000"; consignee.City = "Seremban"; consignee.State = "Negeri Sembilan"; consignee.CountryCode = "MY"; consignee.StationCode = ""; consignee.Phone1 = "60-7-2222668"; consignee.Phone2 = ""; consignee.MobilePhone = ""; consignee.Fax = ""; consignee.Email = "[email protected]"; consignee.Url = "http://www.lwe.asia"; shipment.Consignee = consignee; // Create Item Info ItemInfo itemInfo = new ItemInfo(); itemInfo.Description = "item1"; itemInfo.Quantity = 10; itemInfo.UnitValue = 12; itemInfo.HSCode = "001"; itemInfo.SKU = "sku001"; itemInfo.Url = "url_item1"; shipment.Items = new List<ItemInfo>(); shipment.Items.Add(itemInfo); // Create Package Info PackageInfo packageInfo = new PackageInfo(); packageInfo.PackageReference = "pkg1"; packageInfo.Length = 10.0f; packageInfo.Width = 20.0f; packageInfo.Height = 30.0f; packageInfo.ActualWeight = 40.0f; shipment.Packages = new List<PackageInfo>(); shipment.Packages.Add(packageInfo); // Fill in the rest of the shipment details shipment.ShipmentDate = DateTime.Now; shipment.TOSMode = "MY-E-EXPRESS"; shipment.ReferenceNo = "123456"; shipment.PackageType = "SPX"; shipment.WeightType = "KG"; shipment.CurrencyCode = "MYR"; shipment.Remarks = "Fragile shipment, please be careful."; // Create request object var shipmentRequest = new ShipmentRequest(); shipmentRequest.Shipments = new List<ShipmentDetails>(); shipmentRequest.Shipments.Add(shipment); var result = ""; try { var httpWebRequest = (HttpWebRequest)WebRequest.Create(api_url + "shipment/v2/Create"); httpWebRequest.ContentType = "application/json"; httpWebRequest.Headers.Add("X-Version", "1"); // Get Access Token httpWebRequest.Headers.Add("Authorization", "Bearer " + GetAccessToken()); httpWebRequest.Method = "POST"; // Call Request using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { string json = JsonConvert.SerializeObject(shipmentRequest); streamWriter.Write(json); streamWriter.Flush(); streamWriter.Close(); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { result = streamReader.ReadToEnd(); } dynamic obj = JsonConvert.DeserializeObject<object>(result); if (obj.Summary.Success > 0) { // Successful Console.WriteLine("Successfully created shipment"); foreach (dynamic ship in obj.ShipmentsResponse) { Console.WriteLine("HawbNo: " + ship.ShipmentDetails.HawbNo); } } else { // Failed, print error Console.WriteLine("Create shipment failed"); foreach (dynamic err in obj.Errors) { Console.WriteLine(string.Format("Error Message: {0}", err.ErrorMessage)); } } } catch (Exception ex) { Console.WriteLine(string.Format("Error occurred creating Shipment Request: {0}", ex.Message)); } } } class Program { static void Main(string[] args) { APIHelper.CreateShipment(); } }

Copyright © 2019 Unixus Solutions Sdn. Bhd. All rights reserved.