微信三方登錄委刘、分享、支付集成

目前手頭的項(xiàng)目終于算是收尾了鹰椒,在項(xiàng)目進(jìn)行的過程中遇到的問題在接下來的時(shí)間里锡移,我會(huì)抽空整理出來,免得以后踩坑漆际,也是為了便于以后的開發(fā)工作淆珊。


這次就主要說一下微信三方登錄、分享和支付的集成工作

1.微信三方庫的集成

集成三方庫就不用多說了奸汇,主要就是手動(dòng)集成和使用pod導(dǎo)入施符。詳情可看微信開發(fā)者平臺官方文檔介紹

2.微信三方登錄的實(shí)現(xiàn)

微信三方庫成功加入到當(dāng)前項(xiàng)目中之后钞支,恭喜你已經(jīng)完成了一半的工作了。接下來我們來看微信三方登錄的實(shí)現(xiàn)操刀。先來一張微信官方的時(shí)序圖:


登錄授權(quán)時(shí)序圖

從圖中我們可以看出烁挟,實(shí)現(xiàn)微信登錄主要分為三大步驟(簡稱三步走),即:

  1. 第三方應(yīng)用(即自己的應(yīng)用)發(fā)起微信授權(quán)登錄請求骨坑,用戶允許授權(quán)后撼嗓,微信會(huì)重定向到自己的應(yīng)用,并且返回授權(quán)臨時(shí)票據(jù)code參數(shù)欢唾;
  2. 第三方應(yīng)用利用授權(quán)臨時(shí)票據(jù)code且警、AppID、AppSecret等來換取access_token(這個(gè)token是微信用戶三方授權(quán)登錄的token礁遣,別跟自己應(yīng)用的token搞混淆);
  3. 通過access_token調(diào)用接口斑芜,獲取用戶基本數(shù)據(jù)資源。

只要搞懂把握好這三步走戰(zhàn)略祟霍,勝利之門始終為你敞開杏头。
接下來詳細(xì)說說三步走戰(zhàn)略的具體內(nèi)容:

a. 請求code

要想得到授權(quán)臨時(shí)票據(jù),就需要自己的應(yīng)用想微信終端發(fā)送請求并拉起微信應(yīng)用進(jìn)行授權(quán)登錄沸呐,用戶確認(rèn)后醇王,微信將會(huì)重定向返回到自己的應(yīng)用,并返回code崭添。
iOS平臺授權(quán)登錄代碼示例:

  -(void)sendAuthRequest { 
    //構(gòu)造SendAuthReq結(jié)構(gòu)體 
    SendAuthReq* req =[[[SendAuthReq alloc ] init ] autorelease ];
    req.scope = @"snsapi_userinfo" ;
    req.state = @"123" ;
    //第三方向微信終端發(fā)送一個(gè)SendAuthReq消息結(jié)構(gòu)
    [WXApi sendReq:req]; 
  }
參數(shù)說明
返回參數(shù)說明
b. 獲取access_token

獲取到code之后寓娩,就開始三步走戰(zhàn)略的第二步了,獲取access_token:

  通過請求微信提供的url來請求獲取到access_token
  https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

很明顯的呼渣,這就是個(gè)GET請求棘伴,從url中?之后的就是請求所需要的參數(shù),分別是appid屁置、secret焊夸、code和grant_type,只需要替換=后面的即可缰犁。

參數(shù)說明
返回說明
返回參數(shù)詳情

至此淳地,我們的第二步戰(zhàn)略已經(jīng)結(jié)束

c. 獲取用戶基本信息

通過上面的第二步走方針,我們獲取到了access_token帅容,通過access_token可以換取用戶基本信息(用戶昵稱颇象、性別、省并徘、市遣钳、國家、頭像等信息)麦乞,跟第二步走很類似蕴茴,也是要請求 微信給出的一個(gè)url來請求獲取到數(shù)據(jù)劝评。

   同樣還是GET請求
  https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
參數(shù)說明
返回說明
返回參數(shù)詳情

到這里微信的授權(quán)登錄三步走流程已經(jīng)結(jié)束,通過三步走倦淀,我們也獲取到了access_token蒋畜、openid、unionid和其他基本信息撞叽,后續(xù)的登錄流程就要根據(jù)實(shí)際需求來了姻成。

--------我是后續(xù)補(bǔ)充的--------

在使用微信三方登錄的時(shí)候,往往要先判斷一下本機(jī)是否安裝了微信APP客戶端愿棋,在WXApi中也封裝了檢測是否安裝微信客戶端的方法(是個(gè)類方法)科展。

/*! @brief 檢查微信是否已被用戶安裝
 *
 * @return 微信已安裝返回YES,未安裝返回NO糠雨。
 */
+(BOOL) isWXAppInstalled;

直接使用[WXApi isWXAppInstalled]就可以判斷是否已經(jīng)安裝了微信客戶端
但是才睹,但是,但是:前提是你要把微信添加到白名單中甘邀,不然即便你的手機(jī)上安裝了微信客戶端琅攘,也同樣的返回的是NO,怎么添加白名單,簡單地說鹃答,就是在plist文件中添加如下代碼:

    <key>LSApplicationQueriesSchemes</key>
    <array>    
        <string>weixin</string>
    </array>

3.微信分享的實(shí)現(xiàn)

微信分享及收藏是指第三方App通過接入該功能乎澄,讓用戶可以從App分享文字、圖片测摔、音樂、視頻解恰、網(wǎng)頁至微信好友會(huì)話锋八、朋友圈或添加到微信收藏。

微信分享的最主要流程就是根據(jù)實(shí)際需求护盈,把要分享的DD封裝成特定類型的數(shù)據(jù)挟纱,然后發(fā)送調(diào)起微信分享即可。

  分享或收藏的目標(biāo)場景腐宋,通過修改scene場景值實(shí)現(xiàn)紊服。
  發(fā)送到聊天界面——WXSceneSession
  發(fā)送到朋友圈——WXSceneTimeline
  添加到微信收藏——WXSceneFavorite
文字類型分享示例
圖片類型分享示例
音樂類型分享示例
視頻類型分享示例
網(wǎng)頁類型分享示例

4.微信支付的實(shí)現(xiàn)

支付的最主要流程一般都是放在后臺服務(wù)器進(jìn)行的,在客戶端主要負(fù)責(zé)的任務(wù)就是在后臺統(tǒng)一下單后胸竞,根據(jù)返回的參數(shù)調(diào)起微信應(yīng)用進(jìn)行付款操作欺嗤,然后再通過后臺查詢實(shí)際支付結(jié)果(微信回調(diào)也有支付結(jié)果,不過最好是以后臺查詢?yōu)闇?zhǔn))卫枝。

字段名 變量名 類型 必填 示例值 描述
應(yīng)用ID appid String(32) wx8888888888888888 微信開放平臺審核通過的應(yīng)用APPID
商戶號 partnerid String(32) 1900000109 微信支付分配的商戶號
預(yù)支付交易會(huì)話ID prepayid String(32) WX1217752501201407033233368018 微信返回的支付交易會(huì)話ID
擴(kuò)展字段 package String(128) Sign=WXPay 暫填寫固定值Sign=WXPay
隨機(jī)字符串 noncestr String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 隨機(jī)字符串煎饼,不長于32位。推薦隨機(jī)數(shù)生成算法
時(shí)間戳 timestamp String(10) 1412000000 時(shí)間戳校赤,請見接口規(guī)則-參數(shù)規(guī)定
簽名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 簽名吆玖,詳見簽名生成算法
名稱 描述 解決方案
0 成功 展示成功頁面
-1 錯(cuò)誤 可能的原因:簽名錯(cuò)誤筒溃、未注冊APPID、項(xiàng)目設(shè)置APPID不正確沾乘、注冊的APPID與設(shè)置的不匹配怜奖、其他異常等。
-2 用戶取消 無需處理翅阵。發(fā)生場景:用戶不支付了烦周,點(diǎn)擊取消,返回APP怎顾。

返回結(jié)果

名稱 描述 解決方案
0 成功 展示成功頁面
-1 錯(cuò)誤 可能的原因:簽名錯(cuò)誤读慎、未注冊APPID、項(xiàng)目設(shè)置APPID不正確槐雾、注冊的APPID與設(shè)置的不匹配夭委、其他異常等。
-2 用戶取消 無需處理募强。發(fā)生場景:用戶不支付了株灸,點(diǎn)擊取消,返回APP擎值。

總結(jié)

與微信相關(guān)的三方登錄授權(quán)慌烧、微信支付、微信分享已經(jīng)全部說完鸠儿,但是還有一個(gè)很大的問題屹蚊,假設(shè)一個(gè)應(yīng)用中有很多地方都需要微信分享或者支付,很多頁面都將會(huì)寫入很多重復(fù)性的代碼进每,不利于后期維護(hù)和管理汹粤,并且微信SDK的回調(diào)是在appdelegate中,這樣就要使用通知等手段來及時(shí)的獲取到支付或分享結(jié)果田晚,如果這樣嘱兼,弊端很多。你們可以下載微信官方的demo,看看官方demo是怎么處理這些邏輯的贤徒,自己也可以參照(最簡單的方法就是把微信官方demo中的那個(gè)單例類拉到自己項(xiàng)目中用)demo用更好的方法來處理芹壕。
官方demo中的處理方法可以用下圖來簡單說明:

難看,勿噴
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末接奈,一起剝皮案震驚了整個(gè)濱河市踢涌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鲫趁,老刑警劉巖斯嚎,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡堡僻,警方通過查閱死者的電腦和手機(jī)糠惫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钉疫,“玉大人硼讽,你說我怎么就攤上這事∩螅” “怎么了固阁?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長城菊。 經(jīng)常有香客問我备燃,道長,這世上最難降的妖魔是什么凌唬? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任并齐,我火速辦了婚禮,結(jié)果婚禮上客税,老公的妹妹穿的比我還像新娘况褪。我一直安慰自己,他們只是感情好更耻,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布测垛。 她就那樣靜靜地躺著,像睡著了一般秧均。 火紅的嫁衣襯著肌膚如雪食侮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天熬北,我揣著相機(jī)與錄音疙描,去河邊找鬼。 笑死讶隐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的久又。 我是一名探鬼主播巫延,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼地消!你這毒婦竟也來了炉峰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤脉执,失蹤者是張志新(化名)和其女友劉穎疼阔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婆廊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膀斋。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屏积,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宾舅,到底是詐尸還是另有隱情统阿,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布筹我,位于F島的核電站扶平,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蔬蕊。R本人自食惡果不足惜结澄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望袁串。 院中可真熱鬧概而,春花似錦、人聲如沸囱修。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽破镰。三九已至餐曼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鲜漩,已是汗流浹背源譬。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孕似,地道東北人踩娘。 一個(gè)月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像喉祭,于是被迫代替她去往敵國和親养渴。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容