這一篇文章主要是介紹配置各種參數(shù)的一個demo挎扰,并且與服務(wù)器接通哥纫,實(shí)現(xiàn)支付功能。想要參考更多的微信支付細(xì)節(jié)需要參考前一篇文章仲锄。iOS微信支付步驟以及出現(xiàn)的問題總結(jié)(二)?
我會把大部分的代碼霞丧,通過圖片的形式呢岗,表現(xiàn)出來,只是沒有demo蛹尝,因?yàn)樯婕暗揭恍┟舾袇?shù)后豫。
一、下面我先說一下大概的流程:
1.首先你得搞清楚幾個參數(shù)的意義突那。這些參數(shù)除了第二篇文章的調(diào)起微信支付的參數(shù)外挫酿,還有統(tǒng)一下單里面必須要填的參數(shù)。"必填"->"是",這些參數(shù)也要準(zhǔn)備好愕难。上傳的參數(shù)的地址:https://api.mch.weixin.qq.com/pay/unifiedorder 早龟。(微信的統(tǒng)一下單的地址)
2.app端通過上傳一些微信的公共的“統(tǒng)一下單”要填的參數(shù)惫霸,返回一些數(shù)據(jù),得到支付的參數(shù)葱弟。微信統(tǒng)一下單要填寫的參數(shù)壹店。
3.通過得到的參數(shù),調(diào)起微信支付芝加,完成支付硅卢。
4.由于傳遞參數(shù)的 時候是xml格式,因此我們需要用NSXMLParser解析藏杖。
5.在上傳參數(shù)(統(tǒng)一下單里面的參數(shù))的過程中将塑,我們可以用微信自帶的在線簽名驗(yàn)證工具。驗(yàn)證工具?制市。通過NSLog打印出日志抬旺,然后對比弊予,把要app端要上傳的參數(shù)祥楣,填寫到驗(yàn)證工具里面。
注意:一個參數(shù) 的字母都不要少汉柒,參數(shù)的內(nèi)容里面的字母误褪,大小寫都不要錯。
6.需要做兩次簽名碾褂,第一次簽名是上傳request請求時兽间,拼接的字符串,創(chuàng)建一次sign正塌;第二次簽名是請求統(tǒng)一下單之后嘀略,主要是用返回的一個prepay_id的一個字符串,根據(jù)appid乓诽、noncestr帜羊、package、partnerid鸠天、prepayid讼育、timestamp這些字符串的內(nèi)容,重新創(chuàng)建一次sign稠集,第二次的sign是為了調(diào)起微信支付用的奶段。
校驗(yàn)工具配置參數(shù)如下:
二、我先總結(jié)微信支付過程中剥纷,出現(xiàn)的問題:
1.打印日志結(jié)果是:
分析:由于是上傳到統(tǒng)一下單的接口的參數(shù)痹籍,缺少參數(shù)。這個時候需要打開微信的統(tǒng)一下單的界面晦鞋,檢查自己上傳的參數(shù)缺少哪一個蹲缠。
2.打印日志結(jié)果:
這個的錯誤原因就是簽名錯誤刺洒,整理錯誤的信息 如下:
1>sign簽名是否大寫。
2>拼接的字符串是否按照ASCII碼吼砂,從小到大排列逆航。(建議用代碼實(shí)現(xiàn)排序,不要手動排序渔肩,不然很容易出錯的)
3>上傳的參數(shù)格式"key=value&"因俐,這其中的key與value是否有錯誤(我就是因?yàn)橐粋€參數(shù)的key少寫了幾個字母),包括是否少寫了字母周偎,寫錯了字母抹剩。
4>是否拼接了商戶自定義的密鑰,也就是在微信商戶平臺里面自定義的密鑰蓉坎。并且判斷是否與自己定義的密鑰是否相同澳眷。
三、微信支付demo示例:
1>這個demo是在前期的文章二中蛉艾,繼續(xù)添加文件钳踊。
2>工程的目錄如下圖介紹:
3>加密工具:
WXUtil.h ?文件
WXUtil.m文件
4>XMLParseManager.h 文件
XMLParseManager.m 文件
4>工程代碼:
上傳參數(shù),返回字符串的代碼:
參數(shù)上傳成功之后會出現(xiàn)以下日志:
調(diào)起微信支付的代碼:
做了將近一個月的微信支付終于大功告成了勿侯,非常感謝我的好盆友-LucioLee拓瞪,要是他不幫我,我也是不能這么快就搞定助琐,最后一步祭埂,才是微信支付的最困難的一步,非常感謝他對我的幫助兵钮。如果還有什么問題沒有解決蛆橡,就給我留言,有時間我會解釋的掘譬。