【移動應用開發(fā)技術】微信開發(fā)帶參數(shù)二維碼的示例分析_第1頁
【移動應用開發(fā)技術】微信開發(fā)帶參數(shù)二維碼的示例分析_第2頁
【移動應用開發(fā)技術】微信開發(fā)帶參數(shù)二維碼的示例分析_第3頁
【移動應用開發(fā)技術】微信開發(fā)帶參數(shù)二維碼的示例分析_第4頁
【移動應用開發(fā)技術】微信開發(fā)帶參數(shù)二維碼的示例分析_第5頁
免費預覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論