支付寶配置-那些年我們踩過的坑

每次開發(fā)項目都會遇到接入支付寶支付的問題,而且每次都是去網上搜索一下資料然后結合著官方文檔去配置相關的內容。但是每次配置著實令人頭疼蔓同,特別是對于第一次接觸這個的同學,印象會更加深刻蹲诀。

下面就簡單的記錄一下接入流程:

首先要去支付寶填申請斑粱,可以得到一個parnter和一個seller。然后自己要在自己的電腦上生成一組RSA脯爪,把公鑰交給支付寶则北,私鑰自己留著。具體生成方法支付寶的SDK里面有寫痕慢,兩分鐘的事尚揣。

然后要從網上下載SDK。從這里下載地址掖举。

得到SDK后先運行下他給的iOS端的demo快骗。demo中APViewController.m里面找到下面這幾行代碼,填上你的parnter塔次、seller和privateKey方篮,然后運行看下能不能支付成功,如果可以的話励负,說明你的三個參數沒有問題藕溅,可以準備接入了


接著把SDK包中的幾個東西拖到你的項目中去:AlipaySDK.bundle,AlipaySDK.framework,libcrypto.a和libssl.a。

然后把demo中Util文件夾拖入你的項目中:

注意继榆!要選擇Create groups=肀怼!裕照!

注意攒发!要選擇Create groups!=稀惠猿!

注意!要選擇Create groups8杭洹E佳!

Util拖進去后應該是黃色的而不是藍色的U!V悍谩!


然后把demo中這幾個文件拖到你的項目中:Product.h,Product.m,APAuthV2Info.h,APAuthV2Info.m,Order.h,Order.m

現在你的項目里面應該包含這些東西(特別注意下Util文件夾和openssl文件夾的顏色):


在你要用到支付的地方引入以下頭文件


然后參考demo的支付寫了下面這個支付函數

- (void)Alipay{

/*

*點擊獲取prodcut實例并初始化訂單信息

*/

//? ? Product *product = [self.productList objectAtIndex:indexPath.row];

Product *product = [[Product alloc] init];

product.subject =@"1";

product.body =@"人在塔在";

product.price =0.01f+pow(10,-2);

/*

*商戶的唯一的parnter和seller董虱。

*簽約后扼鞋,支付寶會為每個商戶分配一個唯一的 parnter 和 seller申鱼。

*/

/*============================================================================*/

/*=======================需要填寫商戶app申請的===================================*/

/*============================================================================*/

NSString*partner =@"";

NSString*seller =@"";

NSString*privateKey = @“私鑰”;

/*============================================================================*/

/*============================================================================*/

/*============================================================================*/

//partner和seller獲取失敗,提示

if([partner length] ==0||

[seller length] ==0||

[privateKey length] ==0)

{

UIAlertView*alert = [[UIAlertViewalloc] initWithTitle:@"提示"

message:@"缺少partner或者seller或者私鑰。"

delegate:self

cancelButtonTitle:@"確定"

otherButtonTitles:nil];

[alert show];

}

/*

*生成訂單信息及簽名

*/

product.price =0.01f+pow(10,-2);//商品價格

//將商品信息賦予AlixPayOrder的成員變量

Order *order = [[Order alloc] init];

order.partner = partner;

order.seller = seller;

order.tradeNO = [selfgenerateTradeNO];//訂單ID(由商家自行制定)

order.productName = product.subject;//商品標題

order.productDescription = product.body;//商品描述

order.amount = [NSStringstringWithFormat:@"%.2f",product.price];//

order.notifyURL =@"http://www.xxx.com";//回調URL

order.service =@"mobile.securitypay.pay";

order.paymentType =@"1";

order.inputCharset =@"utf-8";

order.itBPay =@"30m";

order.showUrl =@"m.alipay.com";

//應用注冊scheme,在AlixPayDemo-Info.plist定義URL types

NSString*appScheme =@"alisdkdemo";

//將商品信息拼接成字符串

NSString*orderSpec = [order description];

NSLog(@"orderSpec = %@",orderSpec);

//獲取私鑰并將商戶信息簽名,外部商戶可以根據情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode

id signer = CreateRSADataSigner(privateKey);

NSString*signedString = [signer signString:orderSpec];

//將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式

NSString*orderString =nil;

if(signedString !=nil) {

orderString = [NSStringstringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",

orderSpec, signedString,@"RSA"];

//回調會調用這個函數

[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary*resultDic) {

NSLog(@"reslut = %@",resultDic);

}];

//? ? ? ? [tableView deselectRowAtIndexPath:indexPath animated:YES];

}

}

- (NSString*)generateTradeNO

{

staticintkNumber =15;

NSString*sourceStr =@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

NSMutableString*resultStr = [[NSMutableStringalloc] init];

srand(time(0));

for(inti =0; i < kNumber; i++)

{

unsignedindex = rand() % [sourceStr length];

NSString*oneStr = [sourceStr substringWithRange:NSMakeRange(index,1)];

[resultStr appendString:oneStr];

}

returnresultStr;

}

按照官方的說法云头,上面的這個函數就差不多算是把支付寶接入了捐友。但是你點擊command + R 會發(fā)現。溃槐。匣砖。

報了超多錯!這就是支付寶坑的地方昏滴,接下來我們來填坑猴鲫。

1 、Util/base64.h:63:21: Cannot find interface declaration for ‘NSObject’, superclass of ‘Base64’

在base64.h中加入#import 官方古老的demo加到了PCH中谣殊,所以不會報錯~結果他說都不說一聲7鞴病!蟹倾!坑啊有沒有O辉怠!鲜棠!

2肌厨、Util/openssl_wrapper.m:11:9: ‘rsa.h’ file not found

在Build setting中搜索search,找到Header Search Paths豁陆,添加$(PROJECT_DIR)/openssl和$(PROJECT_DIR)如圖:


當然上面的是自己寫的測試demo的路徑柑爸,具體的路徑要填寫你自己項目的路徑,格式如下: $(PROJECT_DIR)/文件夾名? ? ? ? (這里說一下盒音,直接點擊openssl表鳍,然后showinfinder,然后command + i? 查看路徑,把得到路徑的工程名字以后的部分加在文件夾名這OK了

3祥诽、“_CNCopyCurrentNetworkInfo”, referenced from: ? ? ?這類錯很多譬圣,大概有這些:


差不多就這些,當然也可能遠不止這些雄坪。具體情況厘熟,只能在自行百度了。反正以上問題差不多都是缺少依賴庫的問題

這種問題通過在General->Link Framework and Libraiies中添加以下framework解決:

libz.tbd

libc++.tbd

Security.framework

CoreMotion.Framework

CFNetwork.framework

CoreTelephony.framework

SystemConfiguration.framework


到這里你可以再次編譯運行一下試試维哈,不倒霉的話绳姨,應該是沒啥問題了。

最后阔挠。飘庄。。购撼。跪削。谴仙。。碾盐。狞甚。。廓旬。一句

好記性不如爛筆頭!谐腰!? ? ? ? ? 站在巨人的肩膀上看的更高更遠孕豹!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市十气,隨后出現的幾起案子励背,更是在濱河造成了極大的恐慌,老刑警劉巖砸西,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叶眉,死亡現場離奇詭異,居然都是意外死亡芹枷,警方通過查閱死者的電腦和手機衅疙,發(fā)現死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸳慈,“玉大人饱溢,你說我怎么就攤上這事∽哂螅” “怎么了绩郎?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長翁逞。 經常有香客問我肋杖,道長,這世上最難降的妖魔是什么挖函? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任状植,我火速辦了婚禮,結果婚禮上挪圾,老公的妹妹穿的比我還像新娘浅萧。我一直安慰自己,他們只是感情好哲思,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布洼畅。 她就那樣靜靜地躺著,像睡著了一般棚赔。 火紅的嫁衣襯著肌膚如雪帝簇。 梳的紋絲不亂的頭發(fā)上徘郭,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音丧肴,去河邊找鬼残揉。 笑死,一個胖子當著我的面吹牛芋浮,可吹牛的內容都是我干的抱环。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纸巷,長吁一口氣:“原來是場噩夢啊……” “哼镇草!你這毒婦竟也來了?” 一聲冷哼從身側響起瘤旨,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤梯啤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后存哲,有當地人在樹林里發(fā)現了一具尸體因宇,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年祟偷,在試婚紗的時候發(fā)現自己被綠了察滑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡肩袍,死狀恐怖杭棵,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情氛赐,我是刑警寧澤魂爪,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站艰管,受9級特大地震影響滓侍,放射性物質發(fā)生泄漏。R本人自食惡果不足惜牲芋,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一撩笆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缸浦,春花似錦夕冲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卜高,卻和暖如春弥姻,著一層夾襖步出監(jiān)牢的瞬間南片,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工庭敦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疼进,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓秧廉,卻偏偏與公主長得像伞广,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子疼电,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容

  • 前言 其實支付很簡單峡谊,下載官方的SDK茫虽,根據里面的開發(fā)者文檔和Demo,配置支付既们,不會可以問客服濒析。(畢竟掏錢了嘛)...
    煎餅果子鄭能量閱讀 1,744評論 0 6
  • iOS支付 iOS支付分為兩類,第三方支付和應用內支付(內購)啥纸。 第三方支付包括:支付寶支付号杏、微信支付、銀聯(lián)支付斯棒、...
    帥不過oneS閱讀 2,889評論 2 8
  • iOS支付 iOS支付分為兩類盾致,第三方支付和應用內支付(內購)。 第三方支付包括:支付寶支付荣暮、微信支付庭惜、銀聯(lián)支付、...
    sillen閱讀 1,375評論 0 1
  • iOS支付 iOS支付分為兩類穗酥,第三方支付和應用內支付(內購)护赊。 第三方支付包括:支付寶支付、微信支付砾跃、銀聯(lián)支付骏啰、...
    羊駝先生丶閱讀 907評論 0 0
  • 你想成為一個什么樣的人?在現實生活當中找到這樣一個人抽高,把她作為自己的榜樣判耕。讓你的目標具象化,目標感更強烈厨内。 在自己...
    houpanpan926閱讀 202評論 0 4