抖音私信卡片私信名片的原理分析

2023-11-14

抖音私信卡片,解决了客户封号严重、引流效率低的痛点,所以从去年到现在,依然是热销品。
"抖音快手私信名片链接跳转"是2022年抖音快手引流最新技术,可以生成卡片链接,支持标题、描述、logo以及跳转落地页的完全自定义配置.
支持微信公众号和微信号复制唤起微信客户端app添加,同时也支持任意链接落地页跳转
提高粉丝引流转化率,关注转化率,引流转化率,安全绿色
私信卡片功能
1、跳转微信
用户点击卡片,自动跳转微信界面,显示好友和群聊二维码
2、跳转链接
用户点击卡片,自动跳转到指定链接,支持任意链接。
3、跳转小程序
用户点击卡片,自动跳转到小程序,支持任意路径。
主要代码展示:

<?php
namespace app\cx_dyfx\controller;
use think\facade\Db;
use think\facade\Request;
use think\facade\View;
use vitphp\admin\controller\BaseController;
/**
 * @title 链接管理(www.lxh5068.com)
 */
class Url extends BaseController
{
    /**
     * @title 链接列表(www.lxh5068.com)
     */
    public function index(){
        $pid = input('pid');
 
        $pageNum = 20;
        $url = Db::name('cx_dyfx_url')->where('pid', $pid)->order('id desc')->paginate($pageNum);
 
        $hdurl = Request::domain() .'/cx_dyfx/index/';
        View::assign([
            'url'=>$url,
            'page'=>$url->render(),
            'hdurl'=>$hdurl
        ]);
	    return View::fetch();
	}
    /**
     * @title 编辑链接
     */
	public function edit(){
        $pid = input('pid');
        $id = input('id');
        $url = Db::name('cx_dyfx_url')->where(['pid'=>$pid,'id'=>$id])->find();
        if($url){
            $url['expire_time'] = $url['expire_time'] ? date("Y-m-d H:i:s", $url['expire_time']) : '';
        }
        //判断是否post提交
        if(request()->isPost()){
            $param = [
                'name'=>input('name'),
                'url'=>input('url'),
                'title'=>input('title'),
                'miaoshu'=>input('miaoshu'),
                'img'=>input('img'),
                'appid'=>input('appid'),
                'appsecret'=>input('appsecret'),
                'path'=>input('path'),
                'is_expire' => input('is_expire'),
                'expire_days' => input('expire_days'),
                'expire_time' => strtotime(input('expire_time')),
                'type'=>input('type'),
                'state'=>'0',
                'time'=>time(),
                'pid'=>$pid
            ];
            if($param['type']==3){
                $param['title'] = input('title2');
                $param['miaoshu'] = input('miaoshu2');
                $param['img'] = input('img2');
                $param['content'] = input('content');
                $param['is_expire'] = input('is_expire2');
                $param['expire_days'] = input('expire_days2');
                $param['expire_time'] = strtotime(input('expire_time2'));
 
                if($param['is_expire']!=3) unset($param['expire_time']);
                if($param['is_expire']!=2) unset($param['expire_days']);
                if($param['is_expire']==2){
                    if(!$param['expire_days']) $this->error('请填写正确的有效天数!');
                    if(($param['expire_days']%1!=0 || $param['expire_days']<=0)) $this->error('请填写正确的有效天数!!');
                    if($param['expire_days'] >= 365) $this->error('有效天数最长为365天!');
                    $path = [
                        'is_expire' => true,
                        'expire_type' => 1,
                        'expire_interval' => $param['expire_days']
                    ];
                }
                if($param['is_expire']==3){
                    if(!$param['expire_time']) $this->error('请选择正确的有效时间!');
                    if($param['expire_time'] <= time()) $this->error('有效期最少要大于当下!');
                    if($param['expire_time'] - time() >= 86400 * 365) $this->error('有效期最长为1年!');
                    $path = [
                        'is_expire' => true,
                        'expire_type' => 0,
                        'expire_time' => $param['expire_time']
                    ];
                }
                $path = $path ?? [];
                $path['path'] = 'pages/webview/webview';
                $path['query'] = 'url=https://'.$this->request->host().'/cx_dyfx/index/h5.html?id='.$id;
//                $path = ['path' => 'pages/webview/webview', 'query' =>'url=https://'.$this->request->host().'/cx_dyfx/index/h5.html?id='.$id];
                $wechatConfig = Db::name('cx_dyfx_weixin')->where('pid', '=', $pid)->find();
                $config = [
                    'appsecret' => $wechatConfig['wxapp_appsecret'],
                    'appid' => $wechatConfig['wxapp_appid'],
                ];
                $mini = new \WeMini\Qrcode($config);
                try {
                    $wxapp = app_http_request("https://api.weixin.qq.com/wxa/generate_urllink?debug=1&access_token=" . $mini->getAccessToken(), $path, [], [], true);
                } catch (\Exception $e) {
                    $this->error('微信配置有误:'.$e->getCode() . '-' . $e->getMessage());
                }
                $url = json_decode($wxapp, true);
                if ($url["errcode"]=='0'){
                    $param['url'] = $url['url_link'];
                } else {
                    $this->error('链接生成失败:'. $url['errcode'] . '--' . $url['errmsg']);
                }
            }
            if($param['type']==1){
                if($param['is_expire']!=3) unset($param['expire_time']);
                if($param['is_expire']!=2) unset($param['expire_days']);
                if($param['is_expire']==2){
                    if(!$param['expire_days']) $this->error('请填写正确的有效天数');
                    if(($param['expire_days']%1!=0 || $param['expire_days']<=0)) $this->error('请填写正确的有效天数!');
                    if($param['expire_days'] >= 365) $this->error('有效天数最长为365天');
                    $path = [
                        'is_expire' => true,
                        'expire_type' => 1,
                        'expire_interval' => $param['expire_days']
                    ];
                }
                if($param['is_expire']==3){
                    if(!$param['expire_time']) $this->error('请选择正确的有效时间');
                    if($param['expire_time'] <= time()) $this->error('有效期最少要大于当下');
                    if($param['expire_time'] - time() >= 86400 * 365) $this->error('有效期最长为1年');
                    $path = [
                        'is_expire' => true,
                        'expire_type' => 0,
                        'expire_time' => $param['expire_time']
                    ];
                }
                // 生成链接
                $config = [
                    'appsecret' => $param['appsecret'],
                    'appid' => $param['appid'],
                ];
                $mini = new \WeMini\Qrcode($config);
                $pathArr = $param['path'] ? explode('?', $param['path']) : [];
                if($pathArr){
                    $path['path'] = $pathArr[0];
                    $path['query'] = $pathArr[1] ?? '';
                }
                $path = $path ?? [];
                try {
                    $wxapp = app_http_request("https://api.weixin.qq.com/wxa/generate_urllink?debug=1&access_token=" . $mini->getAccessToken(), $path, [], [], true);
                } catch (\Exception $e) {
                    $this->error('微信配置有误:'.$e->getCode() . '-' . $e->getMessage());
                }
                $url = json_decode($wxapp, true);
                if ($url["errcode"]=='0'){
                    $param['url'] = $url['url_link'];
                } else {
                    $this->error('链接生成失败:'. $url['errcode'] . '--' . $url['errmsg']);
                }
            }
            if ($id){
                $res = Db::name('cx_dyfx_url')->where('id',$id)->update($param);
            }else{
                $param['create_time'] = time();
                $res = $id = Db::name("cx_dyfx_url")->insertGetId($param);
                if($param['type']==3){
                    $path = ['path' => 'pages/webview/webview', 'query' =>'url=https://'.$this->request->host().'/cx_dyfx/index/h5.html?id='.$id];
                    $wechatConfig = Db::name('cx_dyfx_weixin')->where('pid', '=', $pid)->find();
                    $config = [
                        'appsecret' => $wechatConfig['wxapp_appsecret'],
                        'appid' => $wechatConfig['wxapp_appid'],
                    ];
                    $mini = new \WeMini\Qrcode($config);
                    try {
                        $wxapp = app_http_request("https://api.weixin.qq.com/wxa/generate_urllink?debug=1&access_token=" . $mini->getAccessToken(), $path, [], [], true);
                        $url = json_decode($wxapp, true);
                        if ($url["errmsg"] == 'ok') {
                            Db::name('cx_dyfx_url')->where('id',$id)->update(['url'=>$url['url_link']]);
                        } else {
                            $this->error('链接生成失败:' . $url['errcode']  . '--' . $url['errmsg']);
                        }
                    } catch (\Exception $e) {
                        $this->error('链接生成失败,请检查设置:'.$e->getMessage());
                        throw $e;
                    }
                }
            }
            if($res){
                $this->success("保存成功!", ToUrl('cx_dyfx/url/index'));
            }else{
                $this->error("保存失败!");
            }
        }
        View::assign([
            'url'=>$url
        ]);
        return View::fetch();
    }
    /**
     * @title 删除链接(www.lxh5068.com)
     */
    public function del(){
        $ids = $this->request->post('ids');
        $query = Db::name('cx_dyfx_url')->where('id',$ids)->delete();
        if ($query){
            $this->success('删除成功');
        }else{
            $this->error('删除失败');
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抖音私信卡片私信名片的原理分析 的相关文章

  • Graphormer复现碎碎念

    一 简介 Graphormer https github com microsoft Graphormerhttps github com microsoft Graphormer 二 安装 使用 install sh安装 前面是pip直接

随机推荐

  • localStorage的过期时间设置的方法?——和派孔明

    我们都知道localStorage不主动删除 永远不会销毁 那么如何设置localStorage的过期时间呢 今天我们来一起尝试一下
  • C++与STL基础二:栈stack与前中后缀表达式的应用

    C 与STL基础二 栈stack与前中后缀表达式的应用 栈 stack 是一种具有特定操作规则的数据结构 它遵循后进先出 LIFO 的原则 在C 中 我们可以使用STL 标准模板库 中的stack类来实现栈的功能 本文将介绍栈及其常见应用之
  • Python之numpy教程(二):运算、索引、切片

    1 numpy数组的特点在于 大小相等的数组之间 任何算数运算都会将运算应用到元素级 请看下面的例子 arr np array 1 2 3 4 5 6 arr输出 array 1 2 3 4 5 6 arr arr输出 array 1 4
  • opencv实现阈值分割

    文章目录 基础函数 直方图阈值 实现 threshold 函数使用 三角法阈值 实现 迭代法阈值 算法步骤 Python语法补充 实现 大津法 理论 cv实现 底层复现 自适应阈值 理论 具体操作步骤 优化 CV实现 底层复现 基础函数 在
  • 基于SSM+Vue的汽车售票网站的设计与实现

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SSM 前端 采用Vue技术开发 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是否Mave
  • [前端系列第6弹]Ajax简明教程:轻松实现Web页面的异步交互

    在这篇文章中 我将介绍Ajax的基本概念 原理 优缺点 实现方法和应用场景 以及如何使用它来实现Web页面的异步交互 还将给一些简单而实用的例子 让你可以跟着我一步一步地编写自己的Ajax代码 目录 一 什么是Ajax 二 如何使用Ajax
  • gdb调试多进程程序和多线程程序

    gdb调试多进程程序和多线程程序 平时一般用gdb直接调试短小的程序 好像我还没调试过多进程和多线程程序呢 1 gdb调试多进程程序 如果一个进程通过fork系统调用创建了子进程 gdb会继续调试原来的进程 子进程则正常运行 常用的有两种方
  • win10设置任务栏双屏不同位置(方向)

    在所有显示器上显示任务栏开 任务栏在屏幕的位置 底部 在所有显示器上显示任务栏 任务栏在屏幕的位置靠右 在所有显示开 win10双屏设置任务栏位置方向 哔哩哔哩 bilibili
  • 重定义;多次初始化(C++报错)

    C 中报错 b 重定义 多次初始化 如图 将a b c前面的int数据类型去掉即可
  • SpringMvc,全面讲解@RequestParam注解的用法和原理

    本文要讲的 RequestParam注解大家在开发中应该会经常的用到 但是它的某些用法我感觉你不一定都知道 所以这篇文章就讲解一下带大家拨开云雾全面了解这个注解 使大家在开发中使用到这个注解的时候不再一知半解 先看一下 RequestPar
  • 生活服务是未来十年最大的商业机会?

    编者按 本文来自有邻的投稿 内容来自有邻创始人杨仁斌周末在杭州一个 O2O 活动上的分享 文章主要是杨仁斌对于 O2O 和生活服务的一些观点分享 最后一个部分中介绍了他们自己家的 有邻 提及的数据等资料 36 氪不作背书 我的第一个观点是
  • OpenWrt系统配置UCI

    UCI简介 UCI Unified Configuration Interface 是 Openwrt 中的统一配置接口 官方文档参考 每一个程序的配置文件都保存在 etc config 目录 可以通过文本编辑器 uci 一个可执行程序 以
  • 2022年社区工作人员社区专职工作者考试精选套卷及答案

    题库来源 优题宝公众号 2022年社区工作人员社区专职工作者考试精选套卷及答案 根据最新社区工作人员社区专职工作者考试大纲与历年社区工作人员社区专职工作者考试真题汇总编写 包含社区工作人员社区专职工作者考试常考重点题型与知识点 有助于考生复
  • Metal 系列教程

    这系列文章 目前发布在我的小专栏 iOS 图像处理 上 欢迎订阅 从 2014 年 Apple 正式推出 Metal 到现在 这个 Metal 系列教程 酝酿了很久 却迟迟没有进展 直到 WWDC 2018 Apple 宣布 iOS 12
  • 社工库网址与制作方法

    将互联网泄露的信息汇聚成数据库 简单说 黑客数据库 中国执行信息公开网 http zxgk court gov cn dt dapp 1 全国标准信息公共服务平台 http std samr gov cn 征信中心 https ipcrs
  • arm启动redis报错

    报错如下 WARNING you have Transparent Huge Pages THP support enabled in your kernel This will create latency and memory usag
  • 从BOM,DOM和ECMAScript来看JavaScript

    一个老套的问题 JavaScript是由什么组成的 答 1 ECMAScript 核心 描述JS的语法和基本对象 2 文档对象模型 DOM 处理网页内容的方法和接口 3 浏览器对象模型 BOM 与浏览器交互的方法和接口 ECMAScript
  • adb logcat命令查看并过滤android输出log

    http blog csdn net hansel article details 38088583 cmd命令行中使用adb logcat命令查看Android系统和应用的log dos窗口按ctrl c中断输出log记录 logcat日
  • mysql之服务的停止和开启,登录和退出01

    1 服务的停止和开启 登录和退出 1 mysql服务的停止和开启 net stop 服务名 例如net stop MYSQL56 服务名字通过右击电脑 管理 服务和应用程序 服务获取 net start 服务名 2 MYSQL服务的登录和退
  • 抖音私信卡片私信名片的原理分析

    抖音私信卡片 解决了客户封号严重 引流效率低的痛点 所以从去年到现在 依然是热销品 抖音快手私信名片链接跳转 是2022年抖音快手引流最新技术 可以生成卡片链接 支持标题 描述 logo以及跳转落地页的完全自定义配置 支持微信公众号和微信号