產品中接入了微博/微信的第三方登錄分享功能、微信和支付寶的第三方支付功能,之前在開發過程中涉及到這些部分,於是抽空將接入過程梳理了一遍。 1.微博、微信、支付寶SDK相關接入設置 (1)微博SDK SDK下載 設置URL Scheme,用於從第三方應用或瀏覽器中啟動app 將SDK添加到工程中(支持 ...
產品中接入了微博/微信的第三方登錄分享功能、微信和支付寶的第三方支付功能,之前在開發過程中涉及到這些部分,於是抽空將接入過程梳理了一遍。
1.微博、微信、支付寶SDK相關接入設置
(1)微博SDK
設置URL Scheme,用於從第三方應用或瀏覽器中啟動app
將SDK添加到工程中(支持CocoaPods),app啟動時(didFinishLaunchingWithOptions)註冊appkey
重寫AppDelegate 的handleOpenURL和openURL方法,其它引用類庫等開發環境設置具體參考SDK中提供的《微博iOS平臺SDK 檔》即可。後續即可針對登錄分享場景調用SDK
(2)微信SDK
配置相關與微博SDK基本一致,設置URL Scheme、添加相關類庫、啟動時註冊appKey及重寫handleOpenURL和openURL方法。
需要註意的是如果沒有安裝微信客戶端,是無法像微博或支付寶那樣調起網頁進行操作的,所以需要使用SDK提供的方法“[WXApi isWXAppInstalled]”檢測微信是否安裝,若沒有安裝,則微信相關的操作無法進行,微信登錄或分享的標識需要隱藏。
(3)支付寶SDK
設置URL Scheme、添加相關類庫,設置開發環境,詳細參考DEMO及集成流程文檔。
需要特別註意的點:
①Header Search Paths的設置
②白名單設置
③私鑰生成
在支付寶支付sdk demo里提供了相關工具
2.微博登錄
(1)發起微博授權請求,切換到微博
(2)授權操作後返回客戶端進行相關處理
在weibo sdk的協議方法“- (void)didReceiveWeiboResponse:(WBBaseResponse *)response”中判斷操作行為及狀態,通過認證申請後即可去請求獲取用戶信息,獲得用戶信息後再進行登錄相關處理即可
3.微博分享
微博分享其實就是發微博操作,對應的是一個介面,不像微信分享那樣會跳轉過去,在微信里確認輸入信息後分享,所以在應用里需要構建一個頁面,將分享到微博的信息先展示預覽出來,供用戶修改文字等等,點擊確定再執行分享操作。根據分享對象構造相關參數調用介面即可
這裡需要註意三點:
①微博字數限製為140字,超過無法分享。
②分享操作前需要更新access_token,防止過期導致無法進行相關操作
響應方法didReceiveWeiboResponse中拿到申請認證返回結果,刷新存儲access_token等值即可
③分享時圖片參數可以是一個url或者WBImageObject,二選一即可,如果二者都有值,則url被忽略。
4.微信登錄
(1)請求授權臨時票據code參數
code在獲取access_token後失效
(2)通過code獲取acces_token
(3)根據上一步獲得的access_token及openId請求獲取用戶信息,實現相關業務邏輯
5.微信分享
微信分享有分享到朋友圈(WXSceneTimeline)、分享到對話(WXSceneSession)兩種,最常見的也就是圖文類型的網頁。
點擊分享的網頁,調起客戶端則在微信的協議方法“onReq”里進行處理,根據相應規則邏輯在應用內跳轉頁面等等。
6.微信支付
參考微信支付提供的demo進行接入,設計的是客戶端與後臺交互,由後臺來調用微信支付介面,主要流程如下:
(1)提交訂單數據
選擇商品並填寫相關信息後提交訂單,後臺返回訂單數據(後臺調用微信的統一下單api),後續支付時需要用到。
(2)調起微信準備支付
根據之前拿到的訂單數據(訂包括單id),向後臺發起微信支付的請求,拿到請求結果後調起微信客戶端準備支付
(3)支付完成返回客戶端進行相關處理
在“-(void) onResp:(BaseResp*)resp”方法判斷支付操作狀態,進行相應處理,例如支付成功後跳轉到訂單詳情頁給用戶展示訂單及支付信息等等。
7.支付寶支付
同樣,參考支付寶支付demo進行接入,客戶端與後臺交互,由後臺來調用支付寶支付的介面,主要步驟如下:
(1)提交訂單數據
選擇商品並填寫相關信息後提交訂單,後臺返回訂單數據。
(2)調起支付寶客戶端或網頁準備支付
根據之前拿到的訂單數據(訂包括單id),向後臺發起支付寶支付的請求,拿到請求結果後調起支付寶客戶端準備支付,若沒有安裝支付寶,則調用支付寶網頁進行支付。
(3)支付完成返回客戶端進行相關處理
在支付結果回調block中根據支付操作狀態進行相關業務邏輯處理
在AppDelagate的“openURL”及“handleOpenURL”中判斷支付寶支付操作,切回應用時在回調block中做相關業務邏輯處理