轉(zhuǎn)IOS集成到支付寶的步驟及問題
一胶征,在支付寶開放平臺(tái)下載支付寶SDK(https://openhome.alipay.com/platform/document.htm#down)
二稽莉,添加sdk文件到xcode
1,新建一個(gè)aliPaySDK文件夾皿伺,提取SDK包中以下文件到此文件夾里,在xcode中添加此文件夾谤民。
2.在xcode中慎框,點(diǎn)擊項(xiàng)目名辆影,選擇"target"->"Link Binary With Libraries"添加依賴庫徒像。
這個(gè)庫文件你要按照 支付寶接入文檔里邊的庫一個(gè)一個(gè)添加 ?不然會(huì)出錯(cuò)
按最新的 ? 看清楚再加 ?(下圖只是參考 ..... ?大家要注意)
3.編譯項(xiàng)目,會(huì)出現(xiàn)以下問題:
1)"Unknown type name ‘NSString‘ "或者"Unknown type name ‘NSData‘ "等不識(shí)別常見類的問題蛙讥。
這是因?yàn)槿鄙貴oundation類庫和UIKit類庫锯蛀,支付寶Demo中之所以沒有出現(xiàn)此錯(cuò)誤,是因?yàn)樵?pch文件中導(dǎo)入過這些類庫
解決辦法:只需要在出現(xiàn)錯(cuò)誤的文件中導(dǎo)入這些類庫即可
2)‘openssl/asn1.h‘ file not found
這是openssl文件夾頭文件鏈接問題键菱,如果openssl文件夾隨意拉進(jìn)項(xiàng)目中谬墙,即使添加頭文件鏈接,也可能解決不了此問題经备,
這也是問什么一開始就將所需要的文件放到一個(gè)新建文件夾中再添加到項(xiàng)目中的原因拭抬。
解決辦法:Targets->Build Settings->Header Search Path中添加1中建立的aliPaySDK文件夾的路徑(拖拽此文件夾至輸入框即可)
3)根據(jù)項(xiàng)目需求添加demo中ViewController中的代碼 編譯后可能會(huì)出下面錯(cuò)誤:
"_OBJC_CLASS_$_Product", referencedfrom:?objc-class-ref in ViewController.o
AlipaySDK的demo中將Product的定義寫在了ViewControler.h中所致
解決辦法:新建Product類,將ViewController中的代碼拷貝過去即可侵蒙。
三造虎,添加支付邏輯代碼,完成支付過程纷闺。
ViewController.m文件
1/*============================================================================*/2/*=======================需要填寫商戶app申請的===================================*/3/*============================================================================*/4//這里的三個(gè)參數(shù)是公司和支付寶簽約之后得到的算凿,沒有這三個(gè)參數(shù)無法完成支付5NSString*partner?=@"";6NSString*seller?=@"";7NSString*privateKey?=@"";8/*============================================================================*/9/*============================================================================*/10/*============================================================================*/1112//partner和seller獲取失敗,提示13if([partner?length]?==0||14[seller?length]?==0||15[privateKey?length]?==0)16{17UIAlertView*alert?=?[[UIAlertViewalloc]?initWithTitle:@"提示"18message:@"缺少partner或者seller或者私鑰份蝴。"19delegate:self20cancelButtonTitle:@"確定"21otherButtonTitles:nil];22[alert?show];23return;24}2526/*
27??????*生成訂單信息及簽名
28??????*/29//將商品信息賦予AlixPayOrder的成員變量30Order?*order?=?[[Order?alloc]?init];31order.partner?=?partner;32order.seller?=?seller;33#warning?這里需要填商品信息34order.tradeNO?=@"";//訂單ID(由商家自行制定)35order.productName?=@"測試商品";//商品標(biāo)題36order.productDescription?=@"這是一個(gè)測試商品";//商品描述37order.amount?=@"0.01";//商品價(jià)格38order.notifyURL?=@"";//回調(diào)URL???這個(gè)URL是在支付之后,支付寶通知后臺(tái)服務(wù)器氓轰,使數(shù)據(jù)同步更新婚夫,必須填,不然支付無法成功3940//下面的參數(shù)是固定的署鸡,不需要改變41order.service?=@"mobile.securitypay.pay";42order.paymentType?=@"1";43order.inputCharset?=@"utf-8";44order.itBPay?=@"30m";45order.showUrl?=@"m.alipay.com";4647//應(yīng)用注冊scheme,在AlixPayDemo-Info.plist定義URL?types48//如果不知道scheme是神馬東西案糙,請自行百度49NSString*appScheme?=@"";5051//將商品信息拼接成字符串52NSString*orderSpec?=?[order?description];5354//獲取私鑰并將商戶信息簽名,外部商戶可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode55id?signer?=?CreateRSADataSigner(privateKey);56NSString*signedString?=?[signer?signString:orderSpec];5758//將簽名成功字符串格式化為訂單字符串,請嚴(yán)格按照該格式59NSString*orderString?=nil;60if(signedString?!=nil)?{61orderString?=?[NSStringstringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",62orderSpec,?signedString,@"RSA"];636465[[AlipaySDK?defaultService]?payOrder:orderString?fromScheme:appScheme?callback:^(NSDictionary*resultDic)?{66NSLog(@"使用支付寶的支付結(jié)果?%@",resultDic);6768}];6970}
AppDelegate.m
1-?(BOOL)application:(UIApplication*)application2openURL:(NSURL*)url3sourceApplication:(NSString*)sourceApplication4annotation:(id)annotation?{56//跳轉(zhuǎn)支付寶錢包進(jìn)行支付,處理支付結(jié)果7[[AlipaySDK?defaultService]?processOrderWithPaymentResult:url?standbyCallback:^(NSDictionary*resultDic)?{8NSLog(@"result?=?%@",resultDic);9}];1011returnYES;12}
以上就是支付寶集成流程和可能遇到的問題靴庆。