iOS整合微信支付開發

2022-09-25 01:24:09 字數 2890 閱讀 5211

首先需要理清楚流程:

1、使用者使用app客戶端,選擇商品下單。

2、商戶客戶端(就是你做的app)將使用者的商品資料傳給商戶伺服器,請求生成支付訂單。

3、商戶後台呼叫統一下單api向微信的伺服器傳送請求,微信伺服器生成預付單,並生成乙個prepay_id返回給商戶後台。

4、商戶後台將這個prepay_id返回給商戶客戶端。

5、使用者點選確認支付,這時候商戶客戶端呼叫sdk開啟微信客戶端,進行微信支付。

6、微信客戶端向微信伺服器發起支付請求並返回支付結果(他們之間互動用的就是prepay_id這個引數,微信的伺服器要驗證微信客戶端傳過去的引數是否跟第三步中生成的那個id一致)。

7、使用者輸入支付密碼後,微信客戶端提交支付授權,跟微信伺服器互動,完成支付

8、微信伺服器給微信客戶端傳送支付結果提示,並非同步給商戶伺服器傳送支付結果通知。

9、商戶客戶端通過支付結果**介面查詢支付結果,並向後台檢查支付結果是否正確,後台返回支付結果。

10、商戶客戶端顯示支付結果,完成訂單,發貨。

雖然看起來有點多,但是理解起來並不複雜,跟我們平時手機上買東西是一樣的。我們客戶端需要做的就是

調起微信客戶端發起支付

顯示支付結果

整合過程

首先是要**sdk

微信sdk**

建議標頭檔案和示例都**出來看看。(吐槽下,官方的示例難看死了,看的眼暈!注釋都沒幾個。。。鄙視之)

匯入微信支付sdk庫

匯入上面那個ios標頭檔案和庫****出來的sdk包的就行啦,我這裡的是sdk1.6.2. 然後需要鏈結上依賴庫,在target —> buildphases —> link binary with libraries— 點選+號 -> 搜尋你需要的系統庫。

systemconfiguration.framew程式設計客棧ork

libz.tbd

libsqlite3.0.tbd

coretelephony.framework

quartzcore.framework

設定url scheme

在註冊微信平台app的時候,會給乙個唯一識別識別符號(appid),在app端開發步驟裡面說得很清楚了,需要填在url schemes這個地方,

url scheme

在appdelegate中註冊appid

如下:- (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions

處理微信通過url啟動時傳遞的資料

//前面的兩個方法被ios9棄用了,如果是xcode7.2網上的話會出現無法進入進入微信的onresp**方法,就是這個原因。本來我是不想寫著兩個舊方法的,但是一看官方的demo上寫的這兩個,我就也寫了。。。。

前的方法,為了適配低版本 保留

- (bool)application:(uiapplication *)application handleopenurl:(nsurl *)url

- (bool)application:(uiapplication *)application openurl:(nsurl *)url sourceapplication:(nsstring *)sourceapplication annotation:(id)annotation

後的方法

- (bool)application:(uiapplication *)app openurl:(nsurl *)url options:(nsdictionary *)options

//微信sdk自帶的方法,處理從微信客戶端完成操作後返回程式之後的**方法,顯示支付結果的

-(void) onresp:(baseresp*)resp

}}最重要的來了!!!

呼叫微信支付前,需要下單、簽名等操作,以便獲取微信支付所必要的引數。為了提高安全性,下單、簽名操作一般是在後台完成,在前台做的話**獲改資訊就不開心了。。。。。

需要的引數包括:appid、partid(商戶號)、prepayid(預支付訂單id)、noncestr(參與簽名的隨機字串)、timestamp(參與簽名的時間戳)、sign(簽名字串)這六個。

在點選支付的控制器中使程式設計客棧用核心**來調起微信客戶端支付,這些個引數都是後台傳給你的。 加上了注釋,應該很好理解的。

#pragma mark 微信支付方法

- (void)wxpay

這個json裡面的資料(上面的引數)就是後台需要傳給你的,至於怎麼來,也有後台的文件,讓他去看下就行啦~~~

--統一下單api

--調起程式設計客棧支付介面

到這裡,不出意外的話應該都能正常的支付了。流程最重要,理解了就知道怎麼做了,強烈建議需要做的朋友們先理理思路,不要急著下手。

ps:這篇文章中,簽名都是在後台做的,如果需要在你客戶端做,可以參考下這篇文章,和這篇文章,他們的簽名在客戶端做的,寫的也比較詳細了。

可能遇到的問題

1.如果支付完成後,一直留在微信,那就檢查下urltype中的scheme設定問題。

2.能夠開啟微信客戶端,但是開啟後只有中間乙個白色的 「確定按鈕」,點選後會回到客戶端上,如果是這樣,那應該是prepayid 引數的問題,過期了,或者不是真實的id。**沒有問題的。特別注意的是,微信要兩次簽名,兩次~~~~

3.如果app裡面使用了友盟或者sharesdk做分享,那就不用再匯入sdk了,否則會出現一些詭異的問題,例如無法調起手機微信客戶端、無法調起微信客戶端web頁面,調起了但是一閃而過。。。這都基本上都是因為分享的sdk裡面已經包括了微信的sdk。所以如果出現詭異的錯誤了看看是不是兩個衝突了!

4.微信支付的單位是分,被坑過的人都知道了。。。。哎。

如果在整合過程中遇到什麼問題,大家可以一起討論下

本文標題: ios整合微信支付開發

本文位址:

iOS開發整合微信支付

首先需要理清楚流程 商戶後台將這個prepay id返回給商戶客戶端。商戶客戶端通過支付結果 介面查詢支付結果,並向後台檢查支付結果是否正確,後台返回支付結果。商戶客戶端顯示支付結果,完成訂單,發貨。雖然看起來有點多,但是理解起來並不複雜,跟我們平時手機上買東西是一樣的。我們客戶端需要做的就是 顯示...

iOS開發整合微信支付

首先需要理清楚流程 商戶後台將這個prepay id返回給商戶客戶端。商戶客戶端通過支付結果 介面查詢支付結果,並向後台檢查支付結果是否正確,後台返回支付結果。商戶客戶端顯示支付結果,完成訂單,發貨。雖然看起來有點多,但是理解起來並不複雜,跟我們平時手機上買東西是一樣的。我們客戶端需要做的就是 顯示...

iOS整合微信支付

新增依賴 targets buildsettings build options enable bitcode 設定為no prefixheader內匯入標頭檔案 import import wxapi.h targets info url types新增一項,url scheme為你註冊的應用程式...