/**
* 微信消息推送
*/
if (!function_exists('send_wx_msg')) {
function send_wx_msg( $openid='' , $temp_id="k1" , $send_data ) {
$template_arr = [
"k1" => "M0Uxat8AadtLQgH0JoQhIrGf7HV8ee_7FEuptA71-R0", // 下单成功通知
"k2" => "pGtNRRve97unCNci0VfRBjsgmDKyd-HAfQUqegzFHSA", // 购买成功通知
"k3" => "qVZ2qSq7w6kjVYAMKNIouS1VDYaN2RIatvTnhMmKTyc", // 来款提醒
"k4" => "pBBrHF4VD3wwkKs83FNI6KTmTY31SpQcnZXsxNnBcPQ", // 退款申请通知
"k5" => "_nO7SFtd2azXMWnj8kVaTBl7Kcqvh91runIpagHp4Dg", // 发货通知
];
// 购买成功通知
$data = [
"touser" => $openid, //对方的openid
"template_id" => $template_arr[ $temp_id ], //模板id
// "url" => "pages/index/index", //跳转小程序页面
"url" => "", //跳转小程序页面
"topcolor" => "#FF0000",
"data" => $send_data
];
$access_token = getAccessToken();
$msgurl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $access_token; // 发送模板消息接口
$send_ret = CURLSend( $msgurl , "post" , $params=json_encode($data) );
return $send_ret;
// echo "<pre>";var_dump($send_ret);die;
}
}
//获取access_token,微信调用接口凭据(使用接口需要用到)
function getAccessToken() {
$config = Db::name('app_public')->where('id', 1)->find();
if ($config['wx_expires_in'] < time()) {
$appid = Config::get('site.wx_public_AppID');
$appsecret = Config::get('site.wx_public_AppSecret');
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;
$tmp = CURLSend($url, 'get');
$obj = json_decode($tmp);
// echo "<pre>";var_dump( $obj );die;
$dty = (time() + $obj->expires_in);
$data['wx_access_token'] = $obj->access_token;
$data['wx_expires_in'] = $dty;
Db::name('app_public')->where('id', 1)->update($data);
return $obj->access_token;
} else {
return $config['wx_access_token'];
}
}
/**
* 模拟浏览器发送
*/
function CURLSend($url, $method = 'get', $data = '') {
$ch = curl_init(); //初始化
$headers = array('Accept-Charset: utf-8');
curl_setopt($ch, CURLOPT_URL, $url); //指定请求的URL
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, strtoupper($method)); //提交方式
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //不验证SSL
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //不验证SSL
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //设置HTTP头字段的数组
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible;MSIE5.01;Windows NT 5.0)'); //头的字符串
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); //自动设置header中的Referer:信息
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //提交数值
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //是否输出到屏幕上,true不直接输出
$temp = curl_exec($ch); //执行并获取结果
curl_close($ch);
return $temp; //return 返回值
}
调用消息
$data = [
"first" => [
"value" => "您的订单已经成功发货",
"color" => '#f10909'
],
"keyword1" => [
"value" => "订单编号",
"color" => '#f10909'
],
"keyword2" => [
"value" => "快递公司",
"color" => '#f10909'
],
"keyword3" => [
"value" => "运单号码",
"color" => '#f10909'
],
"keyword4" => [
"value" => "订单金额",
"color" => '#f10909'
],
"keyword5" => [
"value" => "收货地址",
"color" => '#f10909'
],
"remark" => [
"value" => "感谢您的使用",
"color" => '#f10909'
]
];
$ret_msg = send_wx_msg( "o58Zsdfsdfsdfsdf" , "k5" , $data );