iOS- 如何集成支付寶

//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄

//詳情 :鏈接 http://write.blog.csdn.net/postedit/74078904

現(xiàn)在不少app內(nèi)都集成了支付寶功能

使用支付寶進(jìn)行一個(gè)完整的支付功能,大致有以下步驟:

1>先與支付寶簽約,獲得商戶ID(partner)和賬號ID(seller)

(這個(gè)主要是公司的負(fù)責(zé))

2>下載相應(yīng)的公鑰私鑰文件(加密簽名用)

3>下載支付寶SDK(登錄網(wǎng)站:http://club.alipay.com/

里面提供了非常詳細(xì)的文檔、如何簽約、如何獲得公鑰私鑰、如何調(diào)用支付接口。

4>生成訂單信息

5>調(diào)用支付寶客戶端,由支付寶客戶端跟支付寶安全服務(wù)器打交道

6>支付完畢后返回支付結(jié)果給商戶客戶端和服務(wù)器

SDK里有集成支付寶功能的一個(gè)Demo> ?集成支付功能的具體操作方式,可以參考Demo

當(dāng)?shù)谝淮未蜷_Demo時(shí),可能會(huì)出現(xiàn)以下問題:

錯(cuò)誤原因很簡單,就是項(xiàng)目的部署版本設(shè)置太低了,從3.0改為4.3即可

要想集成支付功能,依賴以下文件夾的庫文件(把這3個(gè)添加到你的客戶端中)

調(diào)用支付接口可以參考AlixPayDemoViewController的下面方法

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

如何創(chuàng)建訂單 ( 訂單根據(jù)自己公司看是什么樣的)

如何簽名

如何調(diào)用支付接口

都在這個(gè)方法里面了

1//2//選中商品調(diào)用支付寶快捷支付3//4- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath5{6/*7*點(diǎn)擊獲取prodcut實(shí)例并初始化訂單信息8*/9Product *product =[_products objectAtIndex:indexPath.row];1011/*12*商戶的唯一的parnter和seller。13*本demo將parnter和seller信息存于(AlixPayDemo-Info.plist)中,外部商戶可以考慮存于服務(wù)端或本地其他地方。14*簽約后,支付寶會(huì)為每個(gè)商戶分配一個(gè)唯一的 parnter 和 seller。15*/16//如果partner和seller數(shù)據(jù)存于其他位置,請改寫下面兩行代碼17NSString *partner = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"Partner"];18NSString *seller = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"Seller"];1920//partner和seller獲取失敗,提示21if([partner length] ==0|| [seller length] ==0)22{23UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"24message:@"缺少partner或者seller。"25delegate:self26cancelButtonTitle:@"確定"27otherButtonTitles:nil];28[alert show];29[alert release];30return;31}3233/*34*生成訂單信息及簽名35*由于demo的局限性,本demo中的公私鑰存放在AlixPayDemo-Info.plist中,外部商戶可以存放在服務(wù)端或本地其他地方。36*/37//將商品信息賦予AlixPayOrder的成員變量38AlixPayOrder *order =[[AlixPayOrder alloc] init];39order.partner =partner;40order.seller =seller;41order.tradeNO = [self generateTradeNO];//訂單ID(由商家自行制定)42order.productName = product.subject;//商品標(biāo)題43order.productDescription = product.body;//商品描述44order.amount = [NSString stringWithFormat:@"%.2f",product.price];//商品價(jià)格45order.notifyURL =@"http://www.xxx.com";//回調(diào)URL4647//應(yīng)用注冊scheme,在AlixPayDemo-Info.plist定義URL types,用于快捷支付成功后重新喚起商戶應(yīng)用48NSString *appScheme =@"AlixPayDemo";4950//將商品信息拼接成字符串51NSString *orderSpec =[order description];52NSLog(@"orderSpec = %@",orderSpec);5354//獲取私鑰并將商戶信息簽名,外部商戶可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode55id signer = CreateRSADataSigner([[NSBundle mainBundle] objectForInfoDictionaryKey:@"RSA private key"]);56NSString *signedString =[signer signString:orderSpec];5758//將簽名成功字符串格式化為訂單字符串,請嚴(yán)格按照該格式59NSString *orderString =nil;60if(signedString !=nil) {61orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",62orderSpec, signedString,@"RSA"];6364//獲取快捷支付單例并調(diào)用快捷支付接口65AlixPay * alixpay =[AlixPay shared];66intret =[alixpay pay:orderString applicationScheme:appScheme];6768if(ret ==kSPErrorAlipayClientNotInstalled) {69UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"提示"70message:@"您還沒有安裝支付寶快捷支付,請先安裝。"71delegate:self72cancelButtonTitle:@"確定"73otherButtonTitles:nil];74[alertView setTag:123];75[alertView show];76[alertView release];77}78elseif(ret ==kSPErrorSignError) {79NSLog(@"簽名錯(cuò)誤!");80}8182}8384[tableView deselectRowAtIndexPath:indexPath animated:YES];85}

主要集成的關(guān)鍵就是下面幾步:

//.封裝訂單模型AlixPayOrder *order =[[AlixPayOrder alloc] init];//生成訂單描述NSString *orderSpec =[order description];//2.簽名id signer =CreateRSADataSigner(@“私鑰key”);//傳入訂單描述 進(jìn)行 簽名NSString *signedString =[signer signString:orderSpec];//3.生成訂單字符串NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",

orderSpec, signedString,@"RSA"];//4.調(diào)用支付接口AlixPay * alixpay =[AlixPay shared];//appScheme:商戶自己的協(xié)議頭intret = [alixpay pay:orderString applicationScheme:appScheme];

謝謝!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容