寫(xiě)得不錯(cuò)很詳細(xì),轉(zhuǎn)一個(gè)蔼啦!其中base64報(bào)錯(cuò)的確實(shí)是一個(gè)坑榆纽,挺惡心,發(fā)現(xiàn)支付寶和微信官方文檔都是寫(xiě)得不怎么詳盡
在iOS中接入支付寶SDK進(jìn)行支付
首先捏肢,需要到支付寶的官網(wǎng)下載SDK ? https://app.alipay.com/market/productIndex.htm
選擇移動(dòng)支付
點(diǎn)擊進(jìn)去之后奈籽,找到技術(shù)集成面板,下載SDK
這個(gè)開(kāi)發(fā)包種有技術(shù)集成文檔鸵赫,Demo唠摹,需要用到的庫(kù)等文件,這個(gè)東西需要看一下奉瘤,關(guān)于錢的東西還是耐心一點(diǎn)比較好
其中即時(shí)到帳批量退款那一個(gè)文件夾我沒(méi)有看勾拉,應(yīng)該還用不到
商戶接入支付寶收銀臺(tái)界面展示標(biāo)準(zhǔn)這個(gè)文件夾需要看,里面有需要用到的logo文件
支付寶錢包支付接口開(kāi)發(fā)包是真正對(duì)開(kāi)發(fā)有用的東西,其中有兩個(gè)文檔盗温,如果沒(méi)有時(shí)間的話藕赞,就只看那個(gè)接入與使用規(guī)則文檔,其中第五條集成流程詳解
找到iOS的Demo將其解壓
雖然使用文檔上寫(xiě)的特別簡(jiǎn)單卖局,似乎只需要拖進(jìn)去兩個(gè)文件斧蜕,但是其實(shí)不是這樣的,需要拖進(jìn)去的文件有很多
libraries中需要存在的文件有
為什么支付寶自己的Demo怎么運(yùn)行怎么順暢砚偶,而我剛把類庫(kù)導(dǎo)進(jìn)去就報(bào)錯(cuò)呢批销,那是因?yàn)橹Ц秾氉约旱膒ch文件中寫(xiě)了兩個(gè)import
#import
#import
而且,特么的根本不通知一聲
所以:
可能遇到的報(bào)錯(cuò)問(wèn)題
1
Cannot find interface declaration for "NSObject', superclass of 'Base64'
解決辦法:暫時(shí)不知道內(nèi)部原因染坯,添加#import 之后錯(cuò)誤消除
2
解決辦法:暫時(shí)不知道內(nèi)部原因均芽,添加#import 之后錯(cuò)誤消除
3
解決辦法:
這個(gè)東西搞了一天我也是醉了,路徑原因
在Build Settings中搜索“search”關(guān)鍵字单鹿,找到search paths
在header search paths 中添加新的路徑
$(SRCROOT)/“openssl文件夾所在路徑”
在這個(gè)Demo中掀宋,路徑就應(yīng)該是$(SRCROOT)/AliPaySDKTest/CBAliPay
這樣error就消除了
4
沒(méi)有添加SystemConfiguration.framework
5 Undefined symbols for architecture x86_64:
"CreateRSADataSigner(NSString*)", referenced from:
-[CBAliPayViewController viewDidLoad] in CBAliPayViewController.o
這是因?yàn)槟愕恼{(diào)用支付寶控件的執(zhí)行文件使用的是oc與c++混編,這里需要改成使用oc編譯器來(lái)編譯
所以,要調(diào)用支付寶劲妙,最好單獨(dú)用一個(gè)文件來(lái)寫(xiě)湃鹊,不然可能會(huì)跳坑,比如說(shuō)我镣奋,把網(wǎng)銀的調(diào)用代碼和支付寶的調(diào)用代碼寫(xiě)到一起币呵,網(wǎng)銀需要oc混編,而支付寶不讓混編侨颈,最后還要再分開(kāi)單獨(dú)寫(xiě)余赢,不說(shuō)了,全都是淚
這就是遇到的全部問(wèn)題肛搬,一個(gè)問(wèn)題一個(gè)坑没佑,跳坑跳的好酸爽
然后就是在項(xiàng)目中添加代碼
/*============================================================================*//*=======================需要填寫(xiě)商戶app申請(qǐng)的===================================*//*============================================================================*///這里的三個(gè)參數(shù)是公司和支付寶簽約之后得到的,沒(méi)有這三個(gè)參數(shù)無(wú)法完成支付NSString *partner =@"";
NSString*seller =@"";
NSString*privateKey =@"";/*============================================================================*//*============================================================================*//*============================================================================*///partner和seller獲取失敗,提示if([partner length] ==0||[seller length]==0||[privateKey length]==0)
{
UIAlertView*alert = [[UIAlertView alloc] initWithTitle:@"提示"message:@"缺少partner或者seller或者私鑰温赔。"delegate:self
cancelButtonTitle:@"確定"otherButtonTitles:nil];
[alert show];return;
}/**生成訂單信息及簽名*///將商品信息賦予AlixPayOrder的成員變量Order *order =[[Order alloc] init];
order.partner=partner;
order.seller=seller;#warning這里需要填商品信息order.tradeNO=@"";//訂單ID(由商家自行制定)order.productName =@"測(cè)試商品";//商品標(biāo)題order.productDescription =@"這是一個(gè)測(cè)試商品";//商品描述order.amount =@"0.01";//商品價(jià)格order.notifyURL =@"";//回調(diào)URL? 這個(gè)URL是在支付之后蛤奢,支付寶通知后臺(tái)服務(wù)器,使數(shù)據(jù)同步更新陶贼,必須填啤贩,不然支付無(wú)法成功//下面的參數(shù)是固定的,不需要改變order.service =@"mobile.securitypay.pay";
order.paymentType=@"1";
order.inputCharset=@"utf-8";
order.itBPay=@"30m";
order.showUrl=@"m.alipay.com";//應(yīng)用注冊(cè)scheme,在AlixPayDemo-Info.plist定義URL types//如果不知道scheme是神馬東西拜秧,請(qǐng)自行百度NSString *appScheme =@"";//將商品信息拼接成字符串NSString *orderSpec =[order description];//獲取私鑰并將商戶信息簽名,外部商戶可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncodeid signer =CreateRSADataSigner(privateKey);
NSString*signedString =[signer signString:orderSpec];//將簽名成功字符串格式化為訂單字符串,請(qǐng)嚴(yán)格按照該格式NSString *orderString =nil;if(signedString !=nil) {
orderString= [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
orderSpec, signedString,@"RSA"];
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"使用支付寶的支付結(jié)果 %@",resultDic);
}];
}
支付寶到這里就完了痹屹,可喜可賀
轉(zhuǎn)載至 -- http://www.cnblogs.com/chebaodaren/p/4721344.html