40 lines
1.4 KiB
PHP
40 lines
1.4 KiB
PHP
<?php
|
||
|
||
namespace addon\printer\data\sdk\yilianyun\api;
|
||
|
||
use addon\printer\data\sdk\yilianyun\config\YlyConfig;
|
||
use addon\printer\model\Printer;
|
||
use think\Exception;
|
||
|
||
class PrintService extends RpcService
|
||
{
|
||
|
||
/**
|
||
* 打印接口
|
||
*
|
||
* @param $machineCode string 机器码
|
||
* @param $content string 打印内容
|
||
* @param $originId string 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母
|
||
* @return mixed
|
||
*/
|
||
public function index($machineCode, $content, $originId, $printer = [])
|
||
{
|
||
$res = $this->client->call('print/index', array ( 'machine_code' => $machineCode, 'content' => $content, 'origin_id' => $originId ));
|
||
|
||
if (is_null($res)) {
|
||
throw new Exception("invalid response.");
|
||
}
|
||
if ($res->error == 18 && $printer) {
|
||
$printer_model = new Printer();
|
||
$config = new YlyConfig($printer[ 'open_id' ], $printer[ 'apikey' ]);
|
||
$access_token = $printer_model->getYlyToken($config, $printer[ 'printer_id' ], 1);
|
||
$this->index($machineCode, $content, $originId, []);
|
||
}
|
||
if (isset($res->error) && $res->error != 0) {
|
||
$errorDescription = isset($res->body) ? $res->error_description . $res->body : $res->error_description;
|
||
throw new Exception('Call method print/index error code is ' . $res->error . ' error message is ' . $errorDescription);
|
||
}
|
||
|
||
return $res;
|
||
}
|
||
} |