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 · 看云

相关推荐
fish_xk20 小时前
Linux开方工具
linux·运维·服务器
m0_7381207221 小时前
应急响应(重点)——记一次某公司流量应急溯源分析(附带下载链接)
服务器·前端·数据库·安全·web安全·网络安全
计算机安禾1 天前
【计算机网络】第17篇:TCP拥塞控制的迭代——从Reno到CUBIC、BBR的理论转向
tcp/ip·计算机网络·php
中科三方1 天前
输入域名后无法访问?教你快速区分域名解析问题与服务器问题
运维·服务器
liuluyang5301 天前
linux kernel CONFIG_KCMP解析
linux·运维·服务器
daad7771 天前
记录一次上下文切换次数的统计
服务器·c++·算法
从零开始学习人工智能1 天前
一文读懂Safous网关+POP架构:零信任ZTNA完整工作原理(请求+响应全流程)
服务器·网络·架构
曦夜日长1 天前
Linux系统篇,指令(四):shell命令及运行原理
linux·运维·服务器
leoZ2311 天前
解决 CentOS7+vsftpd 新建用户登录失败 + ls 卡住问题
运维·服务器
MZ_ZXD0011 天前
springboot音乐播放器系统-计算机毕业设计源码76317
java·c语言·c++·spring boot·python·flask·php