月度归档 2016年9月19日

通过清心醉

开源一个微信公众号向关注用户下发消息的简单类库

$msg = new wxmsg();#实例化消息模板
$msg->setAccessToken($msg->getAccessToken()); #获取令牌并写入到类成员
$templatelist = $msg->getTemplateList();
if(count($templatelist)<=0){ #如果模板数量小于0,直接中止
return false;
}
for($i=0;$i<count($templatelist);$i++){
if($templatelist[$i][‘title’]==’订单支付成功’){ #如果消息模板中包含订单支付成功,下发通知信息
$openid=’ocbV9wGjFMbfGTUvh89Ro9J-ng7s’;
$productName=’测试的产品’;
$productDescription=’发送时间:’.date(‘Y-m-d H:i:s’);
$return_url = ‘http://www.qingxinzui.com/’;
$money = ‘123.45’;
$data = $msg->SendMsg($openid, $templatelist[$i][‘template_id’], $productName, $productDescription,$return_url,$money);
break;
}
}

 

然后是类的扩展::

<?php

/*******
*
* 本类库只提供小心模板下发,不进行模板配置
* 需要设置的模板库为:TM00015
*
* @author IPanYing
*
*/
class wxmsg{

private $appid;
private $appsecret;
private $access_token;

public function __construct(){
$this->appid = ”;
$this->appsecret = ”;
}

public function setAccessToken($access_token){
$this->access_token = $access_token;
}
public function getAccessToken(){
$url = “https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appid&secret=$this->appsecret”;
$AccessToken = $this->IPanYingGETCURL($url);
if (isset($AccessToken[‘access_token’]) && !empty($AccessToken[‘access_token’])){
return $AccessToken[‘access_token’];
} else {
return false;
}
}

public function getMsgModelName(){
$url = “https://api.weixin.qq.com/cgi-bin/template/get_industry?access_token=$this->access_token”;
return $this->IPanYingGETCURL($url);
}

public function getTemplateList(){
$url=”https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=$this->access_token”;
$list = $this->IPanYingGETCURL($url);
return $list[‘template_list’];
}

public function SendMsg($openid,$template_id,$producttext,$remarktext,$return_url,$money){
$return_url=’http://www.ipanying.com/’;
$data = array(
‘touser’=>”$openid”,
‘template_id’=>”$template_id”,
‘url’ =>”$return_url”,
‘topcolor’=>’#FF0000’,
‘data’=>array(
‘first’=>array(‘value’=>’尊敬的用户,你的支付订单信息如下:’,’color’=>’#173177′),
‘orderMoneySum’=>array(‘value’=>$money,’color’=>’#173177’),
‘orderProductName’=>array(‘value’=>$producttext,’color’=>’#173177’),
‘Remark’=>array(‘value’=>$remarktext,’color’=>’#173177’)
)
);
$url = “https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=$this->access_token”;
return $this->IPanYingPOSTCURL($url, $data);
}

private function IPanYingGETCURL($url){
$data = file_get_contents($url);
$data = (array)json_decode($data,true);
return $data;
}

private function IPanYingPOSTCURL($url, $data){
//$data = urldecode(json_encode($data));
$data = json_encode($data);
$post = array(
‘http’ =>array(
‘method’ => ‘POST’,
‘header’ => ‘Content-type: application/x-www-form-urlencoded’,
‘content’ => $data
)
);
$context = stream_context_create($post);
$data = file_get_contents($url, false, $context);
$data = (array)json_decode($data,true);
return $data;
}

}

?>

wxmsg-class

通过清心醉

Linux执行ASP.NET

由于作者一直都喜欢在LINUX系统下进行环境编译配置,为什么呢?肯定不用说,因为LINUX的开源,LANMP的开源组合,让我可以轻松的部署任意环境的WEB网站,包括APP的SERVER;

以前曾经在LINUX用APACHE跑过ASP,但非APSX这种编译类型的,好吧,说到编译,APP也算是了!

回到整题,LINUX执行ASP.NET程序,可以用XSP或者APACHE的扩展模块支持!

(尊重开源,使用开源,维护开源,从我做起!)

XSP

XSP是一个轻量级的Web服务器,它是用100%的C#代码写成的纯.Net应用程序。当然,它也是完全公开源代码的。XSP使用 System.Web命名空间下的类去完成Asp.Net的执行任务,它也可以运行在Windows上(使用Microsoft .Net Framework)。

相对的来说,XSP的安装和配制都比较简单,它的源码包下载地址是在:XSP web server 1.0

下载软件包后,执行:tar zxfv xsp-1.0.tar.gz来完成解压缩,会在当前目录下生成一个名称为xsp-1.0的目录,进入目录后,按照以下顺序进行编译:

./configuration
make
make install

完成编译后,进入server子目录下,你可以看见里面有一个名字叫xsp.exe的可执行文件,这个就是xsp的主程序。

接下来可以进行测试工作,在xsp-1.0的目录下有一个名字叫做test的子目录,下面有很多aspx文件,这些就是随包附带的测试页面,进入test目录后,执行:

mono /…xsp的目录…/server/xsp.exe

加入看见如下提示信息:
Adding applications ‘/:.’…
Registering application:
Host:          any
Port:          any
Virtual path:  /
Physical path: /
Listening on port: 8080
Listening on address: 0.0.0.0
Root directory: /
Hit Return to stop the server.
则表示 xsp已经在8080端口进行监听(默认是8080端口),如果想要关闭服务器的话直接敲回车键。
现在可以打开Web浏览器,直接输入:

http://你的服务器的地址:8080/

如果一切都正常的话,你可以看见测试首页。
XSP还有一些参数选项,输入–help的参数就可以看见这些选项的列表和说明。这里做一个简单的介绍:

–port
设置XSP服务器监听的端口号,默认是8080,如果XSP是你服务器上唯一的WEB服务器的话,你可以把它设置为80。

–adress
设置XSP服务器监听的IP地址,默认是0.0.0.0,表示在所有地址上接受请求。

–root
设置网站的根目录,默认是当前目录。

–appconfigfile
设置XSP的配置文件。配置文件是一个XML格式的文件,可以将这些参数选项进行“打包”配置。

–appconfigdir
设置XSP的配置文件目录。假如你在一个文件中写不完配置的话(几乎不可能吧),可以把配置信息写到多个文件中,xsp会读取这个目录下所有扩展名为.webapp的配置文件。

–applications
设置XSP的虚拟目录。一个XSP服务器可以设置多个虚拟目录,格式是:虚拟目录名:真实路径,如果有多个的话,中间用分号隔开。

–nonstop
敲回车键不关闭服务器。

–version
显示XSP的版本号。

–verbose
打印出一些附加信息,主要用来调试用。

Apache Mono module

前面介绍的XSP是一个轻量级的服务器,那么这个应该可以算做是一个重量级的了(其实也重不到哪里去,Apache在这里只是一个代理请求的功能,主要 处理其实都转到mod_mono去了),Apache Mono module是Apache服务器的一个外挂的模块,可以让Apache服务器支持Asp.Net应用程序。

mod_mono在Apache Mono module 1.0 处下载,下载后同样是:

./configuration
make
make install

编译完成后,就可以来配制apache服务器了,找到你的apache配置文件,一般是位于:/etc/httpd/conf/httpd.conf,使用vi编辑器打开这个文件,在文件里面加上:

LoadModule mono_module modules/libmod_mono.so
Alias /虚拟目录名 “真实路径”
MonoApplications “/虚拟目录名:真实路径”

SetHandler mono
假如你的mono和xsp没有安装在标准路径,还需要加上一些额外的参数:

MonoExecutablePath 设置mono的执行路径

MonoServerPath 设置mod-mono-server.exe文件的路径,注意这个文件是在XSP的软件包中的,所以这个要设置为XSP的路径。

一般设置了这些参数就可以了,其它的参数选项都设置为默认。

现在可以重启Apache服务器,找到你的apachectl命令的路径,一般是在/usr/sbin目录下,然后使用:

apachectl restart

这时你就可以打开浏览器输入服务器地址和虚拟目录来验证是否已经配置成功了。