引入composer包
composer require yly-openapi/yly-openapi-sdk
<?php
namespace app\common\library;
use app\admin\model\yp\Order;
use App\Api\PrintService;
use App\Config\YlyConfig;
use App\Oauth\YlyOauthClient;
use think\Cache;
use think\Config;
class Yly
{
/**
* 易联云打印订单
* @param $security_info
* @return int
* @throws \think\Exception
*/
public function print_yly($security_info)
{
//获取配置中的应用id和密匙
$config = new YlyConfig(Config::get('site.clientId'), Config::get('site.clientSecret'));
$client = new YlyOauthClient($config);
try {
$token = Cache::get('access_token');
if ($token) {
$token = json_decode($token);
}
if (!$token) {
$token = $client->getToken();
Cache::set('access_token', json_encode($token), 864000);
}
} catch (Exception $e) {
throw new \think\Exception('获取或更新access_token的次数,已超过最大限制! ');
echo $e->getMessage() . "\n";
print_r(json_decode($e->getMessage(), true));
return;
}
$access_token = $token->access_token; //调用API凭证AccessToken 永久有效,请妥善保存.
$refresh_token = $token->refresh_token; //刷新AccessToken凭证 失效时间35天
$expires_in = $token->expires_in; //自有型应用可忽略此回调参数, AccessToken失效时间30天 //机器码
$origin_id = time(); //内部订单号(32位以内)
/**文本接口开始**/
$print = new PrintService($access_token, $config);
//58mm排版 排版指令详情请看 http://doc2.10ss.net/332006
$content = '';//
$content .= "<FS2><center>金蛋到家</center></FS2>";
$content .= "时间:".date('Y-m-d H:i:s', $security_info->createtime) . "\n";
$content .= "单号:". $security_info->order_no . "\n";
$content .= "姓名:". $security_info->name . "\n";
$content .= "电话:". $security_info->phone . "\n";
$content .= "城市:". $security_info->city . "\n";
$content .= "地址:". $security_info->address . "\n";
$content .= "商品:------------". "\n";
foreach ($security_info->item as $key=>$value){
$content .= $value['goods_title']."*".$value['num']."\n";
}
$content .= "-----------------". "\n";
$content .= "备注:". $security_info->remarks . "\n";
$content .= "金额:". $security_info->goods_money . "\n";
$youhui = $security_info->goods_money-$security_info->actual_money;
if($youhui >0){
$content .= "优惠:". $youhui . "\n";
}
$content .= "实付:". $security_info->actual_money . "\n";
try {
//获取配置中的设备号
$res = $print->index(Config::get('site.machineCode'), $content, $origin_id);
} catch (Exception $e) {
throw new \think\Exception('打印失败');
return 0;
}
//打印状态升级成已打印
Order::where('id',$security_info->id)->where('print_status','0')->update(['print_status'=>'1']);
return 1;
}
}
如上,传入一个订单信息,根据订单信息定义打印文本