public function payResult($params) {

         global $_GPC, $_W;

         $weid = $this->_weid;

         $order = pdo_fetch("SELECT id, status, hotelid, roomid FROM " . tablename('hotel2_order') . " WHERE id = {$params['tid']} AND weid = {$weid} LIMIT 1");

         pdo_update('hotel2_order', array('paystatus' => 1), array('id' => $params['tid']));
if ($params['from'] == 'return') {
$roomid = $order['roomid'];
$room = pdo_fetch("SELECT score FROM " . tablename('hotel2_room') . " WHERE id = {$roomid} AND weid = {$weid} LIMIT 1");
$score = intval($room['score']); if ($score) {
$from_user = $this->_from_user;
pdo_fetch("UPDATE " . tablename('hotel2_member') . " SET score = (score + " . $score . ") WHERE from_user = '".$from_user."' AND weid = ".$weid."");
pdo_fetch("UPDATE " . tablename('fans') . " SET credit1 = (credit1 + " . $score . ") WHERE from_user = '".$from_user."' AND weid = ".$weid."");
} /*
发送模板消息
*/ $template_id="mYQugPDOABxe1Y9HVVZy8avP9inHsQAJuL_TJsU49y4";
$url='http://' . $_SERVER['SERVER_NAME'] . '/'.$this->createMobileUrl('orderdetail',array("id"=>$order['id']));
$color='#FF0000'; $sql = "SELECT o.*, h.title, h.address, h.phone";
$sql .= " FROM " .tablename('hotel2_order') ." AS o";
$sql .= " LEFT JOIN " .tablename('hotel2') ." AS h ON o.hotelid = h.id";
$sql .= " WHERE 1 = 1";
$sql .= " AND o.id = :id";
$sql .= " AND o.weid = :weid";
$params = array();
$params[':weid'] = $weid;
$params[':id'] = $order['id'];
$sql .= " LIMIT 1";
$item = pdo_fetch($sql, $params); $paymethod="";
if($item['paytype']==1){
$paymethod="余额支付";
}elseif($item['paytype']==21){
$paymethod="微信支付";
}elseif($item['paytype']==22){
$paymethod="支付宝";
}else{
$paymethod="到店付款";
} $remark="房间数量:".$item["nums"]."间\n房型名称:".$item["style"]."\n订单总价:¥".$item["sum_price"]."\n酒店电话:".$item["phone"]."\n酒店地址:".$item["address"]."\n付款方式:".$paymethod."\n房间将保留至次日中午12点,不能取消修改。"; $data=array(
"first"=>array(
"value"=>"您好,您已成功预订".$item["title"]."!",
"color"=>"#173177"
),
"OrderID"=>array(
"value"=>$item["ordersn"],
"color"=>"#173177"
),
"PersonName"=>array(
"value"=>$item["name"],
"color"=>"#173177"
),
"CheckInDate"=>array(
"value"=>date('Y-m-d',$item['btime']),
"color"=>"#173177"
),
"CheckOutDate"=>array(
"value"=>date('Y-m-d',$item['etime']),
"color"=>"#173177"
),
"remark"=>array(
"value"=>$remark,
"color"=>"#173177"
)
);
$data=json_encode($data); $this->sendtempmsg($template_id,$url,$data,$color); //end 发送模板消息 message('支付成功!', "/".$this->createMobileUrl('orderdetail',array("id"=>$order['id'])), 'success');
}
} public function sendtempmsg($template_id, $url, $data, $topcolor) {
global $_W, $_GPC;
$from_user = $this->_from_user;
$tokens = $this->get_weixin_token();
//echo "token:".$tokens."..";
if (empty($tokens)) {
return;
}
$postarr = '{"touser":"' . $from_user . '","template_id":"' . $template_id . '","url":"' . $url . '","topcolor":"' . $topcolor . '","data":' . $data . '}'; $res = ihttp_post('https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' . $tokens, $postarr);
return true;
} public function get_weixin_token() {
global $_W, $_GPC;
$account = $_W['account'];
if (is_array($account['access_token']) && !empty($account['access_token']['token']) && !empty($account['access_token']['expire']) && $account['access_token']['expire'] > TIMESTAMP) {
return $account['access_token']['token'];
} else {
if (empty($account['weid'])) {
message('参数错误.');
}
$appid = $account['key'];
$secret = $account['secret']; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
$content = ihttp_get($url);
if (empty($content)) {
message('获取微信公众号授权失败, 请稍后重试!');
}
$token = @json_decode($content['content'], true);
if (empty($token) || !is_array($token)) {
message('获取微信公众号授权失败, 请稍后重试! 公众平台返回原始数据为: <br />' . $token);
}
if (empty($token['access_token']) || empty($token['expires_in'])) {
message('解析微信公众号授权失败, 请稍后重试!');
}
$record = array();
$record['token'] = $token['access_token'];
$record['expire'] = TIMESTAMP + $token['expires_in'];
$row = array();
$row['access_token'] = iserializer($record);
pdo_update('wechats', $row, array(
'weid' => $account['weid']
));
return $record['token'];
}
}

PHP发送微信模版消息的更多相关文章

  1. golang/beego 微信模版消息

    // GO的微信SDK我用的是这个:https://github.com/silenceper/wechat // 发送模版消息 // UserNickName,UserMobile是发起预约的人的昵 ...

  2. 【模版消息】C#推送微信模版消息(Senparc.Weixin.MP.dll)

    定义的模版内容: {{first.DATA}} 商品名称:{{product.DATA}} 商品价格:{{price.DATA}} 购买时间:{{time.DATA}} {{remark.DATA}} ...

  3. ThinkPHP3.2.3发送微信模板消息

    一.开通模板消息功能 所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限:需要选择公众账号服务所处的2个行业,每月可 ...

  4. PHP开发微信模版消息换行的问题

    微信是个坑!微信是个坑!微信是个坑!重要的时间说三遍 关键的地方是空白换行符到底是什么也不说,百度说是"\n":但是在发送消息的时候发现原样输出,发现json_encode对\n进 ...

  5. 应用jfinal发送微信模板消息的一个bug

    严格来讲,这不是一个bug,只是我们应用的方式不对.微信发送模板消息的方法是: HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessTokenStr ...

  6. php 实现发送微信模板消息(转)

    <?php namespace Org\Weixin; /** * Created by PhpStorm. * User: StandOpen * Date: 15-1-7 * Time: 9 ...

  7. 微信小程序中发送模版消息注意事项

    在微信小程序中发送模版消息 参考微信公众平台Api文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#模版消息管理 此参考地址 ...

  8. C# 微信公众平台开发(4)-- 模版消息

    微信公众平台开发 --发送模版消息 发送模版消息是微信服务号给某个用户发送模版消息,类似于APP的推送通知: 1.添加模版消息 在页面的左上 有一个添加功能插件的 按钮,如题 添加完成后,我们就可以在 ...

  9. python使用itchat发送微信消息提醒

    最近在学习一点python,先找了找有趣的应用,实际修改跑了一下提高兴趣程度. 找到itchat,它的简介是这样的: “itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. ...

随机推荐

  1. Visual Studio Team Foundation Server 2015(TFS 秘钥、序列号)

    Visual Studio Team Foundation Server 2015 序列号:PTBNK-HVGCM-HB2GW-MXWMH-T3BJQ

  2. 看linux连接进程占用的实时流量iftop netatop NetHogs

    因为新工厂的机器上面的业务混合部署非常严重,加上内网外网共用一个网卡(这个更不可思议),导致有时要定位一些进程流量的问题非常困难,所以最近花了点时间在网上搜集了一把  (aptitude search ...

  3. html dom的加载

    操作HTML DOM文档的一个难题是,你的JavaScript代码可能在DOM完全载入之前运行,这会导致你的代码产生一些问题.页面加载时浏览器内部操作的顺序大致是这样的: 1. HTML被解析. 2. ...

  4. Xcode7中添加3DTouch

    首先是插件SBShortcutMenuSimulator的安装 1.git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.g ...

  5. mouseover,mouseout,mouseenter,mouseleave的区别

    相信做前端开发的都听说过“冒泡型事件”吧,<JavaScript高级程序设计>第九章有详细的讲述,但是,在学习的时候一知半解,也没详细去理解,导致最近在工作中碰到了问题:有许多 li 标签 ...

  6. 我对c++对象内存布局的理解

    引言 结合网上的一些资料,通过自己的一番摸索,得出了一点个人见解.现在写下来,希望与各位同学共同探讨,共同进步. 以下所有代码均是在VS2012下测试. 一个普通的基类 1: #include < ...

  7. L001-老男孩教育-Python13期VIP视频-19节-pbb

    L001-老男孩教育-Python13期VIP视频-19节-pbb Windows上安装 Python3开发环境 下载:www.python.org >选择Downloads>All re ...

  8. JQuery的过滤选择器

    1.eg(num):查找索引num位置的元素,索引从0开始. 2.lt(num):查找索引小于num位置的元素,索引从0开始. 3.gt(num):查找索引大于num位置的元素,索引从0开始. 示例: ...

  9. jQuery阻止冒泡和HTML默认操作

    1:jQuery是一个快捷简便的JavaScript框架,说道框架可以直接理解为就是对原来底层的东西进行了封装使得开发者能够利用这个框架快速开发. 2:在当今的各个浏览器中都支持事件的冒泡,所谓的冒泡 ...

  10. 深入mongoDB(1)--mongod的线程模型与网络框架

    最近工作需要开始研究mongoDB,我准备从其源代码角度,对于mongod和mongos服务的架构.sharding策略. replicaset策略.数据同步容灾.索引等机制做一个本质性的了解.其代码 ...