|  | # -*- coding: utf-8 -*-'
import hashlib
import json
import time
import requests
class KuaiDi100:
    def __init__(self):
        self.key = ''  # TODO 客户授权key
        self.secret = ''  # TODO 电子面单secret
        self.url = 'https://poll.kuaidi100.com/print/billparcels.do'  # 请求地址
    def submit(self, param, settings):
        """
        发货单打印
        :param param: 模板配置信息和自定义参数信息
        :param settings: 纸张配置信息
        :return: requests.Response.text
        """
        timestamp = str(time.time())
        md = hashlib.md5()
        param_str = json.dumps(param)
        temp_sign = param_str + timestamp + self.key + self.secret
        md.update(temp_sign.encode())
        sign = md.hexdigest().upper()
        req_params = {
            'method': 'billparcels',
            'key': self.key,
            't': timestamp,
            'sign': sign,
            'param': param_str,
            'settings': json.dumps(settings)
        }
        return requests.post(self.url, req_params).text  # 发送请求
param = {
    "tempid": "xxxx",  # 模板编码,通过管理后台的打印发货单模板配置信息获取
    "siid": "xxxx",  # 打印设备码,通过打印机输出的设备码进行获取
    "callBackUrl": "https://www.baidu.com/fhd/callback",  # 打印状态对调地址
    "petName": "kd100",  # 自定义参数
    "recName": "小百",  # 自定义参数
    "recPhone": "10086",  # 自定义参数
    "payTime": "2021-01-15 15:40:55",  # 自定义参数
    "expressName": "德邦快递",  # 自定义参数
    "printTime": "2021-01-15 15:41:30",  # 自定义参数
    "printCount": "1",  # 自定义参数
    "address": "广东省深圳市南山区金蝶软件园",  # 自定义参数
    "total": "21", "remark": "购物小票作为购物凭证,请妥善保管,您有任何疑问,请咨询服务热线 123456798",  # 自定义参数
    "img0": {  # 图片参数,多图片时用img0,img1,img2等追加
        "type": "code_128",
        "content": "887921256577",
        "width": 350,
        "height": 100
    },
    "tab0": [  # 表格参数,多表格时用tab0,tab1,tab2等追加对象
        {
            "prodName": "热敏纸",
            "count": "5",
            "specs": "76*130",
            "unitPrice": "30",
            "price": "150"
        },
        {
            "prodName": "热敏纸",
            "count": "10",
            "specs": "100*180",
            "unitPrice": "50",
            "price": "500"
        },
        {
            "prodName": "续打纸",
            "count": "5",
            "specs": "",
            "unitPrice": "40",
            "price": "200"
        },
        {
            "prodName": "云打印机",
            "count": "1",
            "specs": "二代",
            "unitPrice": "499",
            "price": "499"
        }
    ]
}
settings = {
    "pageWidth": 100,  # 纸张宽,单位mm,默认值:100
    "pageHeight": 180,  # 纸张高,单位mm ,续打纸张时,该字段设置为null或空串
    "margins": {  # 边距
        "top": 5,  # 上边距,单位:mm,默认:0
        "bottom": 5,  # 下边距,单位:mm,默认:0
        "left": 5,  # 左边距,单位:mm,默认:0
        "right": 5  # 右边距,单位:mm,默认:0
    }
}
result = KuaiDi100().submit(param, settings)
print(result)
 |