ThinkPHP对接易联云打印

引入composer包

composer require yly-openapi/yly-openapi-sdk

php 复制代码
<?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;
    }

}

如上,传入一个订单信息,根据订单信息定义打印文本

易联云文档:指令集 · yilianyun-open-api · 看云

相关推荐
YuMiao21 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
Sinclair4 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
JaguarJack4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo4 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
Rockbean5 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
茶杯梦轩5 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试