daShangDao_kfzgw-info/md/expressDeliveryOrder.md
2026-02-27 11:46:40 +08:00

22 KiB
Raw Blame History

expressDeliveryOrder.dll 使用教程

创建DLL工具实例

加载DLL文件

// ExpressDeliveryOrderDLL 快递订单DLL结构
type ExpressDeliveryOrderDLL struct {
    dll                        *syscall.DLL
    ztoOpenCreateOrder        *syscall.Proc // 中通创建订单
    jtOrderAddOrder           *syscall.Proc // 极兔创建订单
    emsAmpApiOpen             *syscall.Proc // 邮政订单接入
    stoOmsExpressOrderCreate  *syscall.Proc // 申通订单创建
    integrationOrderCreate    *syscall.Proc // 整合快递订单创建
    freeCString               *syscall.Proc // 释放C字符串
}

// 初始化ExpressDeliveryOrderDLL
func InitExpressDeliveryOrderDLL() (*ExpressDeliveryOrderDLL, error) {
    dllPath := filepath.Join("dll", "expressDeliveryOrder.dll")
    if _, err := os.Stat(dllPath); os.IsNotExist(err) {
        return nil, fmt.Errorf("expressDeliveryOrder DLL 不存在: %s", dllPath)
    }
    if dll, err := syscall.LoadDLL(dllPath); err != nil {
        return nil, fmt.Errorf("加载expressDeliveryOrder DLL 失败: %s", err)
    } else {
        return &ExpressDeliveryOrderDLL{
            dll:                       dll,
            ztoOpenCreateOrder:       dll.MustFindProc("ZtoOpenCreateOrder"),
            jtOrderAddOrder:          dll.MustFindProc("JtOrderAddOrder"),
            emsAmpApiOpen:            dll.MustFindProc("EmsAmpApiOpen"),
            stoOmsExpressOrderCreate: dll.MustFindProc("StoOmsExpressOrderCreate"),
            integrationOrderCreate:   dll.MustFindProc("IntegrationOrderCreate"),
            freeCString:              dll.MustFindProc("FreeCString"),
        }, nil
    }
}

dll, err := InitExpressDeliveryOrderDLL()

获取C字符串

// cStr 获取C字符串
func (m *ExpressDeliveryOrderDLL) cStr(p uintptr) string {
    if p == 0 {
        return ""
    }
    b := []byte{}
    for i := uintptr(0); ; i++ {
        c := *(*byte)(unsafe.Pointer(p + i))
        if c == 0 {
            break
        }
        b = append(b, c)
    }
    s := string(b)
    if m.freeCString != nil {
        m.freeCString.Call(p)
    }
    return s
}

使用DLL函数示例

// 调用中通创建订单接口
func (m *ExpressDeliveryOrderDLL) ZtoOpenCreateOrder(requestJSON, appKey, appSecret string) (string, error) {
    proc, err := m.dll.FindProc("ZtoOpenCreateOrder")
    if err != nil {
        return "", fmt.Errorf("找不到函数 ZtoOpenCreateOrder: %v", err)
    }
    
    requestJSONPtr, _ := syscall.BytePtrFromString(requestJSON)
    appKeyPtr, _ := syscall.BytePtrFromString(appKey)
    appSecretPtr, _ := syscall.BytePtrFromString(appSecret)
    
    resultPtr, _, _ := proc.Call(
        uintptr(unsafe.Pointer(requestJSONPtr)),
        uintptr(unsafe.Pointer(appKeyPtr)),
        uintptr(unsafe.Pointer(appSecretPtr)),
    )
    
    result := m.cStr(resultPtr)
    return result, nil
}

接口详情

中通快递创建订单接口--ZtoOpenCreateOrder

请求信息

dll.ZtoOpenCreateOrder(requestJSON, appKey, appSecret)

请求参数

参数名 类型 必填 说明
requestJSON string 创建订单参数JSON字符串
appKey string 中通APIkey
appSecret string 中通API应用密钥

requestJSON json字符串

API地址 https://open.zto.com/#/interfaces?resourceGroup=20&apiName=zto.open.createOrder

{
  "partnerType": "2",
  "orderType": "1",
  "partnerOrderCode": "商家自主定义",
  "accountInfo": {
    "accountId": "test",
    "accountPassword": "",
    "type": 1,
    "customerId": "GPG1576724269"
  },
  "billCode": "",
  "senderInfo": {
    "senderId": "",
    "senderName": "张三",
    "senderPhone": "010-22226789",
    "senderMobile": "13900000000",
    "senderProvince": "上海",
    "senderCity": "上海市",
    "senderDistrict": "青浦区",
    "senderAddress": "华志路"
  },
  "receiveInfo": {
    "receiverName": "Jone Star",
    "receiverPhone": "021-87654321",
    "receiverMobile": "13500000000",
    "receiverProvince": "上海",
    "receiverCity": "上海市",
    "receiverDistrict": "闵行区",
    "receiverAddress": "申贵路1500号"
  },
  "orderVasList": [
    {
      "vasType": "COD",
      "vasAmount": 100000,
      "vasPrice": 0,
      "vasDetail": "",
      "accountNo": ""
    }
  ],
  "hallCode": "S2044",
  "siteCode": "02100",
  "siteName": "上海",
  "summaryInfo": {
    "size": "",
    "quantity": 3,
    "price": "30",
    "freight": "20",
    "premium": "10",
    "startTime": "2020-12-10 12:00:00",
    "endTime": "2020-12-10 12:00:00"
  },
  "remark": "小吉下单",
  "orderItems": [
    {
      "name": "",
      "category": "",
      "material": "",
      "size": "",
      "weight": 0,
      "unitprice": 0,
      "quantity": 0,
      "remark": ""
    }
  ],
  "cabinet": {
    "address": "",
    "specification": 0,
    "code": ""
  }
}

响应数据

{"result":{"bigMarkInfo":{"bagAddr":"合肥","mark":"460- 38"},"siteCode":"02100","siteName":"上海","signBillInfo":{},"orderCode":"12123412434","billCode":"130005102254","partnerOrderCode":"43423424"},"message":"请求成功","status":true,"statusCode":"SYS000"}

异常示例

{"result":null,"message":"电子面单账号或者集团客户编码不能为空","status":false,"statusCode":"DEF001"}

极兔快递创建订单接口--JtOrderAddOrder

请求信息

dll.JtOrderAddOrder(requestJSON, apiAccount, privateKey)

请求参数

参数名 类型 必填 说明
requestJSON string 创建订单参数JSON字符串
apiAccount string 极兔API账户标识
privateKey string 极兔API私钥

requestJSON JSON字符串

API地址 https://open.bxexpress.com.cn/#/apiDoc/orderserve/create

{
  "customerCode": "J0086474299",
  "digest": "Base64(Md5(客户编号+密文+privateKey))",
  "network": "合作网点编码",
  "txlogisticId": "客户订单号",
  "expressType": "EZ",
  "orderType": "2",
  "serviceType": "01",
  "deliveryType": "03",
  "payType": "PP_PM",
  "sender": {
    "name": "寄件人姓名",
    "company": "寄件公司",
    "postCode": "寄件邮编",
    "mailBox": "寄件邮箱",
    "mobile": "寄件手机",
    "phone": "寄件电话",
    "countryCode": "CHN",
    "prov": "寄件省份",
    "city": "寄件城市",
    "area": "寄件区域",
    "town": "寄件乡镇",
    "street": "寄件街道",
    "address": "寄件详细地址"
  },
  "receiver": {
    "name": "收件人姓名",
    "company": "收件公司",
    "postCode": "收件邮编",
    "mailBox": "收件邮箱",
    "mobile": "收件手机",
    "phone": "收件电话",
    "countryCode": "CHN",
    "prov": "收件省份",
    "city": "收件城市",
    "area": "收件区域",
    "town": "收件乡镇",
    "street": "收件街道",
    "address": "收件详细地址"
  },
  "sendStartTime": "yyyy-MM-dd HH:mm:ss",
  "sendEndTime": "yyyy-MM-dd HH:mm:ss",
  "goodsType": "bm000001",
  "isRealName": true,
  "isCustomsDeclaration": false,
  "length": 10,
  "width": 10,
  "height": 10,
  "weight": "0.02",
  "totalQuantity": 1,
  "itemsValue": "100.00",
  "priceCurrency": "RMB",
  "offerFee": "100.00",
  "remark": "备注信息",
  "items": [
    {
      "itemType": "bm000001",
      "itemName": "物品名称",
      "chineseName": "物品中文名称",
      "englishName": "English Name",
      "number": 1,
      "itemValue": "100.00",
      "priceCurrency": "RMB",
      "desc": "物品描述",
      "itemUrl": "https://example.com/item"
    }
  ],
  "customsInfo": {
    "count": 1,
    "unit": "个",
    "sourceArea": "CHN",
    "productRecordNo": "产品国检备案编号",
    "goodPrepardNo": "商品海关备案号",
    "taxNo": "商品行邮税号",
    "hsCode": "海关编码",
    "goodsCode": "商品编号",
    "brand": "货物品牌",
    "specifications": "规格型号",
    "manufacturer": "生产厂家",
    "cargoDeclaredValue": 100.00000,
    "declaredValueDeclaredCurrency": "RMB",
    "customerFreight": "50.00",
    "iePort": "口岸代码",
    "enterpriseCustomsCode": "海关注册编号"
  },
  "postSiteCode": "驿站编码",
  "postSiteName": "驿站名称",
  "postSiteAddress": "驿站地址",
  "pickupExpressCodeCheckWay": 0,
  "pickUpCode": "取件码",
  "extendInfo": {
    "isFourLevelAddress": "1"
  }
}

响应参数

{
    "code":"1",
    "msg":"success",
    "data":{
        "txlogisticId":"TEST20220704210006",
        "billCode":"UT0000498364212",
        "sortingCode":"382 300-64 010",
        "sumFreight":"5.00",
        "createOrderTime":"2022-07-04 12:00:53",
        "lastCenterName":"华东转运中心B1"
    }
}

邮政快递订单接入接口--EmsAmpApiOpen

请求信息

dll.EmsAmpApiOpen(requestJSON, secretKey)

请求参数

参数名 类型 必填 说明
requestJSON string 创建订单参数JSON字符串
secretKey string 邮政API密钥

requestJSON JSON字符串

API地址https://api.ems.com.cn/#/gnapijj 需要下载API文档里面的 订单接入 接口

[
  {
    "ecommerceUserId": "12313165",
    "deliveryPasswordFlag": "1",
    "deliveryPassword": "",
    "logisticsOrderNo": "12384565600",
    "batchNo": "",
    "waybillNo": "",
    "oneBillFlag": "",
    "submailNo": "",
    "oneBillNum": "",
    "oneBillFeeType": "",
    "contentsAttribute": "1",
    "bizProductNo": "1",
    "bizProductId": "",
    "teanIncrementFlag": "",
    "weight": 0,
    "volume": 0,
    "length": 0,
    "width": 0,
    "height": 0,
    "postageTotal": 12,
    "remarks": "",
    "insuranceFlag": "",
    "insuranceAmount": "0",
    "deliverType": "1",
    "deliverPreDate": "",
    "paymentMode": "",
    "codFlag": "",
    "codAmount": "0",
    "valuableFlag": "1",
    "receiverAgentIdType": "1",
    "receiverIdNo": "",
    "projectId": "",
    "reservationReturnFlag": "1",
    "reservationReturnTime": "1",
    "returnRelationNo": "",
    "receiptFlag": "",
    "receiptWaybillNo": "",
    "localCollectionFee": "1",
    "sender": {
      "name": "张三",
      "postCode": "",
      "phone": "",
      "mobile": "15232805086",
      "prov": "北京市",
      "city": "北京市",
      "county": "西城区",
      "address": "永安路174号"
    },
    "receiver": {
      "name": "张三",
      "postCode": "",
      "phone": "",
      "mobile": "15232805086",
      "prov": "北京市",
      "city": "北京市",
      "county": "西城区",
      "address": "永安路174号"
    },
    "cargos": [
      {
        "cargoName": "测试商品",
        "cargoCategory": "",
        "cargoQuantity": "1",
        "cargoValue": "1",
        "cargoWeight": "1"
      }
    ]
  }
]

响应参数

{
  "logisticsOrderNo": "客户内部订单号",
  "waybillNo": "物流运单号1,物流运单号2",
  "routeCode": "四段码/分拣码",
  "packageCode": "集包地编码",
  "packageCodeName": "集包地名称",
  "markDestinationCode": "大头笔编码",
  "markDestinationName": "大头笔"
}

申通快递订单创建接口--StoOmsExpressOrderCreate

请求信息

dll.StoOmsExpressOrderCreate(requestJSON, fromAppkey, secretKey, fromCode)

请求参数

参数名 类型 必填 说明
requestJSON string 创建订单参数JSON字符串
fromAppkey string 请求发起方应用密钥
secretKey string 签名密钥
fromCode string 请求发起方应用资源编码

requestJSON JSON字符串

API地址https://open.sto.cn/#/apiDocument

{
  "orderNo": "8885452262",
  "orderSource": "****",
  "billType": "00",
  "orderType": "01",
  "sender": {
    "name": "测试名称",
    "tel": "0558-45778586",
    "mobile": "18775487548",
    "postCode": "100001",
    "country": "中国",
    "province": "安徽",
    "city": "合肥",
    "area": "泸州",
    "town": "测试镇",
    "address": "XX街道XX小区XX楼888"
  },
  "receiver": {
    "name": "测试名称",
    "tel": "0556-45778586",
    "mobile": "15575487548",
    "postCode": "100001",
    "country": "中国",
    "province": "河北",
    "city": "湖州",
    "area": "江汉",
    "town": "收件镇",
    "address": "XX街道XX小区XX楼666",
    "safeNo": "13466666632-0011"
  },
  "cargo": {
    "battery": "10",
    "goodsType": "大件",
    "goodsName": "XX物",
    "goodsCount": 10,
    "spaceX": 10,
    "spaceY": 10,
    "spaceZ": 10,
    "weight": 10,
    "goodsAmount": "100",
    "cargoItemList": [
      {
        "serialNumber": "8451234",
        "referenceNumber": "88838783634",
        "productId": "001",
        "name": "小商品",
        "qty": 10,
        "unitPrice": 1,
        "amount": 10,
        "currency": "美元",
        "weight": 10,
        "remark": "无"
      }
    ]
  },
  "customer": {
    "siteCode": "666666",
    "customerName": "666666000001",
    "sitePwd": "***",
    "monthCustomerCode": "9000000"
  },
  "internationalAnnex": {
    "internationalProductType": "01",
    "customsDeclaration": false,
    "senderCountry": "中国",
    "receiverCountry": "俄罗斯"
  },
  "waybillNo": "59635456632",
  "assignAnnex": {
    "takeCompanyCode": "862456565466",
    "takeUserCode": "9000000007"
  },
  "codValue": "2000",
  "freightCollectValue": "20",
  "timelessType": "01",
  "productType": "01",
  "serviceTypeList": [
    "***"
  ],
  "extendFieldMap": {
    "mapValue": "***"
  },
  "remark": "无备注",
  "expressDirection": "01",
  "createChannel": "01",
  "regionType": "01",
  "insuredAnnex": {
    "insuredValue": "6.66",
    "goodsValue": "6.66"
  },
  "expectValue": "10",
  "payModel": "1"
}

响应数据

{
  "success": true,
  "errorCode": "PARAM_INVALID/QUERY_ROOKIE_EXCEPTION/AddOrderFailed/SendMobileError/SendPhoneError/SERVER_EXCEPTION/TIME_OUT/PrintCodeRepeat",
  "errorMsg": "waybillNo invalid:运单号不符合申通单号规则ROUTING_INFO_QUERY_NO_REACHABLE: 物流服务不支持派送;该账号剩余面单库存不足,请联系合作网点充值;",
  "data": {
    "orderNo": "88875485332",
    "waybillNo": "47893154",
    "bigWord": "877-342-213",
    "packagePlace": "上海青浦测试集包地",
    "sourceOrderId": "88875485332",
    "safeNo": "95013740109424",
    "newBlockCode": "新四段码"
  }
}

韵达快递--电子面单下单接口--YdCreateBmOrder

请求信息

dll.YdCreateBmOrder(requestJSON, appKey, appSecret)

请求参数

参数名 类型 必填 说明
requestJSON string 创建订单参数JSON字符串
appKey string 请求发起方应用密钥
appSecret string 签名密钥

requestJSON JSON字符串

API地址https://open.yundaex.com/api/apiDoc?apiCode=apiauth_doc 电子面单下单接口

{
    "appid": "999999",
    "partner_id": "201700101001",
    "secret": "123456789",
    "orders": [
        {
            "collection_value": 126.5,
            "cus_area1": "",
            "cus_area2": "",
            "isProtectPrivacy": "",
            "items": [
                {
                    "name": "衣服",
                    "number": 1,
                    "remark": "袜子"
                }
            ],
            "khddh": 2012121715001,
            "node_id": "350",
            "order_serial_no": 2012121715001,
            "order_type": "common",
            "platform_source": "",
            "receiver": {
                "address": "上海市,青浦区,盈港东路 6679 号",
                "city": "上海市",
                "company": "",
                "county": "青浦区",
                "mobile": "17601206977",
                "name": "李四",
                "province": "上海市"
            },
            "remark": "",
            "sender": {
                "address": "上海市,青浦区,盈港东路 7766 号",
                "city": "上海市",
                "company": "",
                "county": "青浦区",
                "mobile": "17601206977",
                "name": "张三",
                "province": "上海市"
            },
            "size": "0.12,0.23,0.11",
            "special": 0,
            "value": 126.5,
            "weight": 0,
            "multi_pack": {
                "mulpck": "",
                "total": 0,
                "endmark": 0
            },
            "markingInfos": [
                {
                    "type": "INSURED",
                    "markingValue": {
                        "value": 2100
                    }
                },
                {
                    "type": "DF",
                    "markingValue": {
                        "value": 15
                    }
                },
                {
                    "type": "COD",
                    "markingValue": {
                        "value": 15
                    }
                },
                {
                    "type": "RETURN",
                    "markingValue": {
                        "value": "1,2"
                    }
                },
                {
                    "type": "YXZ"
                },
                {
                    "type": "MUL",
                    "markingValue": {
                        "value": 10
                    }
                },
                {
                    "type": "CONTACT"
                }
            ]
        }
    ]
}

响应参数

{
    "code": "0000",
    "message": "请求成功",
    "result": true,
    "data":[{
        "order_serial_no": "0000019876576897",
        "pdf_info": "[[{"order_id":"5160533654","order_serial_no":"test_191021002","partner_id":"2017001068","partner_orderid":"test_191021002","order_type":"common","mailno":"4060005469862","customer_id":"","sender_name":"\u738b\u5c0f\u864e","sender_company":"\u51ef\u5229","sender_area_ids":"","sender_area_names":"\u6c5f\u82cf\u7701\uff0c\u5f90\u5dde\u5e02\uff0c\u65b0\u6c82\u5e02","sender_address":"\u6e56\u4e1c\u8def999\u53f7","sender_postcode":"221435","sender_phone":"021-85926525","sender_mobile":"13761960078","sender_branch":"201700","receiver_name":"\u9646\u5927\u6709","receiver_company":"\u5343\u5343","receiver_area_ids":"310118","receiver_area_names":"\u4e0a\u6d77\u5e02,\u4e0a\u6d77\u5e02,\u9752\u6d66\u533a","receiver_address":"\u4e0a\u6d77\u5e02\u9752\u6d66\u533a\u76c8\u6e2f\u4e1c\u8def6633\u53f7","receiver_postcode":"201700","receiver_phone":"020-57720341","receiver_mobile":"13761960075","receiver_branch":"200230","weight":"11.00","remark":"","status":"rs10","time":"2019-10-21 11:16:26","position_no":"G096-00 20","position_zz":"0","options":"","send_num":"0","nb_ckh":"2001123","cus_area1":"\u8ba2\u5355\u53f7:test_191021002\n\u8ba2\u5355\u53f7\uff1a123 \n\u6279\u6b21\u53f7\uff1a456212","cus_area2":"","position":"300","receiver_flag":"1","package_wd":"J200000","callback_id":"","wave_no":"","node_id":"","ems_flag":"","cus_area3":"","trade_code":"","shi1":null,"sheng1":null,"shi2":"310100","sheng2":"310000","collection_value":"100.00","value":"20.00","zffs":"0","innerProvinceName":"\u7701\u5185\u4ef6","package_wdjc":"\u96c6\u5305\u5730\uff1a\u4e0a\u6d77\u5206\u62e8\u5305  ","sender_branch_jc":"\u9752\u6d66\u533aYD","bigpen_code":"G096-00","lattice_mouth_no":"20","mailno_barcode":"406000546986204240","tname":"mailtmp_s12","dispatch_code":"20","qrcode":"4060005469862\/300 G096-00 20","privacy_receiver_name":"\u9646**","privacy_receiver_phone":"020-****0341","privacy_receiver_mobile":"137****0075"},["0424",0]]]",
        "mail_no": "5300010219368",
        "status": "1",
        "remark": null,
        "msg": "订单创建成功",
        "orderId":"9876576897"
    }]
}

错误响应参数

{
    "result": false,
    "code": "7777",
    "message": "内部接口服务失败",
    "sub_code":"s10",
    "sub_msg": "参数校验不合法"
}

韵达快递--电子面单打印接口--YdBmGetPdfInfo

请求信息

dll.YdBmGetPdfInfo(requestJSON, appKey, appSecret)

请求参数

参数名 类型 必填 说明
requestJSON string 创建订单参数JSON字符串
appKey string 请求发起方应用密钥
appSecret string 签名密钥

requestJSON JSON字符串

API地址https://open.yundaex.com/api/apiDoc?apiCode=apiauth_doc 电子面单打印接口

{
    "appid": "999999",
    "partner_id": "201700101001",
    "secret": "123456789",
    "orders": [
        {
            "mailno": "312356465656666"
        }
    ]
}

响应参数

{
    "code": "0000",
    "data": [
        {
          "mailno": "312356465656666",
          "pdfInfo": "base64info"
        }
    ],
    "message": "请求成功",
    "result": true,
    "sub_code": null,
    "sub_msg": null
}

整合快递订单创建接口--IntegrationOrderCreate

请求信息

dll.StoOmsExpressOrderCreate(requestJSON, fromAppkey, secretKey, fromCode)

请求参数

参数名 类型 必填 说明
orderType string 快递类型ZTO 中通/JT 极兔/EMS 邮政/STO 申通)
requestJSON string 创建订单参数JSON字符串
key string key 对应ZTO中appKey,JT中apiAccount,STO中fromAppkeyEMS类型的时候可以不填其他类型必填
secret string 签名密钥 对应ZTO中appSecret,JT中privateKey,EMS中secretKey,STO中secretKey
fromCode string 请求发起方应用资源编码,快递类型EMS类型时必填

请求参数

可以看上面ZTO 中通/JT 极兔/EMS 邮政/STO 申通) 的订单接口请求参数  

响应参数

可以看上面ZTO 中通/JT 极兔/EMS 邮政/STO 申通) 的订单接口响应参数 

释放C字符串内存--FreeCString

请求信息

dll.FreeCString(str)

请求参数

参数名 类型 必填 说明
str string 需要释放的字符串