标签 微信 下的文章

网站开发中如何支持https和http

前段时间,微信公众号已经明确网站域名必须是https,从明年开始执行,对于很多做微擎的都需要升级支持https,但是如何做到网站同时支持两个协议呢?

比如引入jssdk我们可以这么写//res.wx.qq.com/open/js/jweixin-1.2.0.js也就是去掉http:或者https:直接//开头就可以了,这样不管什么协议都可以的;当然如果是自己网站,可以通过代码去获取网址协议;

需要注意https需要全站支持,也就是网站里面最好不要包含http开头协议.


扫码二维码阅读

阿里云服务器安装wdcp安装使用,替换amh

php开发环境,以前一直用amh,从使用上来说很简单也很方便,鉴于微信公众号平台要求启用https,发现wdcp比较合适,并且支持多版本php切换,同时支持Apache和nginx切换,很方便;

wdcp安装命令,在ssh里面执行

yum install -y wget
wget http://dl.wdlinux.cn/files/lanmp_v3.2.tar.gz
tar zxvf lanmp_v3.2.tar.gz
sh lanmp.sh
sh lib/phps.sh

差不多要一个小时,可能服务器配置差,高配置很快,wdcp不用多介绍,支持可视化操作添加站点啥的,安装完成后
管理后台 http://ip:8080/login 你的ip
后台和mysql默认帐号密码admin wdlinux.cn
登陆进去改帐号密码即可.

现在网站大多数都升级成https,阿里云提供一年免费ssl证书申请
登录:阿里云控制台,产品与服务,证书服务,购买证书。
购买:证书类型选择 免费型DV SSL,然后完成购买。
补全:在 我的证书 控制台,找到购买的证书,在操作栏里选择 补全。填写证书相关信息。
域名验证:可以选择 DNS,如果域名用了阿里云的 DNS 服务,再勾选一下 证书绑定的域名在 阿里云的解析。
上传:系统生成 CSR,点一下 创建。
提交审核。
审核很快最后下载证书.下载的整数上传到ssl管理,需要名称改成域名一样,wdcp后台有说明.就这么简单配置好https访问的网站.


扫码二维码阅读

微擎js支付中的应用讲解和代码实例

js支付体验好,不需要跳转,直接在本页面内完成支付,但是微擎给的代码非常简单,在实际开发中还是有很多的坑,感谢黄河指导,完成了支付的开发.

首先需要配置支付信息,在这里不多说了,主要是微擎后台和商户里面,重点说开发.先说前端,对于我们没有加载微擎公共开头结尾,那就要自己加载一些必须的代码.

<a href="javascript:void(0);" data-name="李白"  class="weui_btn weui_btn_plain_primary weui_btn_inline">支付</a>
<?php
$wx = $_W['account']['jssdkconfig'];
$wx['url'] ='http://'.$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ;
?>
<script>
    window.sysinfo = {"uniacid":{php echo $this->weid},"acid":{$_W['acid']}};

    var appIdstr = "{$wx['appId']}";
    var timestampstr = "{$wx['timestamp']}";
    var nonceStrstr = "{$wx['nonceStr']}";
    var signaturestr = "{$wx['signature']}";
wx.config({
    debug: false,
    appId: appIdstr,
    timestamp: timestampstr,
    nonceStr: nonceStrstr,
    signature: signaturestr,
        jsApiList: [
        'checkJsApi',
        'onMenuShareTimeline',
        'onMenuShareAppMessage','showMenuItems','hideOptionMenu','chooseWXPay',
    ]
});
</script>
<script type="text/javascript" src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>
 <script src="{php echo $this->yobyurl}zepto.min.js"></script>
<script type="text/javascript" src="{$_W['siteroot']}app/resource/js/lib/mui.min.js"></script>
<script type="text/javascript" src="{$_W['siteroot']}app/resource/js/app/util.js"></script>
<script>
$(function(){

document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {

$('.weui_btn').click(function(){
        $.getJSON("{$ajaxurl}",{name:name}, function(data, status){
        //这里传递参数到生成订单
            if(status == 'success'){
           
                util.pay({
                    orderFee : data.fee,
                    payMethod : 'wechat',
                    orderTitle : '微信支付金额' + data.fee + '元',
                    orderTid : data.ordertid,
                    module : 'yoby_test',
                    success : function(result) {//支付成功
                    $.alert('支付成功');
                   //可不写   
                    },
                    fail : function(result) {//支付失败
                       $.alert('支付失败');
                    },
                    complete : function(result) {//无论成功失败
                    //可不写
                    }
                });
            }
        });
       
        });
});
});

</script>

js代码就上面这么多,当然实际开发中需要自己调整代码,接着需要在site.php里面重要两个方法,一个是生成订单,一个是成功支付后的业务处理.开发终是不能传递参数到支付后的,所以首先把需要参数保存到订单中,一般

    public function doMobilepay() {//生成订单 $ajaxurl就是指向这里的方法
echo json_encode(array('fee'=>$n,'ordertid'=>$sn));//生成订单要返回一个json,一般包括金额和订单号即可,注意订单号需要唯一
}

public function payResult($params) {//支付成功处理,非常重要,你支付后业务处理要放到这里面
if ($params['result'] == 'success' && $params['from'] == 'notify') {//里面放业务代码
需要注意,这里面$_W['openid']是获取不到的,用下面代码
$uid = $params['tag']['uid'];
$openid = $params['user'];
$weid = $params['uniacid'];
$tid=$params['tid'];//这就是生成的唯一订单号 
$fee = $params['fee'];//金额
然后到订单表查询这个订单的信息包括传递的参数

}

}

到此支付开发就完成了,送一个生成订单函数

//生成sn订单,22位
function sn(){
return date('YmdHis').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
}

支付涉及钱的处理,所以要经过多重测试,可以用0.01元来测试,确认没问题再正式上线,有条件可以公测.开发中订单表至少包含金额,订单号,openid,weid以及传递的参数字段.


扫码二维码阅读

ios10奇葩的声音bug,微信中不能播放声音,已解决

ios10以后,iphone手机在播放声音时候会出现没有声音,相同型号相同版本可能会有声音也有可能没有,也有可能重启后 又有声音,总之这个bug非常奇怪,在微信浏览器和自带Safari中都存在,但是QQ浏览器中并不存在;

目前解决办法是没有的,只能通过以后ios升级,看看会不会解决,只有10以后会有,不是每个手机都会出现,有人说可以通过jssdk播放来解决,经过测试,并没有完美解决.

以上bug在安卓手机中并不存在

2017-5-10已解决
只需要在代码中改为以下即可,必这样写

 WeixinJSBridge.invoke('getNetworkType', {}, function (res) {
         document.getElementById('musicBox').play();
   });

对应的html
<audio  id="musicBox"  src="http://weixin.yoby123.cn/weui/c/v4.mp3"></audio>

扫码二维码阅读

关于微信朋友圈发布内容只能自己看见解封说明

如果遇到自己公众号分享内容到朋友圈,别人都看不见,那么,你的公众号分享朋友圈被微信官方屏蔽了,一般不会有任何提示,这时候就要解封被屏蔽域名;并且公众号后台有时候并不显示违规.

微信官方解答连接http://kf.qq.com/faq/131117ne2MV7141117JzI32q.html,点击这里查看相关解决办法

1、请先对照上诉规范,将违规的规则、提示进行修改或删除,直至符合本解答相关规范为止。

2、修改后,可以通过电子邮件发送至腾讯指定邮箱:moment@tencent.com申请解封。

3、若公众帐号功能被封禁,请按公众平台的相应提示等待解封,目前此邮箱(moment@tencent.com)只接受朋友圈相关处罚的解封申请,不接受公众帐号解封申请。

邮件标题请采用如下格式:

【朋友圈解封申请】“申请人或企业” + “页面主题(如神经猫)”

正文请附上被拦截链接以及情况说明。并包含无法分享的开放平台应用appid和分享链接。

经审核被拦截内容修改后已符合本解答相关规范,方可解封


扫码二维码阅读

POST和GET在curl中应用

在做爬虫,抓取网站,做同步,api开发,以及微信公众号开发中,curl使用非常重要,下面就来介绍curl使用;

函数两枚

//post提交
function post($url,$msg){//post ssl
$ch = curl_init();

if (class_exists('\CURLFile')) {
    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
} else {
    if (defined('CURLOPT_SAFE_UPLOAD')) {
        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
    }
}
//$msg = array('media'=>"@".$filepath);
//5.6+ $msg = array('media'=>new \CURLFile($filepath));
preg_match('/https:\/\//',$url)?$ssl=TRUE:$ssl=FALSE;
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL,$url);
if($ssl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt($ch, CURLOPT_POSTFIELDS,$msg);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
    }

//get获取
function get($url){   
 $ch = curl_init();
 preg_match('/https:\/\//',$url)?$ssl=TRUE:$ssl=FALSE;
 curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, 0);
if($ssl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$data  =  curl_exec($ch);
curl_close($ch);
return $data; 
}

两个函数都支持ssl,也就是https开头访问,能够自动判断是否是https网站;
特别注意5.6以上包括5.6版本php 上传可是和以前完全不一样,这是一个大坑


扫码二维码阅读

积分话费充值和违章查询功能

  1. 积分话费充值

本模块是一个通过系统积分或余额来进行充值话费,支持1元,2元,5元等常见金额,接口采用apix.cn这一家接口,移动联通电信都是支持的,是做活动必不可少之一选择,Hongbao什么的都落后了,积分由于采用系统积分,所以各个模块之间互通,本模块重在兑换,是不能钱包的;

测试关键字,本公众号内回复: 话费充值

  1. 违章查询

本模块是一个采用免费路帮网api违章查询接口,可以支持全部大部分城市,并不是全部,如果选择里面没有,表示不支持,路帮网会继续增加的,模块采用缓存成功查询结果缓存1天,以防止频繁调用接口;目前网络上好用且免费api并不多;请看明白是api免费,相对聚合数据不用购买昂贵的查询次数.

本公众号内回复 违章查询

  1. weui+升级3.4

weui是一套UI,是微信端/手机端 UI开发选择之一,拥有和微信一致的UI;包含百余项UI组件;本次主要增加音效版摇一摇和vconsole调试工具;

简单说下vconsole,这是一个微信团队开发的手机端调试工具,众所周知,手机端调试页面非常不方便,此工具可谓及时雨;

- 阅读剩余部分 -

js模板推荐tpl推荐

js模板简介

js模板主要是解决js拼接容易出错而产生的,今天推荐一个不到0.5KB的js模板,支持PC电脑和手机,微信,weui+已内置此模板;

使用方法

<div id="content1"></div>
<script id="test" type="text/html">
    <% for (var i=0;i<list.length;i++) { %>
        <div><%=i%>. <%=list[i]%>
         <%=this.title1||'不存在则输出'%>
         <%= (this.t!=undefined)?"存在":"不存在"%>
        </div>
    <%}%>
    <%=title%>
    <% for(var j in list){%>
    
    <%=list[j]%>
    
    <%}%>
</script>
<script>
var data = {
    title: '标签',
    list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他']
};
var html = tpl(document.getElementById('test').innerHTML, data);

document.getElementById('content1').innerHTML = html;
</script>

    <div id="content"></div>
<script>
var data={
    txt:"登鹳雀楼",
    list:[
        "白日依山尽",
        "黄河入海流",
        "欲群千里目",
        "更上一层楼"
    ]
}
var tplHTML=' <div><%=txt%></div>'+
        '<% for(var i=0;i<list.length;i++){ %>'+
                    '<p><%=list[i]%></p>'+
                '<% } %>';
var dest=tpl(tplHTML,data);
document.getElementById('content').innerHTML = dest;
</script>

- 阅读剩余部分 -

php自定义函数讲解之去除文章内空格换行

知识点

php中默认去除函数为trim,但是只能去除开头末尾空格,对于换行,内容中空格去无能为力,此时就要自定义函数来解决;

用途

去除空格有什么用呢?比如,微信中分享的描述,就需要去除内容中空格,换行等特殊字符,否则是不能分享的;

函数

function trimx($str) 
{ 
$str = trim($str);
$str = preg_replace("/\t/","",$str);
$str = preg_replace("/\r\n/","",$str); 
$str = preg_replace("/\r/","",$str); 
$str = preg_replace("/\n/","",$str); 
$str = preg_replace("/ /","",$str);
return trim($str);
}

说明

本函数功能就是去除换行,空格,跳格等


扫码二维码阅读