Express-Tracking-Nummer-Abfrage-API kann mit SF-Express-Abfrage, Post-Express-Abfrage, ZTO-Express-Abfrage usw. verbunden werden. Diese Expresslogistikunternehmen bieten Expresslogistik wie automatische Identifikationsschnittstellen für Expressauftragsnummern und Abfrageschnittstellen für Expressauftragsnummern an. Für E-Commerce-Unternehmen und ERP-Dienstleister erhöht die Integration dieser Schnittstelle in die eigene Software die Wettbewerbsfähigkeit des Unternehmens. Es gibt jedoch einen Nachteil, der mit jedem großen Expressunternehmen verbunden werden muss und die Schnittstelle separat debuggen muss. Der Wartungsaufwand ist hoch und die Verwaltung ist umständlich. Empfehlen Sie eine Plattform, die kostenloses Andocken der Express-Abfrage-API bietet, Express Bird Open Platform
1. Schnittstellenanwendungsszenarien
1 Rufen Sie nach dem Einkauf auf der E-Commerce-Plattform bei der Verfolgung der Logistik durch Einkaufsbestellungen diese API auf, um Details zu Logistikinformationen zu erhalten
2. Rufen Sie bei der Frachtabstimmung mit einem Klick den Frachtbrief-Logistikstatus ab
2. Registrieren Sie ein offenes Express Bird-Plattformkonto Informationen zum Entwicklerkonto (ID, API-Schlüssel), im Express Bird-Backend anzeigen
3 Führen Sie ein technisches gemeinsames Debugging durch, Logistikabfrage-API-Adresse: Weblink
4. Integrieren Sie die Express-Logistik-Abfrageschnittstelle in Ihre Software
3. Technisches Andocken
Die von Express Bird bereitgestellte Express-Anfrageschnittstelle unterstützt mehr als 400 Express-Logistikanfragen und deckt die Sendungsverfolgungsnummer der inländischen Mainstream-Expresszustellung mit zeitnahen Informationen und vollständigen Daten ab.
Schnittstellenname: express.info.get
Anfragemethode: HTTP POST Kodierungsformat der Anfragemethode: utf-8
Anfragebeispiel:
package com.zs.app;
import php.io.BufferedReader;
import php.io.IOException;
import php.io.InputStreamReader;
import php.io.OutputStreamWriter;
import php.io.UnsupportedEncodingException;
import php.net.HttpURLConnection;
import php.net.URL;
import php.net.URLEncoder;
import php.security.MessageDigest;
import php.util.HashMap;
import php.util.Map;
/**
*
* Express Bird Logistics Track Echtzeit-Abfrageschnittstelle
*
* @Technical QQ Group: 456320272
* @see: Weblink
* @copyright:
*
* Die E-Commerce-ID und der private Schlüssel in DEMO sind getestet und verwendet, offiziell Bitte registrieren Sie separat ein Konto für die Umwelt
* Wenn das Abfragevolumen 500 an einem einzigen Tag überschreitet, wird empfohlen, auf unsere Push-Schnittstelle für das Logistik-Track-Abonnement zuzugreifen
*
* Bitte gehen Sie zur Beantragung auf die offizielle Website ID und Schlüssel: Weblink
*/
public class KdniaoTrackQueryAPI {
//DEMO
public static void main(String[] args) {
KdniaoTrackQueryAPI api = new KdniaoTrackQueryAPI();
try {
String result = api.getOrderTracesByJson("ANE", "210001633605");
System.out.print(result);
} Catch (Exception e) {
e.printStackTrace();
}
}
//E-Commerce-ID
private String EBusinessID="1330422";
//Privater E-Commerce-Verschlüsselungsschlüssel, bereitgestellt von Express Bird, bitte sorgfältig aufbewahren und nicht preisgeben
private String AppKey="7611818b-6279-4398-8747-df2ca39e86b4";
//Anfrage-URL
private String ReqURL ="Web link
/* *
* Json-Methode zur Abfrage der Auftragslogistikverfolgung
* @throws Exception
*/
public String getOrderTracesByJson(String expCode, String expNo) throws Exception{
String requestData= "{'OrderCode':'','ShipperCode':'" + expCode + " ','LogisticCode':' " + expNo + "'}";
Map<String, String> params = new HashMap<String, String>();
params.put("RequestData", urlEncoder(requestData, "UTF -8"));
params.put("EBusinessID", EBusinessID);
params.put("RequestType", "1002");
String dataSign=encrypt(requestData, AppKey, "UTF-8");
params.put("DataSign" , urlEncoder(dataSign, "UTF-8"));
params.put("DataType", "2");
String result=sendPost(ReqURL, params);
//Zurückgegebene Informationen basierend auf der Geschäftsabwicklung des Unternehmens MessageDigest md = MessageDigest.getInstance(" MD5");
md.update(str.getBytes(charset));
byte[] result = md.digest();
StringBuffer sb = new StringBuffer(32);
for ( int i = 0; i < result.length; i++) {
int val = result[i] & 0xff;
if (val <= 0xf) {
sb.append("0");
}
sb .append(Integer.toHexString(val ));
}
return sb.toString().toLowerCase();
}
/**
* Base64-Kodierung
* @param str content
* @param charset-Kodierungsmethode
* @throws UnsupportedEncodingException
*/
private String base64(String str, String charset) throws UnsupportedEncodingException{
String encoded = base64Encode(str.getBytes(charset));
return encoded;
}
@SuppressWarnings("unused")
private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{
String result = URLEncoder.encode(str, charset);
return result;
}
/* *
* E-Commerce-Signaturgenerierung
* @param Content Content
* @param keyValue Appkey
* @param Zeichensatzkodierungsmethode
* @throws UnsupportedEncodingException,Exception
* @return DataSign-Signatur
*/
@SuppressWarnings("unused")
private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception
{
if (keyValue != null)
{
return base64(MD5( content + keyValue, charset), charset);
}
return base64(MD5(content, charset), charset);
}
/**
* Senden Sie eine POST-Methodenanfrage an die angegebene URL
* @param url Die URL zum Senden der Anfrage
* @param params Der Parametersatz der Anfrage
* @return Das Antwortergebnis der Remote-Ressource
*/
@SuppressWarnings("unused")
private String sendPost( String-URL, Map<String, String>-Parameter) {
OutputStreamWriter out = null;
BufferedReader in = null;
StringBuilder result = new StringBuilder();
try {
URL realUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// POST方法
conn.setRequestMethod("P OST") ;
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent ",
"Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("MessContent-Type", "application/x-www-form-urlencoded");
conn.connect();
// 获取URLConnection对象对应的输出流
out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
// 发送请求参数
if (params != null) {
StringBuilder param = new StringBuilder();
for (Map.Entry< String, String> Eintrag: params.entrySet()) {
if(param.length()>0){
param.append("&");
}
param.append(entry.getKey());
param.append("=");
param.append(entry.getValue());
//System.out.println(entry.getKey()+":"+entry.getValue());
}
//System.out.println("param:"+param.toString());
out.write(param.toString());
}
// Flush-Fehler: out.flush();
// Definieren Sie den BufferedReader-Eingabestream, um die Antwort der URL zu lesen
in = new BufferedReader(
new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = in. readLine( )) != null) {
result.append(line);
}
} Catch (Exception e) {
e.printStackTrace();
}
//Verwenden Sie den Block „finally“, um den Ausgabe- und Eingabestream zu schließen
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex) {
ex .printStackTrace();
}
}
return result.toString();
}
private static char[] base64EncodeChars = new char[] {
'A', 'B', 'C', 'D ', ' E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P' ,
' Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'Y', 'Z', 'a', 'b' , 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n ',
'o ', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z ', '0' , '1', '2', '3',
'4', '5', '6', '7', '8', '9', '+', '/' };
public static String base64Encode(byte[] data) {
StringBuffer sb = new StringBuffer();
int len = data.length;
int i = 0;
int b1, b2, b3;
while ( i < len) {
b1 = data[i++] & 0xff;
if (i == len)
{
sb.append(base64EncodeChars[b1 >>> 2]);
sb.append(base64EncodeChars [(b1 & 0x3) < ;< 4]);
sb.append("==");
break;
}
b2 = data[i++] & 0xff;
if (i == len)
{
sb.append(base64EncodeChars[ b1 >>> 2]);
sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);
sb .append(base64EncodeChars[(b2 & 0x0f) << 2]);
sb.append("=");
break;
}
b3 = data[i++] & 0xff;
sb.append(base64EncodeChars[ b1 >>> 2]);
sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);
sb .append(base64EncodeChars[((b2 & 0x0f) << 2) | ((b3 & 0xc0) >>> 6)]);
sb.append(base64EncodeChars[b3 & 0x3f]);
}
return sb.toString();
}
}