微信支付崔梗,我大部分參考的是在 code4app找的demo。感謝作者逻澳。www.code4app.com/ios/支付寶和微信支付兩種方式集成/568e1c0fb5ad2e73288b4c0f
有很多可能多余的步驟闸天。
參考微信官方文檔微信開放平臺
1 先下載 微信SDK。放在一個(gè)文件夾下斜做,然后拖進(jìn)工程里苞氮。在 Build Phases加上所需要的系統(tǒng)庫,SystemConfiguration.framework,libz.dylib,libsqlite3.0.dylib,libc++.dylib瓤逼。
2 在Xcode中笼吟,選擇你的工程設(shè)置項(xiàng),選中“TARGETS”一欄霸旗,在“info”標(biāo)簽欄的“URL type“添加“URL scheme”為你所注冊的應(yīng)用程序id(就是申請的 APP ID)
3 開始支付
1)在AppDlegate 里面注冊你的應(yīng)用贷帮。在你需要使 用微信終端API的文件中import WXApi.h 頭文件,并增加 WXApiDelegate 協(xié)議诱告。
2)重寫AppDelegate的handleOpenURL和openURL方法:
3)微信支付 然后按照 demo上來就可以調(diào)起微信客戶端支付了(下面多摘自demo)
①撵枢、統(tǒng)一下單
【微信支付】APP支付開發(fā)者文檔?->API列表->統(tǒng)一下單 按照文檔要求appid,mch_id精居,nonce_str诲侮,sign,body箱蟆,out_trade_no,total_fee刮便,spbill_create_ip空猜,notify_url,trade_type這十個(gè)參數(shù)是必須的恨旱。
其中appid辈毯,mch_id是微信給的;trade_type傳定值A(chǔ)PP搜贤;nonce_str谆沃,spbill_create_ip是直接在手機(jī)上獲取到的;body仪芒,out_trade_no唁影,total_fee這三個(gè)是從服務(wù)端上獲取的數(shù)據(jù)耕陷。sign根據(jù)以上鍵值對按照簽名規(guī)則得到的。
注意
完成之后要轉(zhuǎn)化成XML格式上傳到微信服務(wù)器据沈。
第一個(gè)比較坑的地方在這哟沫,如果直接使用AF的POST方式是不行的,總是會返回"XML格式錯(cuò)誤"锌介。必須使用NSMutableURLRequest添加method和body嗜诀,然后用AFHTTPRequestOperation進(jìn)行網(wǎng)絡(luò)請求才行。
然后接收到數(shù)據(jù)的返回孔祸。其中返回?cái)?shù)據(jù)中有用的只有prepayid隆敢,其他的要么本地就有,要么就是惡心你的值崔慧。
② 客戶端調(diào)起支付
【微信支付】APP支付開發(fā)者文檔?->API列表->調(diào)起支付接口 文檔要求appid拂蝎,partnerid,prepayid尊浪,package匣屡,noncestr,timestamp拇涤,sign這七個(gè)參數(shù)是必須的捣作,但是DEMO中appid根本沒有用到,所以其實(shí)只需要六個(gè)參數(shù)鹅士,這是第二個(gè)坑爹的地方H辍!掉盅! partnerid就是第一步的mch_id也拜,prepayid是上一步返回的最重要的數(shù)據(jù),package傳定值Sign=WXPay趾痘,noncestr就是上一步中的nonce_str慢哈,timestamp這個(gè)按照規(guī)則生成十位的。
sign是最最最坑的地方永票,不是上一步返回的那個(gè)sign卵贱,不是上一步返回的那個(gè)sign,不是上一步返回的那個(gè)sign侣集。他是根據(jù)上面的五個(gè)參數(shù)進(jìn)行簽名得出的值键俱。不然每次調(diào)用就只看見微信界面只有一個(gè)確定。
對于返回簽名錯(cuò)誤的世分,可以對照他們的簽名測試工具檢驗(yàn)编振。微信公眾平臺支付接口調(diào)試工具
4)支付結(jié)果
⑴(使用的不安全的 客戶端直接向微信服務(wù)器查詢,)在AppDelegate中
⑵接收通知的地方
最后臭埋,就是這些了踪央。