微信開發:發消息到朋友圈,微信第三方登錄,微信支付

1 需要到微信開發者網站,注冊應用程序id

2 到資源下載頁下載SDK文件

3 搭建開發環境

1 將SDK導入到工程中

2 添加庫SystemConfiguration.framework,libz.tbd,libsqlite3.0.tbd,libc++.tbd

3 在build setting,searchpaths中添加微信SDK的所在路徑

4 在Targets,info中URL type添加URLScheme為所注冊應用的ID,key為weixin

5 在需要使用的地方引入WXApi.h,并實現WXApiDelegate協議

4 向微信終端注冊應用程序的id,只有已經注冊過id的程序,微信終端才能響應

5 重寫AppDelegate的handleOpenURL和OpenURL

6 再用微信登錄和微信分享時需要判定是否安裝微信

[WXApi isWXAppInstalled] ?判定微信是否安裝

[WXApiisWXAppSupportApi]判定微信的openapi版本,其實就是看微信版本是否需要升級

7 判定完以后向微信發送請求

構建SendAuthResp需要傳入兩個參數:

具體可見微信登錄授權接口

scope:向微信請求那些權限

state:第三方程序本身用來標識其請求的唯一性,最后跳轉回第三方程序時,由微信終端回傳

SendAuthReq* req =[[SendAuthReq alloc]init];

req.scope="snsapi_userinfo"; //請求全部權限

req.state="wx_auth";

//第三方向微信終端發送一個SendAuthReq消息結構

[WXApi sendReq:req];

對微信支付需要有server端先生成預付單,然后再由客戶端發起支付請求[WXApisendReq:request];

8 程序要實現和微信交互的請求和回應,需要實現協議

WXApiDelegate

-(void) onReq:(BaseReq*)reqonReq

是微信終端向第三方程序發起請求,要求第三方程序響應。第三方程序響應完后必須調用sendRsp返回。在調用sendRsp返回時,會切回到微信終端程序界面。

如果僅僅用到微信的分享和登錄授權通常可以不實現或實現為空

-(void) onResp:(BaseResp*)resp

如果第三方程序向微信發送了sendReq的請求,那么onResp會被回調。sendReq請求調用后,會切到微信終端程序界面。

這個方法是向微信發起授權登錄的請求,微信結果回調的方法

Resp可能的值有:SendAuthResp,PayResp,SendMessageToWXReq

SendAuthResp:

微信授權登錄成功,需要判定其state == " wx_auth" && resp.erroCode == WXSuccess ,判定為真,說明微信用戶允許授權第三方應用,微信會拉起應用或重定向到第三方網站,并且帶上授權臨時票據code參數;

在被用戶授權成功之后,通過code參數加上AppID和AppSecret

調用API向微信發起請求用戶的接口調用憑證access_token,如下

參數:APPID:所申請應用程序的appID

Secret :通過審核后獲得的密碼

code:(SendAuthResp*)resp).code

type:"authorization_code"

如果請求成功,微信會返回json數據,解析出"openid","access_token","expires_in"等參數以備后用

拿到access_token等參數之后,通常做法是把這些參數傳給server端,向server端發起用戶登錄的請求,根據server端返回的結果來判定用戶是否登錄成功

PayResp:

這個是微信終端返回給第三方關于支付結果的結構體,根據錯誤碼來判定支付是否成功(resp.errorCode == WXSUCCESS)支付成功(為了安全起見此時需要向server端驗證支付是否成功,通常需要傳入參數訂單id,支付類型等,由server端驗證支付結果,然后返回客戶端在做相應的處理)

SendMessageToWXReq

這個是向微信分享圖片,視頻,鏈接和文本信息,其中文本信息的分享不能和其他三個同時存在

同樣用resp.errorCode == WXSUCCESS來判定是否分享成功,然后在客戶端做相應的提示

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 注意:代碼自己動手寫,不要復制! GitHub 一、接入微信第三方登錄準備工作。 移動應用微信登錄是基于OAuth...
    大沖哥閱讀 15,177評論 0 7
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,556評論 25 708
  • 別告訴我世界不美好,請給我你的一顆善良的心,我帶你領略世界的風光。 有人說,你是一個怎樣的人,你眼里的世界就是什么...
    木下雨點閱讀 547評論 0 1
  • 杏兒黃了 麥子黃了 沉掂掂的希望 大哥笑了 兒媳婦快生了 二哥高興地收拾屋子 準備收藏麥子 三弟也笑了 外面的欠賬...
    胡長溪閱讀 277評論 0 0
  • 王小五和我 我不知道此刻在看這篇文章的朋友,你們有沒有一個交心的知己?她真心為你,在她心里,你是她的親人。你開心時...
    九蹬閱讀 430評論 2 1