微信開發公眾平臺開發介面 http://mp.weixin.qq.com/wiki/home/index.html
線上除錯 http://www.fangbei.org/
防止微信的css,js快取 http://hudeyong926.iteye.com/blog/1259256
微信伺服器配置
wx.sample.php是官網下載的,檔案裡面的token和開放平臺的一樣,配置成功後,換成
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid(); //呼叫類的valid()方法執行介面驗證。
$wechatObj->responseMsg();//處理並回複使用者傳送過來的訊息,也是用的最多的一個函式,幾乎所有的功能都在這裡實現
QQ客服:註冊的廣點通,填了公司資質,要推廣的連結地址能解決閃跳
<a href="http://wpa.qq.com/msgrd?v=3&uin=123456789&site=qq&menu=yes">聯絡客服</a>
微信客服 :http://www.kuaishang.cn/open/
微信打電話程式碼發簡訊程式碼
<a class="c" href="tel:124567xxxx">點選通話</a>
#只需要替換tel後面的數字即可打電話把tel 換成 sms 就是發簡訊
判斷是否在微信瀏覽器開啟
/**
* 判斷是否為手持設別的函式
*
* @static
* @return boolean
*/
public static function isMobile()
{
$devices = array(
"operaMobi" => "Opera Mobi",
"android" => "android",
"blackberry" => "blackberry",
"iphone" => "(iphone|ipod)",
"opera" => "opera mini",
"palm" => "(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)",
"windows" => "windows ce; (iemobile|ppc|smartphone)",
"generic" => "(kindle|mobile|mmp|midp|o2|pda|pocket|psp|symbian|smartphone|treo|up.browser|up.link|vodafone|wap)"
);
if (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE']))
{
return true;
} elseif (isset($_SERVER['HTTP_ACCEPT']) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/vnd.wap.wml') > 0 || strpos($_SERVER['HTTP_ACCEPT'], 'application/vnd.wap.xhtml+xml') > 0))
{
return true;
} else {
if (isset($_SERVER['HTTP_USER_AGENT']))
{
foreach ($devices as $device => $regexp)
{
if (preg_match("/" . $regexp . "/i", $_SERVER['HTTP_USER_AGENT']))
{
return true;
}
}
}
}
return FALSE;
}
public static function isWechat(){
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (strpos($userAgent, 'MicroMessenger') !== false){
return true;
}
return false;
}
微信公眾號支付 支付授權目錄配置成目錄的方式http://www.test.com/index.php/wxpay/
//呼叫微信JS api 支付
function jsApiCall()
{
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
<?php echo $jsApiParameters; ?>,
function(res){
alert("code:"+res.err_code+"msg:"+res.err_desc+"enmsg:"+res.err_msg);
if(res.err_msg == "get_brand_wcpay_request:ok" ) { //支付成功會跳
location.href = '<?php echo $this->createUrl("member/index"); ?>';
}else{
//使用者遇到錯誤或者主動放棄
//if (res.err_msg == "get_brand_wcpay_request:cancel") {//您取消了支付
//if (res.err_msg == "get_brand_wcpay_request:fail") {//支付失敗
location.href = '<?php echo $this->createUrl("order/view",array("id"=>$order_id)); ?>';
}
}
);
}
public function NotifyProcess($data, &$msg)
{
if ($data['result_code'] == "SUCCESS" && $data['return_code'] == "SUCCESS") {
if ($data['attach'] == "pay") { //微信支付回撥
$this->payNotify($data, $msg);
}
if ($data['attach'] == "recharge") {//微信充值回撥
$this->rechargeNotify($data, $msg);
}
}
return parent::NotifyProcess($data, $msg);
}
微信支付-收貨地址共享 支付授權目錄配置成目錄的方式http://www.test.com/index.php/wxpay/address
需要注意的一點是微信5.0以下版本不支援微信支付功能。還有就是在支付url後面加上showwxpaytitle=1字串,會有“微信安全支付”的文字提示
//獲取共享地址
function editAddress()
{
WeixinJSBridge.invoke('editAddress', address_params, function(res){
if(res.err_msg == 'edit_address:ok'){
$.post("url",{
name:res.userName,
phone:res.telNumber,
address:address
},function(data){
isValid = true;
});
}
});
}
window.onload = function(){
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', editAddress, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', editAddress);
document.attachEvent('onWeixinJSBridgeReady', editAddress);
}
}else{
editAddress();
}
};
公眾號設定-》功能設定 設定業務域名後,在微信內訪問該域名下頁面時,不會被重新排版。使用者在該域名上進行輸入時,不出現下圖所示的安全提示。需要注意的一點是微信5.0以下版本不支援微信支付功能。還有就是在支付url後面加上showwxpaytitle=1字串,會有“微信安全支付”的文字提示
一個微信公眾號解決多個域名授權回撥https://github.com/dannyhu926/GetWeixinCode
如何獲取微信使用者基本資訊,據我所知目前有兩個方式:
在本文中,特別要注意的是有兩個不同的Access Token,他們產生的方式不一樣,一種是使用AppID和AppSecret獲取的access_token,一種是OAuth2.0授權中產生的access_token,分別稱為全域性Access Token和授權Access Token。
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
再使用全域性ACCESS_TOKEN獲取OpenID的詳細資訊(這種方式必須先關注公眾號才能正常使用)
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID
2.使用者關注以及回覆訊息,均可以獲得使用者的OpenID。
<xml>
<ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName>
<FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName>
<CreateTime>1372307736</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>
</xml>
“FromUserName”標籤中的內容即為該使用者的OpenID,MsgType關注訂閱事件subscribe,取消關注訂閱事件unsubscribe,掃碼事件scan
點選微信的自定義選單連結,獲取openid
{
"button": [
{
"type": "view",
"name": "授權獲取",
"url": "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx0738856156f7323c&redirect_uri=http://israel.sinaapp.com/oauth2/&response_type=code&scope=snsapi_base&state=1#wechat_redirect"
}
]
}
微信分享
<!-- 微信分享 -->
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript" src="__PUBLIC__/wechat/share.js"></script>
<script>
var _wxConfig = <?php echo ($wx_js_config); ?>;
var _share = {
tit: "qqqq來領取。",
img: "<?php echo WAP_DOMAIN;?>share.png",
con: "<?php echo ($share_text); ?>",
link: "<?php echo ($share_url); ?>",
pyq:{ //分享朋友圈回撥
success:function(){
//成功 success
$.ajax({
type: "POST",
url: "<?php echo U('ajaxShareCallback');?>",
dataType: "json",
success: function(data){
}
});
}
}
};
_share = _share || {};
$(document).wechatShare(_wxConfig, _share);
</script>
微信官方帶引數二維碼帶多個引數實現
$postData['action_name'] = 'QR_LIMIT_STR_SCENE';
$postData['action_info']['scene'] = ['scene_str' => $adminId . "_" . $type];
訊息模板內容換行
$data['first'] = array('value' => "尊敬的張三,您好。\r\n請您在確認認購資訊無誤後儘快安排打款。");
批量隱藏功能按鈕介面
wx.hideMenuItems({
menuList: [] // 要隱藏的選單項,只能隱藏“傳播類”和“保護類”按鈕,所有menu項見附錄3
});
#傳送給朋友: "menuItem:share:appMessage"
#分享到朋友圈: "menuItem:share:timeline"
隱藏所有非基礎按鈕介面
wx.hideAllNonBaseMenuItem();
個性化選單
CREATE TABLE `weixin_gxhmenu_group` (
`group_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`wx_gxh_menuid` int(11) NOT NULL COMMENT '個性化選單menuid',
`tag_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '使用者標籤的id,可通過使用者標籤管理介面獲取',
`sex` int(1) NOT NULL DEFAULT '0' COMMENT '性別:男(1)女(2),不填則不做匹配',
`client_type` varchar(30) NOT NULL DEFAULT '' COMMENT '客戶端版本,當前只具體到系統型號:IOS(1), Android(2),Others(3),不填則不做匹配',
`country` varchar(100) NOT NULL DEFAULT '' COMMENT '國家資訊,是使用者在微信中設定的地區',
`province` varchar(100) NOT NULL DEFAULT '' COMMENT '省份資訊,是使用者在微信中設定的地區',
`city` varchar(100) NOT NULL DEFAULT '' COMMENT '城市資訊,是使用者在微信中設定的地區,具體請參考地區資訊表',
`language` int(10) NOT NULL DEFAULT '0' COMMENT '語言資訊,是使用者在微信中設定的語言,具體請參考語言表: 1、簡體中文 "zh_CN" 2、繁體中文TW "zh_TW"',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序,後生成選單wx排最前',
PRIMARY KEY (`group_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
客服訊息介面:當使用者和公眾號產生特定動作的互動時(具體動作列表請見下方說明),微信將會把訊息資料推送給開發者,開發者可以在一段時間內(目前修改為48小時)呼叫客服介面,通過POST一個JSON資料包來傳送訊息給普通使用者。此介面主要用於客服等有人工訊息處理環節的功能,方便開發者為使用者提供更加優質的服務
永久素材
if (class_exists('\CURLFile')) {
$data['media'] = new \CURLFile("E:/image/test.jpg", 'image/jpeg', 'test.jpg');
} else {
$data['media'] = ["@$uploadfile;filename=" . $upload_image->name];
}
$url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=" . $this->getToken() . "&type=image";
$this->vpost($url, $data);
臨時素材
$data['file'] = new \CURLFile("E:/image/test.jpg", 'image/jpeg', 'test.jpg');
圖片預覽
$('img').click(function () {
var baseUrl = 'http://' + location.host;
var curSrc = baseUrl + $(this).attr('src');
var imageList = [];
$('img').each(function () {
imageList.push(baseUrl + $(this).attr('src'));
})
photoRreview(curSrc, imageList);
});
function photoRreview(curSrc, imageList) {
//$('img').unbind('click');
wx.previewImage({
current: curSrc, // 當前顯示圖片的http連結
urls: imageList // 需要預覽的圖片http連結列表
});
}