




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
【移動應用開發(fā)技術】微信開發(fā)帶參數(shù)二維碼的示例分析
1接入/blog/474529/201607/474529-20160731001630044-1124025958.png2帶參數(shù)二維碼的作用3具體開發(fā)過程3.1獲取access_token方法
:
GET
url
:/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET{"access_token":"ACCESS_TOKEN","expires_in":7200}
1
//獲取access_token
2
function
getWechatAccessToken(){
3
$wechatInfo
=
M('wechat_info')->select();
4
$wechatInfo
=
array_reduce($wechatInfo,
create_function('$result,
$v',
'$result[$v["conf_name"]]
=
$v;return
$result;'));
5
$expireTime
=
$wechatInfo['PUBLIC_WECHAT_ACCESSTOKEN_EXPIRES']['conf_value'];
//前面不用管,是我數(shù)據(jù)庫相應設置
6
7
if
(time()
<
$expireTime){
//access_token未過期
8
return
$wechatInfo['PUBLIC_WECHAT_ACCESSTOKEN']['conf_value'];
9
}else{
//access_token過期,重新獲取10
$baseUrl
=
C('WECHAT_PUBLIC_GET_ACCESS_TOKEN');11
$url
=
str_replace("##APPSECRET##",
$wechatInfo['PUBLIC_WECHAT_APPSECRET']['conf_value'],
str_replace("##APPID##",
$wechatInfo['PUBLIC_WECHAT_APPID']['conf_value'],
$baseUrl));12
$result
=
file_get_contents($url);13
$result
=
json_decode($result,
true);14
15
if
(array_key_exists('errorcode',
$result)){
//失敗重試一次16
return
false;17
}else{18
M('wechat_info')->where(array('conf_name'
=>
'PUBLIC_WECHAT_ACCESSTOKEN'))->save(array('conf_value'
=>
$result['access_token']));19
M('wechat_info')->where(array('conf_name'
=>
'PUBLIC_WECHAT_ACCESSTOKEN_EXPIRES'))->save(array('conf_value'
=>
time()+$result['expires_in']-200));20
return
$result['access_token'];21
}22
}23
}C('WECHAT_PUBLIC_GET_ACCESS_TOKEN')
=
/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET3.2創(chuàng)建臨時二維碼3.2.1獲取ticket
請求方式:
POST
接口:/cgi-bin/qrcode/create?access_token=TOKEN
POST數(shù)據(jù):
{"expire_seconds":
604800,
"action_name":
"QR_SCENE",
"action_info":
{"scene":
{"scene_id":
123}}}//創(chuàng)建臨時二維碼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;
}
}C('WECHAT_PUBLIC_GET_TEMPORARY_TICKET')
=
/cgi-bin/qrcode/create?access_token=##TOKEN##{"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==","expire_seconds":60,"url":"http:\/\/\/q\/kZgfwMTm72WWPkovabbI"}3.2.2獲取二維碼地址
請求方式:
GET
接口:/cgi-bin/showqrcode?ticket=TICKET3.3用戶掃描二維碼之后發(fā)生的事情3.3.1掃描后發(fā)生了什么用戶未關注時,進行關注后的事件推送<xml><ToUserName><![CDATA[toUser]]></ToUserName>//開發(fā)者微信號<FromUserName><![CDATA[FromUser]]></FromUserName>//發(fā)送者賬號(openid)<CreateTime>123456789</CreateTime>//消息創(chuàng)建時間(整型)<MsgType><![CDATA[event]]></MsgType>//消息類型
event<Event><![CDATA[subscribe]]></Event>//事件類型(subscribe)<EventKey><![CDATA[qrscene_123123]]></EventKey>//事件KEY值,qrscene_為前綴,后面為二維碼參數(shù)值<Ticket><![CDATA[TICKET]]></Ticket>//二維碼ticke值,可以用來換取二維碼圖片</xml>
<xml><ToUserName><![CDATA[toUser]]></ToUserName>//開發(fā)者微信號<FromUserName><![CDATA[FromUser]]></FromUserName>
//發(fā)送者賬號(openid)<CreateTime>123456789</CreateTime>//消息創(chuàng)建時間<MsgType><![CDATA[event]]></MsgType>
//消息類型event<Event><![CDATA[SCAN]]></Event>
//事件類型
event<EventKey><![CDATA[SCENE_VALUE]]></EventKey>
//事件key值,是一個32位無符號整數(shù),即創(chuàng)建二維碼時的二維碼scene_id<Ticket><![CDATA[TICKET]]></Ticket>
//二維碼的ticke,可以用來換取二維碼圖片</xml>3.3.2我們要做些什么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]);
}
}//給用戶發(fā)送圖文消息,點擊跳轉(zhuǎn)到報價頁面
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"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆江西省“山江湖”協(xié)作體高三聯(lián)考物理試題(聯(lián)考)試題含解析
- 階段性復習的保安證試題及答案
- 陜西省煤炭建設公司第一中學2025屆第二學期高三年級期末質(zhì)量調(diào)查語文試題含解析
- 通遼職業(yè)學院《商務應用文寫作》2023-2024學年第二學期期末試卷
- 2024-2025學年河北省石家莊市晉州一中實驗班第二學期高三期末調(diào)研考試生物試題含解析
- 科技助力保安證考試試題及答案
- 山東信息職業(yè)技術學院《生命科學前沿》2023-2024學年第一學期期末試卷
- 西北師范大學《運籌學A》2023-2024學年第二學期期末試卷
- 解析考點的保安證試題及答案
- 齊齊哈爾市克山縣2024-2025學年三年級數(shù)學第二學期期末檢測模擬試題含解析
- 3.2依法行使權(quán)利 課件 -2024-2025學年統(tǒng)編版道德與法治八年級下冊
- 2025年貴州遵義正安縣事業(yè)單位招聘工作人員歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- 日常采購維修合同范本
- 2024-2025年第二學期一年級語文教學進度表
- 企業(yè)員工職務犯罪預防
- 2025年貴州省高職單招醫(yī)學類職業(yè)技能測試題庫及答案(備考刷題)
- 5《水污染》教學設計-2023-2024學年科學六年級下冊冀人版
- 2025年安徽電氣工程職業(yè)技術學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- Polarion-ALM支持機載軟件研發(fā)生命周期管理和合規(guī)性認證最佳實踐
- 幼兒園開學教職工安全教育培訓
- 2025-2030年中國發(fā)酵豆粕行業(yè)運行態(tài)勢及投資前景規(guī)劃研究報告
評論
0/150
提交評論