第一點:
1、(1)調(diào)用支付寶支付接口時:如果沒有安裝手機(jī)客戶端抛丽,會進(jìn)入h5頁面進(jìn)行支付;支付完成的回調(diào)方法(安裝客戶端和或沒有安裝都會回到該block內(nèi)):
(2)既然支付安裝客戶端和或沒有安裝都會回到該block內(nèi)降传,有人會問那為什么要在AppDelegate中也設(shè)置回調(diào)方法羞芍,如下
既然要在這里設(shè)置支付回調(diào)的方法肯定是有原因的,那什么時候會回到該回調(diào)方法內(nèi)呢魂毁?答案就是當(dāng)跳轉(zhuǎn)到支付寶客戶端(??是客戶端)時玻佩,如果手欠退出或殺死了自己的app,那當(dāng)你支付完后會跳到AppDelegate中的block塊中漱牵。哈哈哈夺蛇,解決你部分疑惑沒疚漆!
(3)微信就沒有支付寶那么麻煩了酣胀,發(fā)起微信支付時:如果沒有安裝手機(jī)客戶端則不會進(jìn)行支付
第二點:
2、微信支付完成后回調(diào)的方法永遠(yuǎn)都是回到如下兩個方法(不管你有沒有殺死程序)
真正你需要在支付完成后處理的方法是如下
支付的一些總結(jié)
1、既然需要跳轉(zhuǎn)到其他應(yīng)用丸升,則需要設(shè)置“其他應(yīng)用的白名單”铆农,這是必須的
2、為了支付完后能成功跳回自己的app,需要設(shè)置URL Schemes墩剖,一般以在開放平臺成功申請應(yīng)用時給你的appid做為Schemes猴凹。如果你支付完成之后沒有成功跳回你的應(yīng)用程序,你可以看看你是否設(shè)置了正確的URL Schemes
3岭皂、在我看來郊霎,支付真正難在了后臺,我們畢竟是直接從后臺得到的簽名加密的訂單字符串爷绘,利用她直接發(fā)起支付而已
4书劝、我支付的時候遇到了一個很深的坑:支付寶支付后臺生成的的簽名加密的訂單字符串,數(shù)據(jù)請求我們都用的第三方AFNetWorking土至,(1)AFNetWorking的JSON解析默認(rèn)庫只支持text/json购对,application/json,text/javascript陶因,所以如果出現(xiàn)code=-1016錯誤則說明當(dāng)前的JSON解析模式是text/html骡苞,所以要加上這段代碼:
隨即又出現(xiàn)code = 3840,原因:json數(shù)據(jù)中的不規(guī)范造成的解決方法坑赡,json數(shù)據(jù)中也許有轉(zhuǎn)義字符的出現(xiàn)導(dǎo)致了這種情況(大概解決方法)把解析得到的 NSData數(shù)據(jù)解析成為字符串形式烙如,判斷數(shù)據(jù)中是否含有這些轉(zhuǎn)義字符,含有的話用空字符串替換掉毅否,再把字符串轉(zhuǎn)換為NSData類型的數(shù)據(jù)亚铁,然后進(jìn)行解析為JSon數(shù)據(jù)。確實是如此:我們后臺返回的簽名加密字符串含有“&”,在這里螟加,我們?yōu)榈木褪堑玫竭@個字符串徘溢,所以只需要把返回的NSData轉(zhuǎn)換成NSString,去掉特殊字符就行捆探。我們就需要拿到?jīng)]有json解析前的NSData數(shù)據(jù)然爆,一句代碼搞定:
哈哈哈哈,支付分享就到這里啦黍图,用簡書safari總是閃退曾雕,這是咋回事