//获取access_token
function getWechatAccessToken(){
$wechatInfo = M('wechat_info')->select();
$wechatInfo = array_reduce($wechatInfo, create_function('$result, $v', '$result[$v["conf_name"]] = $v;return $result;'));
$expireTime = $wechatInfo['PUBLIC_WECHAT_ACCESSTOKEN_EXPIRES']['conf_value']; //前面不用管,是我数据库相应设置
if (time() < $expireTime){ //access_token未过期
return $wechatInfo['PUBLIC_WECHAT_ACCESSTOKEN']['conf_value'];
}else{ //access_token过期,重新获取
$baseUrl = C('WECHAT_PUBLIC_GET_ACCESS_TOKEN');
$url = str_replace("##APPSECRET##", $wechatInfo['PUBLIC_WECHAT_APPSECRET']['conf_value'], str_replace("##APPID##", $wechatInfo['PUBLIC_WECHAT_APPID']['conf_value'], $baseUrl));
$result = file_get_contents($url);
$result = json_decode($result, true);
if (array_key_exists('errorcode', $result)){ //失败重试一次
return false;
}else{
M('wechat_info')->where(array('conf_name' => 'PUBLIC_WECHAT_ACCESSTOKEN'))->save(array('conf_value' => $result['access_token']));
M('wechat_info')->where(array('conf_name' => 'PUBLIC_WECHAT_ACCESSTOKEN_EXPIRES'))->save(array('conf_value' => time()+$result['expires_in']-200));
return $result['access_token'];
}
}
}
//创建临时二维码
function getTemporaryQrcode($orderId){
$accessToken = getWechatAccessToken();
$url = str_replace("##TOKEN##", $accessToken, C('WECHAT_PUBLIC_GET_TEMPORARY_TICKET'));
$qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$orderId.'}}}';
$result = api_notice_increment($url, $qrcode);
$result = json_decode($result, true);
return urldecode($result['url']);
}
function api_notice_increment($url, $data){
$ch = curl_init();
$header = "Accept-Charset: utf-8";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
if (curl_errno($ch)) {
curl_close( $ch );
return $ch;
}else{
curl_close( $ch );
return $tmpInfo;
}
}
<xml><ToUserName><![CDATA[toUser]]></ToUserName> //开发者微信号 <FromUserName><![CDATA[FromUser]]></FromUserName> //发送者账号(openid) <CreateTime>123456789</CreateTime> //消息创建时间(整型) <MsgType><![CDATA[event]]></MsgType> //消息类型 event <Event><![CDATA[subscribe]]></Event> //事件类型(subscribe) <EventKey><![CDATA[qrscene_123123]]></EventKey> //事件KEY值,qrscene_为前缀,后面为二维码参数值 <Ticket><![CDATA[TICKET]]></Ticket> //二维码ticke值,可以用来换取二维码图片 </xml>
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> //开发者微信号 <FromUserName><![CDATA[FromUser]]></FromUserName> //发送者账号(openid) <CreateTime>123456789</CreateTime> //消息创建时间 <MsgType><![CDATA[event]]></MsgType> //消息类型event <Event><![CDATA[SCAN]]></Event> //事件类型 event <EventKey><![CDATA[SCENE_VALUE]]></EventKey> //事件key值,是一个32位无符号整数,即创建二维码时的二维码scene_id <Ticket><![CDATA[TICKET]]></Ticket> //二维码的ticke,可以用来换取二维码图片 </xml>
public function urlRedirect(){
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = (string)$postObj->FromUserName;
$EventKey = trim((string)$postObj->EventKey);
$keyArray = explode("_", $EventKey);
if (count($keyArray) == 1){ //已关注者扫描
$this->sendMessage($fromUsername, $EventKey);
}else{ //未关注者关注后推送事件
$this->sendMessage($fromUsername, $keyArray[1]);
}
}
//给用户发送图文消息,点击跳转到报价页面
public function sendMessage($openid,$orderId){
$url = str_replace('##TOKEN##', getWechatAccessToken(), C('WECHAT_SEND_MESSAGE'));
$redirectUrl = str_replace("##ORDERID##", $orderId, str_replace("##OPENID##", $openid, C('WECHAT_REDIRECT_URL_PRE')));
$orderInfo = M('order')->where(array('orderid' => $orderId))->field(array('totalMoney', 'savedMoney', 'roomarea'))->find();
$description = str_replace("##ROOMAREA##", intval($orderInfo['roomarea'] * 1.25), C('WECHAT_MESSAGE_BRIEF'));
$description = str_replace("##TOTALBUDGET##", $orderInfo['totalMoney'], $description);
$description = str_replace("##MARKETBUDGET##", $orderInfo['totalMoney']+$orderInfo['savedMoney'], $description);
$description = str_replace("##SAVEMONEY##", $orderInfo['savedMoney'], $description);
$dataStr = '{"touser":"' . $openid . '","msgtype":"news","news":{"articles":[{"title":"' . C('WECHAT_MESSAGE_TITLE') .
'","description":"' . $description . '","url":"' . $redirectUrl . '","picurl":"' . C('WECHAT_MESSAGE_PICURL') . '""}]}}';
api_notice_increment($url, $dataStr);
}
{
"touser":"OPENID",
"msgtype":"news",
"news":{
"articles": [
{
"title":"Happy Day",
"description":"Is Really A Happy Day",
"url":"URL",
"picurl":"PIC_URL"
},
{
"title":"Happy Day",
"description":"Is Really A Happy Day",
"url":"URL",
"picurl":"PIC_URL"
}
]
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有