using System;
using System.IO;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Program
{
public static string GetSign(string secret, string data)
{
var keyBytes = Encoding.UTF8.GetBytes(secret);
var messageBytes = Encoding.UTF8.GetBytes(data);
var sign = "";
using (var hmac = new HMACSHA256(keyBytes))
{
var hash = hmac.ComputeHash(messageBytes);
sign = Convert.ToBase64String(hash);
}
Console.WriteLine("\r\n sign:" + sign);
return sign;
}
public static string GetToken()
{
var url = "https://openapi-sbx.yunexpress.cn/openapi/oauth2/token";
var data = new
{
grantType = "client_credentials",
appId = "53356b1906c1",
appSecret = "a830285cd8a645efad3467a0fc9dd8bd",
sourceKey = "x9lsqnmq"
};
string jsonData = JsonConvert.SerializeObject(data);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
byte[] byteArray = Encoding.UTF8.GetBytes(jsonData);
request.ContentLength = byteArray.Length;
using (Stream dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}
var responseBody = "";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode == HttpStatusCode.OK)
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
responseBody = reader.ReadToEnd();
Console.WriteLine("\r\n token:" + responseBody);
}
}
}
else
{
Console.WriteLine("Error: " + response.StatusCode);
}
}
JObject jsonObject = JObject.Parse(responseBody);
return jsonObject["accessToken"].ToString();
}
public static void CreateOrder()
{
var url = "https://openapi-sbx.yunexpress.cn/v1/order/package/create";
string body = "{\"product_code\":\"S1002\",\"customer_order_number\":\"\",\"order_numbers\":{\"waybill_number\":\"\",\"platform_order_number\":\"platform_order_number\",\"tracking_number\":\"\",\"reference_numbers\":[\"12124545454\",\"oooppopopop1\"]},\"weight_unit\":\"KG\",\"size_unit\":\"CM\",\"packages\":[{\"length\":1.22,\"width\":2.82,\"height\":3.39,\"weight\":4.999}],\"receiver\":{\"first_name\":\"first_name\",\"last_name\":\"last_name\",\"company\":\"company\",\"country_code\":\"RT\",\"province\":\"province\",\"city\":\"city\",\"address_lines\":[\"xx\"],\"postal_code\":\"postalcode\",\"phone_number\":\"phone_number\",\"email\":\"1231232123@email.com\",\"certificate_type\":\"cer\",\"certificate_code\":\"certificate_code\"},\"declaration_info\":[{\"sku_code\":\"sku_code\",\"name_local\":\"name_local\",\"name_en\":\"name_en\",\"quantity\":1,\"unit_price\":2,\"unit_weight\":3,\"hs_code\":\"hs_code\",\"sales_url\":\"sales_url\",\"currency\":\"\",\"material\":\"material\",\"purpose\":\"purpose\",\"brand\":\"brand\",\"spec\":\"spec\",\"model\":\"model\",\"remark\":\"remark\"}],\"sender\":{\"first_name\":\"first_name\",\"last_name\":\"last_name\",\"company\":\"company\",\"country_code\":\"11\",\"province\":\"province\",\"city\":\"city\",\"address_lines\":[\"address_lines1\"],\"postal_code\":\"postal_code\",\"phone_number\":\"phone_number\",\"email\":\"email\",\"certificate_type\":\"cer\",\"certificate_code\":\"certificate_code\"},\"customs_number\":{\"tax_number\":\"tax_number\",\"ioss_code\":\"ioss_code\",\"vat_code\":\"vat_code\",\"eori_number\":\"eori_number\"},\"extra_services\":[{\"extra_code\":\"v1\",\"extra_value\":\"云途预缴\"}],\"platform_account_code\":\"\",\"source_code\":\"YT\",\"sensitive_type\":\"D\",\"label_type\":\"PNG\"}";
string timestampMilliseconds = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
var data = "body=" + body + "&date=" + timestampMilliseconds + "&method=POST&uri=/v1/order/package/create";
Console.WriteLine("date:" + data);
var secret = "a830285cd8a645efad3467a0fc9dd8bd";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("token", GetToken());
request.Headers.Add("sign", GetSign(secret, data));
request.Headers.Add("date", timestampMilliseconds);
byte[] byteArray = Encoding.UTF8.GetBytes(body);
request.ContentLength = byteArray.Length;
using (Stream dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}
var responseBody = "";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode == HttpStatusCode.OK)
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
responseBody = reader.ReadToEnd();
}
}
}
else
{
Console.WriteLine("Error: " + response.StatusCode);
}
}
Console.WriteLine("\r\n response:" + responseBody);
}
public static void Main()
{
CreateOrder();
}
}