weixin_44532019
2021-12-05 11:30
采纳率: 87.5%
浏览 80
已结题

关于#python#的问题:pyhton对接快递鸟 快递鸟已经返回我html打印模板 我想要链接打印机把他打印出来目前返回的Html 的数据 更改后缀名后 可以直接显示我要打印出来的东西

pyhton对接快递鸟 快递鸟已经返回我html打印模板 我想要链接打印机把他打印出来
目前返回的Html 的数据 更改后缀名后 可以直接显示我要打印出来的东西

img

img

下面是目前的代码 求帮个忙写一个 链接打印机并且打印的数据 最好是创建一个专门打印的类

import requests
import hashlib
import base64
import json

###导包

创建类 打单子

class Kd_Da_Dan():
##定义所需要的系统参数
def init(self):#初始化
self.url = 'http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json'#打印面单调试地址
self.EBusinessID = 'test1621702' #用户ID快递鸟页面的
self.ApiKey = 'e934cad8-8b84-4007-8129-2b1358bf39bf'#快递鸟页面api秘钥
self.RequestType = "1007"

    self.ShipperCode = 'STO' #快递公司编码
    self.OrderCode = 'YPXS20120411'#订单编号 去数据库中数据
    self.ExpNo = ''#快递单号
    self.CustomerName = '123456'#电子面单客户号 管快递公司要 或直接快递鸟申请
    self.CustomerPwd = '123456'#快递公司密码
    self.xiangyingtou()#调用相应头
def xiangyingtou(self):
    data = self.getParams()#调用加密处理 返回相应体
    res = requests.post(self.url, data)#发送pst请求 返回res
    # print(res.json())
    myres = json.loads(res.text)
    print(myres["PrintTemplate"])







def getParams(self):
    # # 组装应用级参数
    # RequestData = {
    #     'ShipperCode': self.ShipperCode,
    #     'OrderCode': self.OrderCode,
    #     'ExpNo': self.ExpNo,
    #     'CustomerName': self.CustomerName,
    #     'CustomerPwd': self.CustomerPwd
    #     }

    ## 提交信息
    RequestData = {
        "OrderCode": self.OrderCode,#销售单号取药师帮单号 或 erp销售单号
        "ShipperCode": self.ShipperCode,#快递公司编码
        "CustomerName": self.CustomerName,#'#电子面单客户号 管快递公司要 或直接快递鸟申请
        "CustomerPwd": self.CustomerPwd,#快递公司密码
        "MonthCode": "",#电子面单客户号,需要下载《快递鸟电子面单客户号参数对照表.xlsx》,参考对应字段传值
        "SendSite":  self.CustomerName,#电子面单客户号,需要下载《快递鸟电子面单客户号参数对照表.xlsx》,参考对应字段传值
        "PayType": 3,#邮费支付方式:1-现付,2-到付,3-月结,4-第三方支付(仅SF支持)
        "MonthCode": "",#电子面单客户号,需要下载《快递鸟电子面单客户号参数对照表.xlsx》,参考对应字段传值
        "ExpType": 1, #快递类型:1-标准快件 ,详细快递类型参考《快递公司快递业务类型.xlsx》
        "Cost": '',#快递运费
        "OtherCost":'',
        "Sender": {
            "Company": "东晨药业有限公司",#发件人公司
            "Name": "Taylor",#发件人
            "Mobile": "15018442396", #发件人电话
            "ProvinceName": "上海",#发家人省
            "CityName": "上海市",#发市
            "ExpAreaName": "青浦区",#发件区
            "Address": "明珠路"#发件详细地址
        },#发件人信息
        "Receiver": {
            "Company": "",#收件人公司
            "Name":'肖宏伟', #收件人
            "Mobile": "15018442396", #收件人电话
            "ProvinceName": "北京省",#收件省
            "CityName": "北京市",#收件市
            "ExpAreaName": "朝阳区",#收件区
            "Address": "三里屯街道"#收件人详细地址
        },#收件人信息
        "Commodity": [
            {
                "GoodsName": "药品",#商品名称
                "Goodsquantity": 1,#商品数量
                "GoodsWeight": 1.0#商品重量
            }
        ],#商品详情
        "Weight": '',#重量
        "Quantity": 1,#包裹数(最多支持30件) 一个包裹对应一个运单号,如果是大于1个包裹,返回则按照子母件的方式返回母运单号和子运单号
        "Volume": '',#包裹总体积m3 当为快运的订单时必填,不填时快递鸟将根据各个快运公司要求传对应的默认值
        "IsReturnPrintTemplate": 1,#返回电子面单模版
        # "TemplateSize": 打印模版
        "Remark": "小心轻放"#备注
    }
    # 组装系统级参数
    data = {
        "RequestData": json.dumps(RequestData),#请求内容需进行URL(utf-8)编码。请求内容JSON格式,须和DataType一致。
        "RequestType": self.RequestType, #商户ID,请在我的服务页面查看。
        "EBusinessID": self.EBusinessID,##用户ID快递鸟页面的
        "DataSign": self.getSign(RequestData), #数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码,最后 进行URL(utf-8)编码。详细过程请查看Demo。
        "DataType": 2#请求、返回数据类型:只支持JSON格式
    }
    return data

def md5(self,n):
    md5 = hashlib.md5()
    md5.update(str(n).encode("utf-8"))
    return md5.hexdigest()
# md5加密
def getSign(self,n):
    md5Data = self.md5(json.dumps(n)+ self.ApiKey)
    res = str(base64.b64encode(md5Data.encode("utf-8")), "utf-8")
    return res

a= Kd_Da_Dan()

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 深夜不睡的夜猫子 2021-12-05 14:47
    已采纳
    思路大概是这样的
    # 保存为html文件
    # html转pdf      相关库及程序:pdfkit wkhtmltopdf
    # 打印pdf         相关库及程序:pywin32 gsprint
    
    评论
    解决 无用
    打赏 举报 编辑记录

相关推荐 更多相似问题