微信后台去推公众号关注后下单链路文档:https://ad.weixin.qq.com/guide/2561
此网站使用TP

上报下单行为

第一步 获取相关配置

public $APPID= 'appid'; //公众号里获取
public $APPSECRET = 'appsecret'; //公众号里获取
public $TOKEN = 'token';//接口获取
public $USER_ACTION_SET_ID='数据源ID';//接口获取

第二步 获取数据源ID

  • 方法类:Weixingg里的 addUserActionSets 是创建数据源。(代码在文章后边)
  • 数据源创建一次即可 可以把创建好的数据源ID记做 $USER_ACTION_SET_ID

第三步 上报(调用写好的方法类-Weixingg)

  1. 获取click_id ,click_id是在广告页面的url上的gdt_vid的值 (此处上报不上传clickid)
  2. open_id 是微信用户的openid
  3. $total_price 是下单金额
            $promotion_link='完整的广告url;$uinfo = UserModel::detail($userid);if($uinfo){$wmodel = new Weixingg();$wmodel->addUserActionsCom($promotion_link,$click_id,$total_price,$uinfo['open_id']);}

方法类Weixingg

<?php
namespace app\api\model;
use think\Cache;
use think\Log;class Weixingg
{public $APPID= 'appid';public $APPSECRET = 'appsecret';public $TOKEN = 'TOKEN_NAME';public $USER_ACTION_SET_ID='数据源id';/*** 公众号关注-Open MKT API* @param $urli* @param $click_id* @param $money* @throws \Exception*/public function addUserActionsCom($urli,$click_id,$money,$openid){$access_token = $this->getTokenFun();$url='https://api.weixin.qq.com/marketing/user_actions/add?'.'version=v1.0&access_token='.$access_token;$params['actions'][0] = array('user_action_set_id' => $this->USER_ACTION_SET_ID,'url' =>$urli,'action_time' => time(),'action_type' =>'COMPLETE_ORDER','user_id' =>array('wechat_app_id' =>$this->APPID,'wechat_openid' =>$openid,),'action_param'=>array("value"=> $money,"source"=>'Biz',"claim_type"=>1,));$result = $this->curl_post_https($url,json_encode($params));$result = json_decode($result,true);if($result['errcode']!=0){Log::write('提交失败 重新提交!');}}/*** H5-Open MKT API* @param $urli* @param $click_id* @param $money* @throws \Exception*/public function addUserActions($urli,$click_id,$money){$access_token = $this->getTokenFun();$url='https://api.weixin.qq.com/marketing/user_actions/add?'.'version=v1.0&access_token='.$access_token;$params['user_action_set_id'] = $this->USER_ACTION_SET_ID;$params['actions'][0] = array('url' =>$urli,'action_time' => time(),'action_type' =>'COMPLETE_ORDER','action_param'=>array("value"=> $money));if(!empty($click_id)){$params['actions'][0]['trace']['click_id'] = $click_id;}$result = $this->curl_post_https($url,json_encode($params));Log::write('addUserActions:'.print_r($result,true));//$result = json_decode($result,true);//print_r($result);}//创建数据源-微信公众号要使用type=WECHAT的数据源public function addUserActionSets(){$access_token = $this->getTokenFun();$url='https://api.weixin.qq.com/marketing/'.'user_action_sets/add?version=v1.0&access_token='.$access_token;$params['type'] = 'WECHAT';$params['name'] = '数据源名字';$params['description'] = '数据源简介 ';$params['wechat_app_id'] = $this->APPID;$result = $this->curl_post_https($url,json_encode($params));Log::write('addUserActionSets:'.print_r($result,true));//$result = json_decode($result,true);//print_r($result);}//创建数据源-h5的数据源public function addUserActionH5Sets(){$access_token = $this->getTokenFun();$url='https://api.weixin.qq.com/marketing/'.'user_action_sets/add?version=v1.0&access_token='.$access_token;$params['type'] = 'WEB';$params['name'] = '数据源名称';$params['description'] = '微信 数据源名称';$result = $this->curl_post_https($url,json_encode($params));Log::write('addUserActionSets:'.print_r($result,true));//$result = json_decode($result,true);//print_r($result);}//获取access_tokenpublic function getTokenFun(){$cacheKey = '@access_token';if (!Cache::get($cacheKey)) {Log::write('没有缓存cacheKey:');}else{$zhi = Cache::get($cacheKey);Log::write('缓存cacheKey:'.print_r($zhi,true));return $zhi;}$data = Cache::get($this->TOKEN);Log::write('expires_in:'.print_r($data['expires_in'],true));if($data && $data['expires_in']>time()){return $data['access_token'];}else{$url = 'https://api.weixin.qq.com/cgi-bin/token?'.'grant_type=client_credential&appid='.$this->APPID.'&secret='.$this->APPSECRET;$result= $this->curl_get_https($url);Log::write('getTokenFun:'.print_r($result,true));$result = json_decode($result,true);$result['expires_in'] = time()+7000;Log::write('expires_in2:'.print_r($result['expires_in'],true));Cache::set($this->TOKEN,$result);return $result['access_token'];}}//获取access_tokenpublic function getTokenFunNoCache(){$url = 'https://api.weixin.qq.com/cgi-bin/token?'.'grant_type=client_credential&appid='.$this->APPID.'&secret='.$this->APPSECRET;$result= $this->curl_get_https($url);Log::write('getTokenFunNoCache:'.print_r($result,true));$result = json_decode($result,true);$result['expires_in'] = time()+7000;Log::write('expires_inNoCache2:'.print_r($result['expires_in'],true));Cache::set($this->TOKEN,$result);return $result['access_token'];}public function curl_post_https($request_url,$parameters){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $request_url);curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type:application/json"));$response = curl_exec($curl);if (curl_error($curl)) {$error_msg = curl_error($curl);$error_no = curl_errno($curl);curl_close($curl);throw new \Exception($error_msg, $error_no);}curl_close($curl);return $response;}public function curl_get_https($url,$header=array()){ // 模拟提交数据函数$curl = curl_init(); // 启动一个CURL会话curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referercurl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回curl_setopt($curl, CURLOPT_HTTPHEADER, $header);// 头部信息$tmpInfo = curl_exec($curl); // 执行操作if (curl_errno($curl)) {echo 'Errno'.curl_error($curl);//捕抓异常}curl_close($curl); // 关闭CURL会话return $tmpInfo; // 返回数据,json格式}public function valid(){$echoStr = $_GET['echostr'];if($this->checkSignature()){echo $echoStr; #坑点,看下面的常见坑介绍exit; #一定要停止php运行,避免产生不必要的字串符}}private function checkSignature(){$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token = 'huihui123456';$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr, SORT_STRING);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}
}
?>

上报下单行为 腾讯广告 微信 公众号 PHP相关推荐

  1. 8 亿邮件地址泄露,源于邮件验证服务;腾讯推出微信公众号直播工具

    (给技术最前线加星标,每天看技术热点) 转自:开源中国.solidot.cnBeta.腾讯科技.快科技等 [技术资讯] 0.8 亿邮件地址遭泄露,源于邮件验证服务 近日,Security Discov ...

  2. A9G开发板上报GPS定位数据实现微信公众号定位显示

    文章目录 前言 一.准备工作 1.硬件准备 2.软件准备 3.微信公众号 三.AT指令 四.相关配置 五.订阅信息和上报数据到公众号 六.联系我们 前言 本文将介绍如何使用将A9G通过GPS定位得到的 ...

  3. 影响微信公众号排名的因素

    自微信推出公众号搜索功能以来,排名规则一直深受大家的关注,但腾讯至今对于排名规则没也给出官方参考,那么影响微信公众号排名的因素到底有哪些?根据我多年微信公众号运营的经验,我们总结了以下几条对排名影响因 ...

  4. 腾讯云通过公众号开通短信验证码

    通过微信公众号开通短信验证码 在项目研发的过程中,之前使用的是邮箱的验证方式.这次来点高大上的使用短信验证码(需要注册腾讯云和微信公众号) 首页登录腾讯云 https://cloud.tencent. ...

  5. “互联网+”背景下使用微信公众号增强班主任工作与整合教学资源(泰微课)...

    前记:此文是我爱人一项作业.因为我本人对于微信这一块比较熟悉,就参与这项作业中.此文已经参加移动和教育相关活动.作者是我爱人,如有转载请署名作者. 一.什么是"互联网+"? 早在1 ...

  6. 微信公众号广告市场如此之大,还不抓住这个淘金的好机会

    2015年,互联网广告市场相对集中在一些巨头手中,其中霸占头把交椅的百度,占比31.7%较往年初现颓势,而腾讯在沉寂了数年之后,突然如梦初醒,得益于微信广告方面的突破,较14年增长了百分之60%,实现 ...

  7. 300万微信公众号迎来广告时代

    移动互联网时代,做一款让用户喜爱的产品或许不难,但要做一款即让用户喜爱.又能赚钱的产品却很难.这一点,相信作为微信之父的张小龙正越来越深刻的感同身受. 7月7日,微信官方对外宣布,正式联合广点通推出微 ...

  8. 微信公众号广告点击率预估效果优化

    [转载]微信公众号广告点击率预估效果优化_腾讯大数据 http://data.qq.com/article?id=2914 1.背景 点击率预估(pCTR)是广告投放过程中的一个重要环节,精准的点击率 ...

  9. vue 微信公众号获取定位经纬度 腾讯地图逆地址解析为具体地址

    最近做项目需要用到 微信公众号获取定位,并将定位转换为具体地址的需求,找了挺多,最后整理下,分享给大家~ 我这里使用的是腾讯地图,也可以使用其他的如百度.高德等. 思路是,先使用微信开放文档的获取定位 ...

最新文章

  1. python 对象创建_从Python中的基类对象创建对象
  2. 指针数组 数组指针 函数指针 指针函数
  3. activiti的processEngine空指针异常
  4. SGU 269. Rooks(DP)
  5. [bootStrap]代码块出现横线滚动条
  6. mysql group by 别名_[转]为什么group by后面不能使用别名(除MySQL)
  7. [Leetcode][第120题][JAVA][三角形最小路径和][动态规划][递归]
  8. vivado下创建基本时序周期约束
  9. 如何在SQL Server 2005中还原数据库
  10. 计算机网络教程三次握手,计算机网络(二) TCP协议的三次握手
  11. oracle daga备份,敏捷的Oracle 10g MAA配置方法
  12. mysql中member_在MySql中实现MemberShip的权限管理
  13. Qt---打印系统时间,毫秒级
  14. 大数据 | 致敬科比的篮球生涯。
  15. C语言:约瑟夫环(简单版)
  16. 河城荷取 二分答案 最大流
  17. 私域流量sop社群运营规划工作计划表格方案模板2022
  18. 批量wod转pdf、批量excle转pdf、pdf转excle、word实现方案
  19. Intel VMD技术和SPDK VMD驱动模块介绍及使用
  20. Qbao Network 周年庆, 各路大佬齐祝贺!

热门文章

  1. 使用COLMAP进行三维重构
  2. Android 针对华为手机调用裁剪出现圆形裁剪框的处理
  3. 《MySQL必知必会》第8篇:存储过程、函数
  4. 服务器hz和显示器hz,揭秘精神论:玩电竞是否必须144Hz显示器
  5. Signing for ‘xxx‘ requires a development team.
  6. 初学者如何入门C语言
  7. js逆向 事件点击找加密位置
  8. 贝塞尔曲线想到的--真的很美,但是有时很丑
  9. Conmi的正确答案——米家第一个ReactNative程序开发记录
  10. ElasticJob定时任务学习总结