284 lines
13 KiB
Go
284 lines
13 KiB
Go
package xpyunapi
|
||
|
||
const (
|
||
//http返回成功状态码
|
||
HttpStatusSuccessCode = 200
|
||
//响应状态码
|
||
REQUEST_HEADER_ERROR = -1 // 请求头错误
|
||
REQUEST_PARAM_INVALID = -2 //参数不合法
|
||
REQUEST_SIGN_FAILED = -3 //参数签名失败
|
||
REQUEST_USER_NOT_REGISTER = -4 //用户未注册
|
||
|
||
SN_USER_NOT_MATCH = 1001 //打印机编号和用户不匹配
|
||
PRINTER_NOT_REGISTER = 1002 //打印机未注册
|
||
PRINTER_OFFLINE = 1003 //打印机不在线
|
||
ADD_ORDER_FAILED = 1004 //添加订单失败
|
||
ORDER_NOT_FOUND = 1005 //未找到订单信息
|
||
ORDER_DATE_INVALID = 1006 //订单日期格式或大小不正确
|
||
PRINT_CONTENT_MORE_THAN_12K_BYTES = 1007 //打印内容不能超过12K
|
||
PRINTER_RECORD_LOCK_FAIL = 1008 //用户修改打印机记录失败
|
||
SN_OR_NAME_EMPTY = 1009 // 用户添加打印机时,打印机编号或名称不能为空
|
||
PRINTER_NUMBER_INVALID = 1010 //打印机设备编号无效
|
||
PRINTER_EXIST = 1011 //打印机已存在,若当前开放平台无法查询到打印机信息,请联系售后技术支持人员核实
|
||
PRINTER_EXCEPTION = 1012 //添加打印设备失败,请稍后再试或联系售后技术支持人员
|
||
ORDER_IDEMPOTENT = 1013 //打印订单时触发幂等性
|
||
ORDER_IDEMPOTENT_LIMITLEN = 1014 //幂等因子过长
|
||
LOGO_FORMAT_ERROR = 1016 //LOGO文件格式错误
|
||
LOGO_SIZE_LARGE = 1017 //LOGO文件超出规定范围
|
||
LOGO_UPLOAD_TIMES = 1018 //LOGO上传次数超限制
|
||
LOGO_DELETE_NO_EXIST = 1020 // LOGO删除失败
|
||
LABEL_MODE_ERROR = 1021 //LOGO上传模式错误
|
||
)
|
||
|
||
var XpuErrMsg2 = map[string]string{
|
||
"REQUEST_HEADER_ERROR": "请求头错误",
|
||
"REQUEST_PARAM_INVALID": "参数不合法",
|
||
"REQUEST_SIGN_FAILED": "参数签名失败",
|
||
"REQUEST_USER_NOT_REGISTER": "用户未注册",
|
||
"SN_USER_NOT_MATCH": "打印机编号和用户不匹配",
|
||
"PRINTER_NOT_REGISTER": "打印机未注册",
|
||
"PRINTER_OFFLINE": "打印机不在线",
|
||
"ADD_ORDER_FAILED": "添加订单失败",
|
||
"ORDER_NOT_FOUND": "未找到订单信息",
|
||
"ORDER_DATE_INVALID": "订单日期格式或大小不正确",
|
||
"PRINT_CONTENT_MORE_THAN_12K_BYTES": "打印内容不能超过12K",
|
||
"PRINTER_RECORD_LOCK_FAIL": "用户修改打印机记录失败",
|
||
"SN_OR_NAME_EMPTY": "用户添加打印机时,打印机编号或名称不能为空",
|
||
"PRINTER_NUMBER_INVALID": "打印机设备编号无效",
|
||
"PRINTER_EXIST": "打印机已存在",
|
||
"PRINTER_EXCEPTION": "添加打印设备失败",
|
||
"ORDER_IDEMPOTENT": "打印订单时触发幂等性",
|
||
"ORDER_IDEMPOTENT_LIMITLEN": "幂等因子过长",
|
||
"LOGO_FORMAT_ERROR": "LOGO文件格式错误",
|
||
"LOGO_SIZE_LARGE": "LOGO文件超出规定范围",
|
||
"LOGO_UPLOAD_TIMES": "LOGO上传次数超限制",
|
||
"LOGO_DELETE_NO_EXIST": "LOGO删除失败",
|
||
"LABEL_MODE_ERROR": "LOGO上传模式错误",
|
||
}
|
||
var XpuErrMsg = map[string]string{
|
||
"1001": "打印机编号和用户不匹配",
|
||
"1002": "打印机未注册,尚未添加至云平台",
|
||
"1003": "打印机不在线",
|
||
"1004": "添加订单失败",
|
||
"1005": "未找到订单信息",
|
||
"1006": "订单日期格式或大小不正确",
|
||
"1007": "打印内容不能超过12K",
|
||
"1008": "用户修改打印机记录失败",
|
||
"1009": "用户添加打印机时,打印机编号或名称不能为空",
|
||
"1010": "打印机设备编号无效",
|
||
"1011": "打印机已存在",
|
||
"1012": "添加打印设备失败",
|
||
"1013": "打印订单时触发幂等性",
|
||
"1014": "幂等因子过长",
|
||
"1016": "LOGO文件格式错误",
|
||
"1017": "LOGO文件超出规定范围",
|
||
"1018": "LOGO上传次数超限制",
|
||
"1020": "LOGO删除失败",
|
||
"1021": "LOGO上传模式错误",
|
||
}
|
||
|
||
const (
|
||
//声音类型 v10版本
|
||
VoiceTypeV10PersonBig = 0 //真人语音 大
|
||
VoiceTypeV10PersonMedium = 1 //真人语音 中
|
||
VoiceTypeV10PersonSmall = 2 //真人语音 小
|
||
VoiceTypeV10DiDi = 3 //滴滴声
|
||
VoiceTypeV10Mute = 4 //静音
|
||
|
||
//声音类型 其他固件版本
|
||
VoiceTypeOtherPerson = 0 //真人语音
|
||
VoiceTypeOtherDiDi = 3 //滴滴声
|
||
VoiceTypeOtherMute = 4 //静音
|
||
|
||
//声音大小,打印机固件版本为非V10.xx的机器支持此参数
|
||
VolumeLevelBig = 0 //大
|
||
VolumeLevelMedium = 1 //中
|
||
VolumeLevelSmall = 2 //小
|
||
VolumeLevelClose = 3 //关闭
|
||
|
||
//切刀控制开关,默认为0,仅用于支持切刀的芯烨云打印机
|
||
CutterOpen = 0 //开启云端默认设置控制切刀
|
||
CutterClose = 1 //关闭云端切刀
|
||
|
||
//声音播放模式:0-取消订单模式,1-静音模式,2-来单播放模式(默认),3-播报退单语音,4-播报美团来单语音,5-播报饿了么来单语音
|
||
VoiceCancelOrder = 0 //取消订单模式
|
||
VoiceMute = 1 //静音模式
|
||
VoicePlayOrder = 2 //来单播放模式
|
||
VoiceUserChargeback = 3 //用户申请退单模式
|
||
VoiceMT = 4 //播报美团来单语音
|
||
VoiceELM = 5 //播报饿了么来单语音
|
||
|
||
//打印模式 默认0
|
||
ModeCheckYes = 1 //不检查打印机是否在线,直接生成打印订单,并返回打印订单号。如果打印机不在线,订单将缓存在打印队列中,打印机正常在线时会自动打印
|
||
ModeCheckNo = 0 //或不指定则会检查打印机是否在线,如果不在线 则不生成打印订单,直接返回设备不在线状态码;如果在线则生成打印订单,并返回打印订单号
|
||
//默认订单过期时间
|
||
ExpiresInDefault = 86399 //秒
|
||
//支付方式41-55
|
||
PayTypeZFB = 41 //支付宝
|
||
PayTypeWX = 42 //微信
|
||
PayTypeYunZF = 43 //云支付
|
||
PayTypeYLCard = 44 //银联刷卡
|
||
PayTypeYLPay = 45 //银联支付
|
||
PayTypeMemberCardPay = 46 //会员卡消费
|
||
PayTypeMemberCardCharge = 47 //会员卡充值
|
||
PayTypeYiZF = 48 //翼支付
|
||
PayTypePaymentSuccess = 49 //成功收款
|
||
PayTypeJLZF = 50 //嘉联支付
|
||
PayTypeYQB = 51 //壹钱包
|
||
PayTypeJDZF = 52 //京东支付
|
||
PayTypeKQZF = 53 //快钱支付
|
||
PayTypeWZF = 54 //威支付
|
||
PayTypeXQZF = 55 //享钱支付
|
||
|
||
//支付与否
|
||
PayModeDrawback = 59 //退款
|
||
PayModeReceipt = 60 //到账
|
||
PayModeConsume = 61 //消费
|
||
|
||
//打印机状态
|
||
PrinterStateOffline = 0 //离线
|
||
PrinterStateOnlineNormal = 1 //在线正常
|
||
PrinterStateOnlineUnusual = 2 //在线异常
|
||
PrinterStateError = -1 //获取状态出错
|
||
|
||
)
|
||
|
||
var (
|
||
//打印机状态说明
|
||
PrinterStatus = map[float64]string{
|
||
PrinterStateOffline: "离线",
|
||
PrinterStateOnlineNormal: "在线正常",
|
||
PrinterStateOnlineUnusual: "在线异常",
|
||
PrinterStateError: "获取状态出错",
|
||
}
|
||
)
|
||
|
||
//请求参数
|
||
type RestRequest struct {
|
||
User string `json:"user"` //开发者ID(芯烨云后台登录账号)
|
||
UserKey string `json:"-"` //芯烨云后台开发者密钥
|
||
Timestamp int64 `json:"timestamp"` //当前UNIX时间戳,10位,精确到秒
|
||
Sign string `json:"sign"` //对参数 user + UKEY + timestamp 拼接后(+号表示连接符)进行SHA1加密得到签名,值为40位小写字符串
|
||
Debug int `json:"debug"` //debug=1返回非json格式的数据。仅测试时候使用
|
||
}
|
||
|
||
//响应参数
|
||
type XPYunResp struct {
|
||
HttpStatusCode int `json:"httpStatusCode"`
|
||
Content *XPYunRespContent `json:"content"`
|
||
}
|
||
type XPYunRespContent struct {
|
||
Code int `json:"code"`
|
||
Msg string `json:"msg"`
|
||
Data interface{} `json:"data,omitempty"`
|
||
ServerExecutedTime int `json:"serverExecutedTime"`
|
||
}
|
||
|
||
type AddPrinterRequestItem struct {
|
||
Sn string `json:"sn"` //打印机编号
|
||
Name string `json:"name,omitempty"` //打印机名称
|
||
}
|
||
|
||
// 添加打印机到开发者账户(可批量)
|
||
type AddPrinterRequest struct {
|
||
RestRequest `json:",inline"`
|
||
Items []*AddPrinterRequestItem `json:"items"`
|
||
}
|
||
|
||
//设置打印机语音类型
|
||
type SetVoiceTypeRequest struct {
|
||
RestRequest `json:",inline"`
|
||
Sn string `json:"sn"` //打印机编号
|
||
VoiceType int `json:"voiceType"` //声音类型:打印机固件版本为V10.xx的机器取值: 0真人语音(大) 1真人语音(中) 2真人语音(小) 3 嘀嘀声 4 静音;其它固件版本的机器取值:0真人语音 3 嘀嘀声 4 静音
|
||
VolumeLevel int `json:"volumeLevel"` //声音大小:0大 1中 2小 3关闭,说明:打印机固件版本为非V10.xx的机器支持此参数
|
||
}
|
||
|
||
//打印小票订单
|
||
type PrintRequest struct {
|
||
RestRequest `json:",inline"`
|
||
Sn string `json:"sn"` //打印机编号
|
||
Content string `json:"content"` //打印内容,不能超过12k字节
|
||
//非必填
|
||
Copies int `json:"copies,omitempty"` //打印份数,默认为1,取值[1-65535]
|
||
Cutter int `json:"cutter,omitempty"` //是否支持切刀自定义控制 0采用默认切刀 1采用自定义控制切刀
|
||
Voice int `json:"voice,omitempty"` //声音播放模式,0-取消订单模式,1-静音模式,2-来单播放模式(默认),3-播报退单语音,4-播报美团来单语音,5-播报饿了么来单语音
|
||
Mode int `json:"mode,omitempty"` //打印模式,默认为0
|
||
ExpiresIn int `json:"expiresIn,omitempty"` //订单有效期 单位:秒 取值范围为:0<订单失效时间<24*60*60,使用该参数时,需要将参数mode 设置为1
|
||
BackurlFlag int `json:"backurlFlag,omitempty"` //回调地址对应标识,必须先在管理后台设置,否则无效
|
||
//PayType int `json:"payType,omitempty"` //41~55: 支付宝 41、微信 42、云支付 43、银联刷卡 44、银联支付 45、会员卡消费 46、会员卡充值 47、翼支付 48、成功收款 49、嘉联支付 50、壹钱包 51、京东支付 52、快钱支付 53、威支付 54、享钱支付 55
|
||
//PayMode int `json:"payMode,omitempty"` //59~61: 退款 59 到账 60 消费 61
|
||
//Money float64 `json:"money,omitempty"` //支付金额 允许保留2位小数
|
||
}
|
||
|
||
//打印标签订单
|
||
type PrintLabelRequest struct {
|
||
RestRequest `json:",inline"`
|
||
Sn string `json:"sn"` //打印机编号
|
||
Content string `json:"content"` //打印内容,不能超过12k字节
|
||
//非必填
|
||
Copies int `json:"copies,omitempty"` //打印份数,默认为1,取值[1-65535]
|
||
Voice int `json:"voice,omitempty"` //声音播放模式,0-取消订单模式,1-静音模式,2-来单播放模式(默认),3-播报退单语音,4-播报美团来单语音,5-播报饿了么来单语音
|
||
Mode int `json:"mode,omitempty"` //打印模式,默认为0
|
||
ExpiresIn int `json:"expiresIn,omitempty"` //订单有效期 单位:秒 取值范围为:0<订单失效时间<24*60*60,使用该参数时,需要将参数mode 设置为1
|
||
BackurlFlag int `json:"backurlFlag,omitempty"` //回调地址对应标识,必须先在管理后台设置,否则无效
|
||
PayType int `json:"payType,omitempty"` //41~55: 支付宝 41、微信 42、云支付 43、银联刷卡 44、银联支付 45、会员卡消费 46、会员卡充值 47、翼支付 48、成功收款 49、嘉联支付 50、壹钱包 51、京东支付 52、快钱支付 53、威支付 54、享钱支付 55
|
||
PayMode int `json:"payMode,omitempty"` //59~61: 退款 59 到账 60 消费 61
|
||
Money float64 `json:"money,omitempty"` //支付金额 允许保留2位小数
|
||
}
|
||
|
||
//删除打印机
|
||
type DelPrinterRequest struct {
|
||
RestRequest `json:",inline"`
|
||
SnList []string `json:"snlist"` //打印机编号集合
|
||
}
|
||
|
||
//修改打印机信息
|
||
type UpdPrinterRequest struct {
|
||
RestRequest `json:",inline"`
|
||
Sn string `json:"sn"` //打印机编号
|
||
Name string `json:"name,omitempty"` //打印机名称
|
||
//非必填
|
||
CardNo string `json:"cardno"` //打印机流量卡号码
|
||
}
|
||
|
||
//清空待打印队列
|
||
type EmpPrinterQueueRequest struct {
|
||
RestRequest `json:",inline"`
|
||
Sn string `json:"sn"` //打印机编号
|
||
}
|
||
|
||
// 查询订单状态
|
||
type QueryOrderStateRequest struct {
|
||
RestRequest `json:",inline"`
|
||
OrderId string `json:"orderId"` //订单编号,由“打印订单”接口返回
|
||
}
|
||
|
||
//查询指定打印机某天的订单统计数
|
||
type QueryOrderStatisRequest struct {
|
||
RestRequest `json:",inline"`
|
||
Sn string `json:"sn"` //打印机编号
|
||
Date string `json:"date"` //查询日期,格式YY-MM-DD,如:2016-09-20
|
||
}
|
||
|
||
//获取指定打印机状态
|
||
type QueryPrinterStatusRequest struct {
|
||
RestRequest `json:",inline"`
|
||
Sn string `json:"sn"` //打印机编号
|
||
}
|
||
|
||
//批量查询打印机状态
|
||
type QueryPrintersStatusRequest struct {
|
||
RestRequest `json:",inline"`
|
||
SnList []string `json:"snlist"` //打印机编号集合,一次最多20台
|
||
}
|
||
|
||
//金额播报 仅用于支持金额播报的芯烨云打印机
|
||
type PlayVoiceRequest struct {
|
||
RestRequest `json:",inline"`
|
||
Sn string `json:"sn"` //打印机编号
|
||
//非必填
|
||
PayType int `json:"payType"` //支付方式41~55
|
||
PayMode int `json:"payMode"` //支付与否59~61:退款 59 到账 60 消费 61
|
||
Money float64 `json:"money"` //支付金额,允许保留2位小数
|
||
}
|