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();
// 發(fā)送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");
// 發(fā)送請求參數(shù)
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();
}
}