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

相关推荐
RestCloud42 分钟前
ETLCloud中数据生成规则使用技巧
大数据·服务器·数据库·etl·数字化转型·数据处理·集成平台
编码小笨猪7 小时前
浅谈Linux中一次系统调用的执行过程
linux·服务器·c++
tiantianuser9 小时前
RDMA简介7之RoCE v2可靠传输
服务器·fpga开发·verilog·xilinx·rdma·可编程逻辑
国际云,接待11 小时前
微软云注册被阻止怎么解决?
服务器·网络·microsoft·云原生·微软·云计算
m0_6948455712 小时前
日本云服务器租用多少钱合适
linux·运维·服务器·安全·云计算
一心09212 小时前
Linux部署bmc TrueSight 监控agent步骤
linux·运维·服务器·监控·bmc truesight
Florence2312 小时前
linux中执行脚本命令的source和“.”和“./”的区别
linux·运维·服务器
白日依山尽yy12 小时前
Linux02
linux·运维·服务器
liulilittle13 小时前
通过高级处理器硬件指令集AES-NI实现AES-256-CFB算法并通过OPENSSL加密验证算法正确性。
linux·服务器·c++·算法·安全·加密·openssl
Blossom.11813 小时前
基于区块链的去中心化身份验证系统:原理、实现与应用
运维·服务器·网络·人工智能·机器学习·去中心化·区块链