收藏
回答

我自己开发的小程序对接微信打单软件,打印模版出现问题怎么处理?

// cloudfunctions/expressTrack/index.js


// 面单打印类型配置
const PRINT_TYPE = parseInt(process.env.PRINT_TYPE || '1'// 0=二联单(100mm×150mm),1=一联单(76mm×129mm)


// 生成运单(核心:自动打单)
async function addExpressOrder(order, orderId) {
  const access_token = await getAccessToken()
  
  // 获取已绑定快递账号
  const accountsRes = await getAllAccount()
  let bizId = ''
  let deliveryId = ''
  // ... 匹配逻辑省略 ...


  // 构建下单请求
  const body = {
    add_source: 0,       // 0=小程序
    order_id: orderId,   // 订单ID,需全局唯一
    openid: order._openid || '',
    delivery_id: deliveryId,
    biz_id: bizId,
    custom_remark: (order.remark || '').substring(0, 30),
    sender: {
      name: sender.name,
      tel: sender.phone,
      mobile: sender.phone,
      province: sender.province,
      city: sender.city,
      area: sender.district,
      address: sender.address
    },
    receiver: {
      name: addr.name || addr.userName || '',
      tel: addr.phone || addr.telNumber || '',
      mobile: addr.phone || addr.telNumber || '',
      province: addr.province || addr.provinceName || '',
      city: addr.city || addr.cityName || '',
      area: addr.district || addr.countyName || '',
      address: addr.detail || addr.detailInfo || ''
    },
    cargo: {
      count: 1, weight: 1,
      space_x: 20, space_y: 15, space_z: 10,
      detail_list: cargoDetail
    },
    shop: {
      wxa_path: 'pages/order-detail/order-detail?id=' + orderId,
      img_url: orderItems[0].image || '',
      goods_name: orderItems.map(i => i.name).slice(0, 3).join('、'),
      goods_count: orderItems.reduce((sum, i) => sum + (i.quantity || 1), 0)
    },
    insured: { use_insured: 0, insured_value: 0 },
    service: {
      service_type: deliveryId === 'EMS' ? EMS_SERVICE_TYPE : 0,
      service_name: '快递包裹'
    }
  }


  // 调用微信生成运单
  const res = await axios.post(
    `https://api.weixin.qq.com/cgi-bin/express/business/order/add?access_token=${access_token}`,
    body
  )
  return res.data
}


// 获取面单数据(打单软件用)
async function getExpressOrder(orderId, deliveryId, waybillId, openid) {
  const access_token = await getAccessToken()
  const body = {
    order_id: orderId,
    delivery_id: deliveryId,
    waybill_id: waybillId || '',
    openid: openid || '',
    print_type: PRINT_TYPE  // 0=二联单,1=一联单
  }
  const res = await axios.post(
    `https://api.weixin.qq.com/cgi-bin/express/business/order/get?access_token=${access_token}`,
    body
  )
  return res.data  // 返回 print_html(面单HTML), waybill_data(面单字段数组), waybill_id 等
}
HPRT N31BT,76mm 热敏纸,一联面单,快递公司是EMS。

第一张图我是在打印机首选项设置了72*259并且 偏移-50才能差不多完整的效果,图二我也忘记是怎么设置的了,反正不是标准的76*130mm。我觉得微信打单软件真的很适合我们这些小白。但是软件好像不能设置。官方大大可以帮助一下吗。

回答关注问题邀请回答
收藏

1 个回答

  • Vernon
    Vernon
    星期六 11:35

    图一它连打三张单联 的,后面两联是空白的

    星期六 11:35
    有用
    回复
登录 后发表内容