iOS微信支付步驟以及出現(xiàn)的問(wèn)題總結(jié)(二)

前提是已經(jīng)創(chuàng)建完應(yīng)用了在微信的官網(wǎng)上。根據(jù)上一篇的微信獲得支付能力的步驟妹田,這一篇主要制作微信支付的demo芯勘。回顧上一篇內(nèi)容請(qǐng)看iOS微信支付步驟以及出現(xiàn)的問(wèn)題總結(jié)(一)

查看下一篇iOS微信支付步驟以及出現(xiàn)的問(wèn)題總結(jié)(三)?淳地。

往往回憶就是痛苦的因?yàn)橛洸蛔≡?jīng)的經(jīng)歷,還是喜歡簡(jiǎn)單粗暴帅容。

1.微信支付的demo與SDK颇象。網(wǎng)址

2.下載完之后,里面有好多的沒(méi)用的文件丰嘉,包括登錄夯到,分享嚷缭,等等饮亏。(看到這里好惡心,為啥不單獨(dú)做一個(gè)demo呢阅爽,哎,還能不能愉快的玩耍了)。

如下 的文件夾目錄的內(nèi)容:

demo目錄


3.創(chuàng)建一個(gè)wxDemo工程厌小。

4.查看微信的官方文檔贮缅。iOS微信支付文檔

5.因?yàn)楝F(xiàn)在 的工程是iOS9 ,所以需要配置網(wǎng)址與白名單百侧。

配置網(wǎng)址與白名單

6.改變bitcode設(shè)置為NO砰识。

改變bitcode為NO

7.添加URL Types,如下佣渴。

添加URL Schemes

8.添加微信SDK到wxDemo里面辫狼。

9.添加框架,用來(lái)安裝應(yīng)用辛润。iOS文檔鏈接 膨处。需要添加以下庫(kù):

SystemConfiguration.framework,

libz.dylib,

libsqlite3.0.dylib,

libc++.dylib

如下圖:

添加依賴庫(kù)

10.在Appdelegate.m里面添加如下代碼:

//注冊(cè)微信支付

[WXApi ? ? ? registerApp:@"wxXXXXXXXXXX"]; 此時(shí)運(yùn)行編譯,快捷鍵commd+b 運(yùn)行程序會(huì)出現(xiàn)以下錯(cuò)誤,以下是錯(cuò)誤的信息:

Undefined symbols for architecture x86_64:

"_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from:

objc-class-ref in libWeChatSDK.a(MTAHelper.o)

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

錯(cuò)誤的圖片:

錯(cuò)誤信息的展示

11.修改錯(cuò)誤操作真椿,由于缺少一個(gè)依賴庫(kù):添加一個(gè)CoreTelephony.frame 依賴庫(kù)鹃答,就可以解決了。

添加依賴庫(kù)

12.根據(jù)微信里面的demo突硝,添加需要的代碼测摔。以下是文件目錄的一些解釋:里面主要的方法就是支付的網(wǎng)絡(luò)請(qǐng)求以及調(diào)用微信客戶端的代碼。

文件目錄

13.添加一個(gè)按鈕的方法解恰,實(shí)現(xiàn)支付避咆。

說(shuō)明:支付目前來(lái)說(shuō)有兩種實(shí)現(xiàn)方式,一種是本地的app直接實(shí)現(xiàn)跳轉(zhuǎn)進(jìn)行支付修噪;另一種方式是通過(guò)后臺(tái)服務(wù)器進(jìn)行網(wǎng)絡(luò)請(qǐng)求查库。下面的這一種是通過(guò)服務(wù)器進(jìn)行支付的跳轉(zhuǎn)。

- (void)WXPay {

NSString*urlString=@"http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=ios";

//解析服務(wù)端返回json數(shù)據(jù)

NSError*error;

//加載一個(gè)NSURL對(duì)象

NSURLRequest*request = [NSURLRequestrequestWithURL:[NSURLURLWithString:urlString]];

//將請(qǐng)求的url數(shù)據(jù)放到NSData對(duì)象中

NSData*response = [NSURLConnectionsendSynchronousRequest:requestreturningResponse:nilerror:nil];

if(response !=nil) {

NSMutableDictionary*dict =NULL;

//IOS5自帶解析類NSJSONSerialization從response中解析出數(shù)據(jù)放到字典中

dict = [NSJSONSerializationJSONObjectWithData:responseoptions:NSJSONReadingMutableLeaveserror:&error];

NSLog(@"********url:%@",urlString);

if(dict !=nil){

NSMutableString*retcode = [dictobjectForKey:@"retcode"];

if(retcode.intValue==0){

NSMutableString*stamp= [dictobjectForKey:@"timestamp"];

//調(diào)起微信支付 ?

//注意:此處的key一定要與demo中的key的字符一致黄琼,一個(gè)也不能少樊销,一個(gè)也不能錯(cuò)。

PayReq* req= [[PayReqalloc]init];

req.partnerId= [dictobjectForKey:@"partnerid"];

req.prepayId= [dictobjectForKey:@"prepayid"];

req.nonceStr= [dictobjectForKey:@"noncestr"];

req.timeStamp= stamp.intValue;

req.package= [dictobjectForKey:@"package"];

req.sign= [dictobjectForKey:@"sign"];

[WXApisendReq:req];

//日志輸出

NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[dictobjectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign);

}else{

NSLog(@"%@",[dictobjectForKey:@"retmsg"]);

}

}else{

NSLog(@"服務(wù)器返回錯(cuò)誤脏款,未獲取json對(duì)象");

}

}else{

NSLog(@"服務(wù)器返回錯(cuò)誤");

}

}

14.在完成此處之后围苫,點(diǎn)擊支付按鈕會(huì)出現(xiàn)下面的問(wèn)題:

在跳轉(zhuǎn)到支付界面之后,僅僅會(huì)出現(xiàn)一個(gè)“確定”的白色按鈕撤师。如下圖:

支付出現(xiàn)問(wèn)題

通過(guò)查找信息剂府,是由于配置的參數(shù)問(wèn)題。因此我們不用服務(wù)器端進(jìn)行網(wǎng)絡(luò)請(qǐng)求直接用自己生成這些參數(shù)剃盾,然后就可以實(shí)現(xiàn)支付功能了腺占。

15.下面是獲取參數(shù)的解釋。

參數(shù)解釋:

partnerId:?商家向財(cái)付通申請(qǐng)的商家id(就是自己的id痒谴,也就是在你申請(qǐng)開發(fā)者資質(zhì)認(rèn)證之后衰伯,有一個(gè)商戶平臺(tái),這個(gè)平臺(tái)對(duì)應(yīng)的id积蔚,就是你自己的id意鲸。好像還沒(méi)有說(shuō)明白。)

獲取方式:

打開鏈接尽爆,直接將微信發(fā)送給你的郵件里面的內(nèi)容登陸商戶平臺(tái)怎顾,就找到了partnerid了。微信商戶平臺(tái)

郵件內(nèi)容

prepayId:?預(yù)支付訂單(需要向微信服務(wù)器提交申請(qǐng)后返回的一個(gè)支付交易ID)

獲取方式:

這個(gè)一般情況下是服務(wù)器端已經(jīng)申請(qǐng)好的漱贱,客戶端直接調(diào)用槐雾。

a、微信的服務(wù)端返回的參數(shù)的說(shuō)明:參數(shù)說(shuō)明饱亿。(看著很亂蚜退,可是呢闰靴,還是太亂)

b、還要生成一個(gè)簽名钻注,這個(gè)官方文檔也是寫了蚂且。簽名(雖然看著很簡(jiǎn)單,但是還是搞不定幅恋,坑太多杏死,哎,沒(méi)辦法就是這么坑捆交,多看幾遍就好了)

根據(jù)微信的接口淑翼,返回的xml的數(shù)據(jù)參數(shù)。將數(shù)據(jù)解析之后品追,就能獲得prepayid玄括。


nonceStr: 隨機(jī)串,防重發(fā)(隨機(jī)字符串肉瓦,不長(zhǎng)于32位)

獲取方式:

注意:#pragma mark-? 需要引入依賴庫(kù)libcommonCrypto.tbd并且引入頭文件#import <CommonCrypto/CommonGigest.h>

const ?char*str = [input ? UTF8String];

unsigned ? char ? result[CC_MD5_DIGEST_LENGTH];

CC_MD5(str,strlen(str),result);

NSMutableString* ?ret = [NSMutableString ?stringWithCapacity:CC_MD5_DIGEST_LENGTH*2];

for(int i = 0 ;i <CC_MD5_DIGEST_LENGTH;i++) {
?

[ret appendFormat:@"%02X",result[i]];

}

NSLog(@"%@",[ret? uppercaseString]);

注意:就是一個(gè)隨機(jī)數(shù)遭京。noncestr就是在第一次生成簽名的時(shí)候的那個(gè)隨機(jī)數(shù),不要再次生成泞莉。


timeStamp:時(shí)間戳哪雕,防重發(fā)(標(biāo)準(zhǔn)北京時(shí)間,時(shí)區(qū)為東八區(qū)鲫趁,自1970年1月1日 0點(diǎn)0分0秒以來(lái)的秒數(shù))

獲取方式:

NSString* timeString = [NSString ? ? ?stringWithFormat:@"%.0f"[[NSDate date]timeIntervalSince1970]];

由于:

@property(nonatomic,assign)UInt32 ?timeStamp;

所以在提交的時(shí)候需要轉(zhuǎn)換成對(duì)應(yīng)的格式斯嚎,UInt32 格式。


sign:商家根據(jù)微信開放平臺(tái)文檔對(duì)數(shù)據(jù)做的簽名挨厚,鏈接

這里的簽名不同于你第一次申請(qǐng)的prepayid的簽名堡僻,這里的簽名的參數(shù)是appid,prepayid,partnerid,timestamp,noncestr,package ? 這幾個(gè)排序后再拼接的key最后生成一個(gè)sign。


上面這些只是介紹了這些參數(shù)如何獲取幽崩,在下面一篇文章中苦始,開始仔細(xì)介紹寞钥,最后一步的支付流程慌申,也就是配置參數(shù)、服務(wù)器相關(guān)的一些配置理郑。


參考資源:

1.iOS--微信支付

2.iOS微信支付

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹄溉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子您炉,更是在濱河造成了極大的恐慌柒爵,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赚爵,死亡現(xiàn)場(chǎng)離奇詭異棉胀,居然都是意外死亡法瑟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門唁奢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)霎挟,“玉大人,你說(shuō)我怎么就攤上這事麻掸∷重玻” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵脊奋,是天一觀的道長(zhǎng)熬北。 經(jīng)常有香客問(wèn)我,道長(zhǎng)诚隙,這世上最難降的妖魔是什么讶隐? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮久又,結(jié)果婚禮上整份,老公的妹妹穿的比我還像新娘。我一直安慰自己籽孙,他們只是感情好烈评,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著犯建,像睡著了一般讲冠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上适瓦,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天竿开,我揣著相機(jī)與錄音,去河邊找鬼玻熙。 笑死否彩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嗦随。 我是一名探鬼主播列荔,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼枚尼!你這毒婦竟也來(lái)了贴浙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤署恍,失蹤者是張志新(化名)和其女友劉穎崎溃,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盯质,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袁串,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年概而,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囱修。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡到腥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蔚袍,到底是詐尸還是另有隱情乡范,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布啤咽,位于F島的核電站晋辆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宇整。R本人自食惡果不足惜瓶佳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鳞青。 院中可真熱鬧霸饲,春花似錦、人聲如沸臂拓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胶惰。三九已至傻工,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間孵滞,已是汗流浹背中捆。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坊饶,地道東北人泄伪。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像匿级,于是被迫代替她去往敵國(guó)和親蟋滴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 前言:本篇文章目的在于梳理知識(shí)根蟹,鞏固思想脓杉,學(xué)習(xí)總結(jié)。有什么好的建議简逮,都可以留言∧蜃互相促進(jìn)散庶!總觀蕉堰,微信支付,也沒(méi)心思...
    麥穗0615閱讀 10,014評(píng)論 8 70
  • 目前項(xiàng)目里有微信支付的需求悲龟,調(diào)研過(guò)一段時(shí)間后屋讶,發(fā)現(xiàn)其實(shí)并沒(méi)有想象中的那么困難。如果你只是想實(shí)現(xiàn)該功能须教,一個(gè)方法足以...
    劉光軍_MVP閱讀 1,447評(píng)論 0 7
  • 一直以來(lái)都挺喜歡畫畫的皿渗,但人又懶,遲遲不怎么動(dòng)手轻腺。因?yàn)闆](méi)有基礎(chǔ)乐疆,沒(méi)學(xué)過(guò),這其中多少帶著一點(diǎn)逃避的態(tài)度贬养,越逃避越不會(huì)...
    桐桐tongle閱讀 1,963評(píng)論 4 5
  • 最近遇到在Launcher中對(duì)于指定的app需使用使用指定的圖標(biāo)误算,實(shí)現(xiàn)類似于主題的功能仰美。要實(shí)現(xiàn)這樣的功能就要弄清楚...
    Exception_Cui閱讀 1,596評(píng)論 2 1
  • 前言 不管開發(fā)什么游戲,游戲存檔是個(gè)必不可少的功能儿礼,你可能需要保存玩家的一些信息咖杂,比如身上穿戴的裝備,玩家角色所處...
    Zui閱讀 7,036評(píng)論 6 33