怒~腾讯的营销QQ

前段时间怒喷“百胜ERP”系统,今天再来怒喷一下腾讯的营销QQ吧。

事情起因是这样子的:

最近,商城需要开启HTTPS访问,所以需要将一些不是HTTPS的服务都给切换掉,然后现在问题就出现在腾讯的营销QQ上。

其他合作商,在调用对方文件的时候,特别是脚本文件的时候都是做了协议的区分的,会自动根据访问的协议自动加载不同的域名的。

就是他!腾讯的营销QQ不能!因为他在源码里面写死的!

如果,你家没开HTTPS服务吧,我也就忍了,毕竟腾讯家虽然挣钱,但是一直很抠门,抠门到400电话都没有的境界,我想一个证书上千块肯定没钱买的嘛,我能理解。

问题是,居然开通了HTTPS服务了,为什么不做成自动的呢?

我通过分销商反馈,居然跟我说:“暂时不支持”??

你确定你不是SB?改个代码就那么难?

好吧,算了,顶多是偷懒,腾讯还是好的企业,虽然我一直用他家的东西,但是,说真的,他家的服务我一直不是很满意,如果不是因为基数在那边,那边凉快滚那边。

我就找了半天看看有没有投诉的入口,先投诉一下技术人员偷懒吧。

然后,没找到。

然后我再来找营销客服的售前,然后,居然不理我了,居然不理我了!

好吧。聊天记录放出来吧,我也不想多说,发泄一下,反正还是要用的,但是,这么牛的服务,能不用还是不用吧,市面上的服务又不是他们一家。

涉及到的文件是:https://wpa.b.qq.com/cgi/wpa.php

载入此文件内的脚本,然后执行加载另外一个脚本,就是另外那个脚本的连接的协议是写死的。

那么,我们可以怎么解决呢?

其实吧,很简单就是直接将这个文件的代码下载保存,自己修改一下然后用自己修改的代码替换他的代码就行了。只是,这样子之后他的代码修改的话,我们就只能手动修改了。

修改为如下形式就可以了:

srcRoot: (‘https:’ == document.location.protocol ? ‘https’:’http’)+”://combo.b.qq.com”,

 

2017-08-28 17:31:22
您好,这边是企业qq和营销qq官网直销处,请问有什么可以帮到您~
我 2017-08-28 17:31:48
我想知道你们的投诉的邮箱是哪个?我需要投诉你们的技术。
1004 – 腾讯企业产品直销中心 2017-08-28 17:31:51
您好,客服秋秋-售前咨询为您服务。
我 2017-08-28 17:32:14
请告诉我投诉的邮箱。
1004 – 腾讯企业产品直销中心 2017-08-28 17:33:16
您咨询错地方了,这边是企业级QQ管理员工的软件咨询处,无法处理个人QQ相关问题的。
如果是与个人qq相关的业务,请直接用电脑登陆kf.qq.com ,联系个人qq客服人员进行咨询,谢谢!
我 2017-08-28 17:33:48
我就是营销QQ的投诉。
我 2017-08-28 17:34:03
个人的我早就投诉完毕了。就是营销QQ的没有入口。
我 2017-08-28 17:38:13
?在??
我 2017-08-28 17:38:22
还是说不允许投诉呢?!
1004 – 腾讯企业产品直销中心 2017-08-28 17:38:50
我们这里也是没有投诉渠道的哦
1004 – 腾讯企业产品直销中心 2017-08-28 17:38:51
我们这里也是没有投诉渠道的哦
1004 – 腾讯企业产品直销中心 2017-08-28 17:38:54
我们这里也是没有投诉渠道的哦
我 2017-08-28 17:40:41
那我要投诉怎么办?靠你转达?还是坚决不受理?
1004 – 腾讯企业产品直销中心 2017-08-28 17:41:49
我们这里只是售前咨询的
1004 – 腾讯企业产品直销中心 2017-08-28 17:41:58
您可以看一下其他渠道哦
我 2017-08-28 17:43:24
你都说了,没有投诉渠道。你还让我看一下其他渠道?你确定你没说错?那我非要投诉怎么办?!到底哪个部门能接受,我现在就想知道这个,请你问你们的主管,到底我要找那个渠道?!

获取当前页面的全部链接用于检查内外链情况

最近,在完善ECSTORE的分销系统时,因为早期的遗留问题,造成页面的链接的不统一,要弄好分销系统的第一步就是不能链接串了,所以需要排查,一个个的排查很累噢。

下面就是使用原生的JS获取当前的链接辅助排查。

// 列出当前页面的全部链接

console.log('START');
for( var aa in document.links){
console.log( document.links[aa].href )
};
console.log('END');

// 列出不以什么为开头的链接

console.log('START');
var matchURL = /http:\/\/m\.shanmai\.cn\/p\/wiwy\//;
for( var aa in document.links){
if( document.links[aa].href.test(matchURL)===false ) console.log( document.links[aa].href );
};
console.log('END');

// 列出不以什么为开头的链接并设置对象的外框在页面中显示出来

console.log("START");
var matchURL=/http:\/\/m\.shanmai\.cn\/p\/wiwy\//;
for(var aa in document.links){
if(document.links[aa].href.test(matchURL)===false){
console.log(document.links[aa].href);
document.links[aa].style="display: inline-block;background-color: #ff0000;color: #00ff00;border: 6px solid #0000ff;"}
}
console.log("END");

// 列出本站且不以什么为开头的链接并设置对象的外框在页面中显示出来

console.log("START");
var matchURL=/http:\/\/m\.shanmai\.cn\/p\/wiwy\//;
for(var aa in document.links){
var oo=document.links[aa];
if(oo.href.test(/shanmai\.cn/)){
if(oo.href.test(matchURL)===false){
console.log(oo.href);
document.links[aa].style="display: inline-block;background-color: #ff0000;color: #00ff00;border: 6px solid #0000ff;"
}
}
}
console.log("END");

使用办法就是直接打开浏览器的开发者工具,或者直接按F12键打开,然后在控制台中输入命令即可。

怎么获取手机端的页面信息

前天修改了ECSTORE商城的转向,实现根据上网终端,自动将访问地址转向正确的链接,简单的说就是给你一个PC端的链接,你用手机访问,就能自动切换到手机端的链接上。

然后,我擦就出现了今天这个问题,之前用file_get_contents获取WAP端的内容并获取手张图片的代码忽然不能工作了。

经过排查,手机端调用的时候全部都访问PC端的页面了,我擦,数据不正确是正常的。

那么,怎么处理?

下面就是增加手机端访问的代码,其实很简单的。

参考网址:php 模拟手机访问页面并抓取数据

其实就是偷懒,去那边拿了一个手机头部定义哈~感激

// 定义常用的变量
$timeout = 60;
 $url = 'http://www.shanmai.cn/wap/article-1364.html';
 $header = array(
 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4'
 ); 
 
 // 方法 1.用curl
 $ch = curl_init(); 
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 curl_setopt($ch, CURLOPT_URL, $url);
 $contents = curl_exec($ch);
 print_r($contents);
 
 // 方法 2.用file_get_contents
 $opts = array(
 'http'=>array(
 'method'=>'GET',
 'timeout'=>$timeout,
 'header'=>$header
 )
 );
 $cx = stream_context_create($opts);
 $contents = file_get_contents( $url, false, $cx );
 print_r($contents);

当然,还有其他方法,如fsockopen等,不过不常用就不写了。

参考链接:

 

 

微信公众号开发的一些设置

名称 网址
微信公众平台后台 http://mp.weixin.qq.com
微信(支付)商户平台 http://pay.weixin.qq.com
微信开放平台 http://open.weixin.qq.com

1、管理员扫码认证

每次设置一下都需要管理员的扫码认证,很麻烦?

微信公众平台后台>设置>安全中心>绑定运营者微信号

具体说明查阅:如何绑定长期/短期运营者微信号?

2、微信支付账户信息

MCHID:商户申请微信支付后,由微信支付分配的商户收款账号

KEY:微信商户平台>账户中心>账户设置>API安全>密钥设置

开通“微信支付”的条件:

①选择帐号类型为服务号(政府或媒体订阅号)

②完成微信认证

申请入口:https://pay.weixin.qq.com/guide/index.shtml

2.1 安全证书pem格式证书

微信商户平台>账户中心>账户设置>API安全

2.2 支付授权目录

微信商户平台>开发配置>支付配置

注意:这个有特殊的地方,记得不要设置的太详细,要不适用性比较差,最好是能填写主域名就填写主域名,如www.ipodmp.com

2.3 微信支付显示名

微信支付的时候显示的名称,叫做商户简称,需要在

微信商户平台>账户中心>账户设置>商户信息>企业信息与经营信息

修改提交后,3-7个工作日完成。

3、微信公众号开发信息

APPID:微信公众平台>开发>基本配置

APPSECRET:微信公众平台>开发>基本配置

注意:需要将服务器的IP加入白名单内。

公众号的一些接口权限,具体需要查看:

微信公众平台后台>开发>接口权限

①获取access_token

②获取用户基本信息 (需认证)

③微信支付 (服务号,需认证)

④网页授权获取用户基本信息(服务号,需认证)

⑤分享接口 (需认证)

4、公众号设置

网页授权地址:

用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。

JS接口安全域名:

设置JS接口安全域名后,公众号开发者可在该域名下调用微信开放的JS接口。

业务域名:

设置业务域名后,在微信内访问该域名下页面时,不会被重新排版。用户在该域名上进行输入时,不出现安全提示(这个提示是:防欺诈盗号,请勿支付或输入qq密码)。

注意:这三项都是可以直接填写需要授权的域名,如www.ipodmp.com。

5、如果有公司有多个账户,需要打通账号体系的话,还需要绑定开发者账号,统一UnionID。

具体参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432中第二段说明。

需要登录微信开放平台注册账号,绑定已经认证的公众号。

ECSTORE-后台管理视图详情的翻页功能扩展

ECSTORE系统后台的管理视图是很方便我们的功能开发,唯一不足的是,如果我们的详情的内容有翻页,那么就必须在管理控制器里面写ajax_html方法,然后来调用传入的方法,生成翻页内容。

延伸:可以查看会员列表中的预存款里面的翻页,只要记录大于10项就可以看到了

可是,实际上,在finder的定义中我们已经写过一次代码了,完全没必要再写一次代码,但是,如果直接将连接指向finder内的方法的话,我们会发现,tab的表头一直再重复,很麻烦,怎么办呢?

二次开发呗~

我们的目标是:将那个表头去掉。

找到文件:

\app\desktop\lib\finder\builder\detail.php

找到行

if( count($this->detail_pages)>1){
echo $tab_header;
}

修改为下面代码:

if( count($this->detail_pages)>1 && ($_GET['noshow']==false) )
{
echo $tab_header;
}

保存。

然后,只要在翻页的地方将连接上增加&noshow=true然后就可以实现将表头去掉的功能了。

其他调用就看你自己的了咯~

2017.08.18 续

解决完这个问题后,同事有开发了一个详情页,然后按照这个逻辑操作,结果发现,tab切换的第一屏是有tab表头的,但是!当点击下一页的时候却发现表头消失了。

很诡异噢,实在没有时间检查一直拖到今天下午才检查,才发现,原来,这是一个误伤。

根本不需要重新二开呀,本来功能就是可以翻页的。

问题出在之前的同事开发的时候不知道从哪里找了一个模板,模板里面有一个开头:

<div>
<div container='true'>
...
</div>
</div>

只需要将这两行开头的去掉,问题就解决了,就不会出现重复的问题了,原因是因为加载的机制决定了这个是不能出现的,出现就会嵌套进去了。

JS-百度云盘垃圾文件清理免费版

最近百度云盘增加了垃圾文件清理的功能,他能自动筛选出重复的文件及空文件,可惜,他是给会员使用的。

难道我们只能体验不能自动?

那肯定是不行的了,毕竟百度云盘的API接口没有开放,你想自动化都是没办法的啦,除非你将文件都拷贝到“我的应用数据”里面,而且还要开启早期的接口权限,要不基本上我看没戏。

扩展:百度个人云存储(PCS) | 文件API列表

那么我们能做啥呢?

列出清单然后一个个复制有点不方便噢,感觉一个个的删除过去麻烦,怎么办?那就自动列出一个清单,方便我们复制粘贴呗。

只要在垃圾文件清理界面,开启浏览器的“开发者工具(按F12就能打开)”,如果你不知道就算了,文章也别看下去了。

然后在控制台中,粘贴下面的代码,然后回车就会新打开一个新页面,然后里面都是当前页的文件及目录了,比较好的是,按照目录来展示噢,这个是唯一的亮点。

var wWindow = open();
var aItems = document.querySelectorAll('dd.g-clearfix.group-view-item.choosen');
var dLists = {};
aItems.forEach(function(el)
{
 let path = el.querySelectorAll('div.file-path a')[0].innerHTML.replace(/\s*/g,'');
 let value = el.querySelectorAll('div.file-name a')[0].innerHTML;
 if(dLists[ path ]==undefined) dLists[ path ]=[];
 dLists[ path ].push(value);
});
for( path in dLists )
{
 console.log(path);
 wWindow.document.write( '<h1>' + path + '</h1>' );
 wWindow.document.write( '<ul>' );
 if(dLists[path].length>0)
 {
 dLists[path].forEach(function(row){
 wWindow.document.write( '<li>'+row+'</li>' );
 });
 }else wWindow.document.write( '<li>没有文件</li>' );
 wWindow.document.write( '</ul>' );
}
wWindow.document.close();

然后,根据清单一个个手动删除吧。

当然,如果你有开通PCS权限的话,他是提供文件接口的,就可以根据这个清单自动删除了噢,具体接口还能不能用,没有尝试,所以,呵呵,自行测试呗。不过估计有点悬。

微信-公众号网页授权信任登录开发调试

最近帮朋友增加ECSHOP商城系统的微信信任登录功能,不过他的公众号还没下来,难道不能开发?

想了一下,手上已经有一个公众号是认证的了,能不能用他来搞呢?

当然,最害怕的是会影响原先的应用。

试了一下,哈,问题解决,还没干扰。

解决办法是:

接口调用的时候需要传redirect_uri参数,而我们的公众号的微信授权登录填写的就是这个地址。

所以了,只要是redirect_uri下面的应用都是能收到授权信息的。

那就将code回传到这个redirect_uri地址,然后自己在做转发不就行了?

简单吧^_^

附上转发代码:

转发的网址比较复杂,所以使用了base64编码了~

error_reporting( E_ALL ^ E_NOTICE );
if( isset($_GET['URL']) )
{
$URL = base64_decode( $_GET['URL'] );
unset( $_GET['URL'] );
$URL .= (strpos($URL,'?')===false?'?':'&') . http_build_query( $_GET );
header( 'Location:' . $URL );
}

mysql-#1170 – BLOB/TEXT column ‘keywords’ used in key specification without a key length

今天,在开发客服系统文档中心的时候,定义数据库结构的时候出现如下错误提示:

mysql-#1170 – BLOB/TEXT column ‘keywords’ used in key specification without a key length

真令人烦恼噢,查了一下,都没有正解,检查了一下最终原来是因为:

这个字段定义是索引,但是类型却是longtext类型的。