支付寶支付開(kāi)發(fā)IOS圖文教程案例
前言:繼上次《微信支付開(kāi)發(fā)IOS圖文教程案例》以來(lái),一直沒(méi)有太多時(shí)間,更新總結(jié)詳細(xì)支付這樣的長(zhǎng)篇大論,很抱歉。今天,推出支付寶支付的詳細(xì)流程。

1、開(kāi)始下載和查看支付寶支付的Demo。
我們直接進(jìn)入支付寶的支付平臺(tái)參考來(lái)進(jìn)行集成支付寶支付:

集成過(guò)程基本上就是按照上面的四個(gè)流程就可以完成集成iOS的支付寶SDK。
好,我們實(shí)際步驟來(lái)一邊流程:
點(diǎn)擊下載SDK和Demo

然后就會(huì)進(jìn)入下面的一頁(yè),網(wǎng)址這里順便給出:https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1

下載之后解壓:

然后運(yùn)行Demo之后:

我們會(huì)發(fā)現(xiàn),不管我們點(diǎn)擊那個(gè)Cell都會(huì)彈出這個(gè)的信息提示框。我們需要在源碼中找到彈出這個(gè)信息的地方,這里順便教大家一個(gè)快速找到目標(biāo)代碼的方法。
你看彈出框提示的是:"缺少partner或者seller或者私鑰",然后就這樣:

從上面圖中的148、149、150行代碼,我們可以看到,我們需要三個(gè)參數(shù)的值:partner、seller、privateKey。
那么這三個(gè)參數(shù)就需要商戶(hù)app申請(qǐng)的:

2、我們自己來(lái)實(shí)現(xiàn)支付寶支付功能:
2-1、添加SDK:

2-2、添加SDK依賴(lài)的類(lèi)庫(kù):

2-3、我們創(chuàng)建一個(gè)訂單對(duì)象: AlipayOrder

2-4、然后我們把支付寶Demo中的訂單對(duì)象的參數(shù)都拷貝進(jìn)去:

2-5、接著我們來(lái)處理支付的代碼:

2-6、下面我對(duì)拷貝的部分代碼適當(dāng)?shù)某槿『托薷模詈蠓旁谠诹艘粋€(gè)aliPay的方法中:
- (void)aliPay {
// 支付寶支付
/* 在調(diào)用支付寶支付之前,需要我們將相關(guān)訂單參數(shù)發(fā)送至我們的后臺(tái)服務(wù)器,由后臺(tái)服務(wù)器進(jìn)行簽名處理,
并返回客戶(hù)端所有相關(guān)參數(shù),客戶(hù)端直接使用參數(shù)調(diào)起支付寶支付。
*/
/*
*商戶(hù)的唯一的parnter和seller。
*簽約后,支付寶會(huì)為每個(gè)商戶(hù)分配一個(gè)唯一的 parnter 和 seller。
*/
/*============================================================================*/
/*=======================需要填寫(xiě)商戶(hù)app申請(qǐng)的===================================*/
/*============================================================================*/
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的成員變量
AlipayOrder *order = [[AlipayOrder alloc] init];
order.partner = partner;
order.seller = seller;
order.tradeNO = @"1234567890"; //訂單ID(由商家自行制定)
order.productName = @"測(cè)試商品標(biāo)題"; //商品標(biāo)題
order.productDescription = @"測(cè)試商品描述"; //商品描述
order.amount = @"0.01"; //商品價(jià)格
order.notifyURL = @"http://www.xxx.com"; //回調(diào)URL
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
NSString *appScheme = @"alisdkdemo";
//將商品信息拼接成字符串
NSString *orderSpec = [order description];
NSLog(@"orderSpec = %@",orderSpec);
//獲取私鑰并將商戶(hù)信息簽名,外部商戶(hù)可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode
// id<DataSigner> signer = CreateRSADataSigner(privateKey);
// 簽名值由服務(wù)器處理并返回客戶(hù)端
NSString *signedString = @"xxxxxxx_sign";
//將簽名成功字符串格式化為訂單字符串,請(qǐng)嚴(yán)格按照該格式
NSString *orderString = nil;
if (signedString != nil) {
orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
orderSpec, signedString, @"RSA"];
// 發(fā)起支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"支付結(jié)果 reslut = %@",resultDic);
}];
}
}
2-7、另外我們需要在應(yīng)用中注冊(cè)appScheme,這個(gè)Scheme可以從上面代碼中獲?。?/p>

2-8、添加appScheme

2-9、支付代碼處理之后,我們處理回調(diào)結(jié)果,我們需要在Appdelegate中添加支付寶頭文件#import <AlipaySDK/AlipaySDK.h>并添加處理回到結(jié)果的代理方法:

2-10、別忘了添加按鈕監(jiān)聽(tīng)和設(shè)置商戶(hù)ID的參數(shù)

補(bǔ)充:如果我們?cè)谑褂弥Ц秾氈Ц兜臅r(shí)候,如果我們手機(jī)安裝了支付寶app,就會(huì)調(diào)用支付寶進(jìn)行支付。
如果我們手機(jī)沒(méi)有安裝了支付寶app,就會(huì)調(diào)用H5界面進(jìn)行支付。
3、獲取商戶(hù)支付ID
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
ios的collection控件的自定義布局實(shí)現(xiàn)與設(shè)計(jì)
這篇文章主要介紹了mac、iOS端支持自定義布局的collection控件的實(shí)現(xiàn)與設(shè)計(jì),需要的朋友學(xué)習(xí)參考下吧。2017-12-12
iOS應(yīng)用開(kāi)發(fā)中UIScrollView滾動(dòng)視圖的基本用法總結(jié)
這篇文章主要介紹了iOS應(yīng)用開(kāi)發(fā)中UIScrollView滾動(dòng)視圖的基本用法總結(jié),作者還介紹了重寫(xiě)UIScrollView中的hitTest方法來(lái)解決長(zhǎng)按的事件問(wèn)題,需要的朋友可以參考下2016-02-02
iOS中UIScrollView嵌套UITableView的實(shí)踐教程
在UIScrollView嵌套UITableView的問(wèn)題相信大家都遇到過(guò),小編最近在工作中就遇到了這個(gè)問(wèn)題,所以這篇文章主要介紹了iOS中UIScrollView嵌套UITableView的相關(guān)資料,文中介紹的方法是通過(guò)自己的實(shí)踐所得來(lái)的,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-05-05
將多個(gè)字符串高亮顯示之TTTAttributedLabel
本文介紹了將多個(gè)字符串高亮顯示之TTTAttributedLabel。在此需要對(duì)每個(gè)字符串進(jìn)行匹配,可以研究下kmp和bm算法,在這里應(yīng)用了oc自帶的NSRegularExpression 來(lái)進(jìn)行正則表達(dá)式匹配,算是比較簡(jiǎn)單的方法,需要的朋友可以參考下2015-07-07
詳解iOS中position:fixed吸底時(shí)的滑動(dòng)出現(xiàn)抖動(dòng)的解決方案
這篇文章主要介紹了詳解iOS中position:fixed吸底時(shí)的滑動(dòng)出現(xiàn)抖動(dòng)的解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
iOS實(shí)現(xiàn)轉(zhuǎn)盤(pán)效果
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)轉(zhuǎn)盤(pán)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
iOS App使用設(shè)計(jì)模式中的模板方法模式開(kāi)發(fā)的示例
這篇文章主要介紹了iOS應(yīng)用使用設(shè)計(jì)模式中的模板方法模式開(kāi)發(fā)的示例,例子代碼為Objective-C語(yǔ)言,文中還與Java的相關(guān)實(shí)現(xiàn)進(jìn)行類(lèi)比,需要的朋友可以參考下2016-03-03
iOS block循環(huán)引用詳解及常見(jiàn)誤區(qū)
這篇文章主要介紹了iOS block循環(huán)引用詳解和應(yīng)用,常見(jiàn)誤區(qū)詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08

