$this->config['appid'], "sn" => $sn, "templateId" => $templateId, "printTimes" => $num, "renderDataArray" => json_encode($data), "timestamp" => getDateFull() ]; $param['sign'] = $this->getPaySign($param); return Http::asJson()->post($this->gateway."api/cloud/print/tsplTemplatePrint", $param)->array(); } /** * 打印机状态查询下 * @param array $data 最多100台 * @return array */ public function deviceState(array $data = []): array { $param = [ "appId" => $this->config['appid'], "snsStr" => json_encode($data), "timestamp" => getDateFull() ]; $param['sign'] = $this->getPaySign($param); return Http::asJson()->post($this->gateway."api/cloud/device/batchStatus", $param)->array(); } /** * 绑定设备 * @param string $sn * @param string $name * @return array status true为成功,false为失败 message */ public function bindDevice(string $sn = "",string $name = ""): array { $param = [ "appId" => $this->config['appid'], "sn" => $sn, "noteName" => $name, "timestamp" => getDateFull() ]; $param['sign'] = $this->getPaySign($param); return Http::asJson()->post($this->gateway."api/cloud/device/bindDevice", $param)->array(); } /** * 解绑设备 * @param string $sn * @param string $deviceKey * @return array status true为成功,false为失败 message */ public function unbindDevice(string $sn = "",string $deviceKey = ""): array { $param = [ "appId" => $this->config['appid'], "sn" => $sn, "deviceKey" => $deviceKey, "timestamp" => getDateFull() ]; $param['sign'] = $this->getPaySign($param); return Http::asJson()->post($this->gateway."api/cloud/device/unbindDevice", $param)->array(); } /** * @param array $data * @return $this */ public function config(array $data = []) { $this->config = $data; return $this; } /** * 生成签名 * @param array $data 参与签名的数据 * @param string $signType 参与签名的类型 * @param string $buff 参与签名字符串前缀 * @return string */ public function getPaySign(array $data, string $signType = 'MD5', string $buff = ''): string { ksort($data); if (isset($data['sign'])) unset($data['sign']); foreach ($data as $k => $v) { if ('' === $v || null === $v) continue; $buff .= "{$k}{$v}"; } $buff .= $this->config['secret']; if (strtoupper($signType) === 'MD5') { return md5($this->config['secret'].$buff); } return strtoupper(hash_hmac('SHA256', $buff, $this->config['secret'])); } }