ios支付寶app支付開發(fā)的簡單介紹

支付寶

支付寶開發(fā)步驟:

  1. 創(chuàng)建應(yīng)用
  2. 配置應(yīng)用
  3. 設(shè)計
  4. 開發(fā)
  5. 調(diào)試
  6. 上線

創(chuàng)建應(yīng)用

接入App支付能力度帮,需要在開放平臺創(chuàng)建一個應(yīng)用糕档,通過該應(yīng)用來接入各種能力劈榨。

配置應(yīng)用

配置應(yīng)用一般分為三個部分

  • 第一部分:給應(yīng)用添加相應(yīng)的功能
  • 第二部分:簽約
  • 第三部分:配置秘鑰

這些一般都是TeamLeader和運營總監(jiān)來做

設(shè)計

設(shè)計一般分為:

  • 架構(gòu)設(shè)計
    架構(gòu)設(shè)計一般采用支付寶推薦設(shè)計架構(gòu),附上一張圖片吧


    支付寶基本設(shè)計架構(gòu)
  • 安全設(shè)計
  • 采用HTTPS協(xié)議傳輸交易數(shù)據(jù),防止數(shù)據(jù)被截獲汹买,解密浩习。
  • 采用RSA非對稱秘鑰静暂,明確交易雙方的身份,保證交易主體的正確性和唯一性

開發(fā)

開發(fā)就先上圖了,讓大家了解一下支付的基本流程:

支付寶基本支付流程

了解基本流程后就要開始進行服務(wù)端和客戶端的開發(fā)集成了.
后臺的開發(fā)任務(wù)相比客戶端相對來說繁瑣一些,因為后臺要做訂單的訂單信息的拼接和簽名,將簽好名的訂單串給客戶端,這樣做是因為原則上不允許將簽名放在客戶端進行,不安全.
客戶端的任務(wù)是調(diào)起支付寶并監(jiān)聽回調(diào)結(jié)果,并展示給用戶支付結(jié)果.
具體的支付狀態(tài)一定要以服務(wù)端的回調(diào)為準.

ios客戶端配置
  • 導(dǎo)入支付寶SDK和bundle文件
AlipaySDK.bundle
AlipaySDK.framework
  • 集成第三方的第一個步驟導(dǎo)入依賴庫
支付寶依賴庫
  • 配置info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

<key>CFBundleURLTypes</key>
    <array>
             <!-- 支付寶 用來應(yīng)用之間跳轉(zhuǎn)的 -->
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>alipay</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>DovAlipayDemo</string>
            </array>
        </dict>
    </array>

Show me the code!
導(dǎo)入頭文件
    
#import <AlipaySDK/AlipaySDK.h>

/**
發(fā)起支付,調(diào)起支付寶應(yīng)用
orderString 從后天獲取的拼接好的簽過名的訂單串
schemes 用來進行應(yīng)用跳轉(zhuǎn)的schemes,支付成功或者失敗跳回應(yīng)用
callback 支付回調(diào)(但是我并沒有發(fā)現(xiàn)有什么軟用) 原因:【由于在跳轉(zhuǎn)支付寶客戶端支付的過程中瘦锹,商戶app在后臺很可能被系統(tǒng)kill了籍嘹,所以pay接口的callback就會失效】
*/
[[AlipaySDK defaultService] payOrder:orderString
                          fromScheme:@"DovAlipayDemo" //這個一定要和info.plist里面配置的一樣,并確保唯一性
                            callback:^(NSDictionary *resultDic) {
        //這里的回調(diào)是供網(wǎng)頁支付使用的
        if ([[resultDic objectCheckForKey:@"resultStatus"] isEqualToString:@"9000"]) {
            //支付成功
        }
        else {
            //支付失敗
        }
        
 }];

//支付接口的回調(diào)是不管用了,我們一下面的方式進行回調(diào)結(jié)果的監(jiān)聽

//ios 9.0 以下使用此方法進行回調(diào)監(jiān)聽
- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    //支付寶
    if ([url.host isEqualToString:@"safepay"]) {
       [self alipayCallbackWithUrl:url];
    }
    return YES;
}

//ios 9.0 以上使用此方法進行回調(diào)監(jiān)聽
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    //支付寶
    if ([url.host isEqualToString:@"safepay"]) {
       [self alipayCallbackWithUrl:url];
    }
    return YES;
    
}

- (void)alipayCallbackWithUrl:(NSURL *)url {

        //跳轉(zhuǎn)支付寶錢包進行支付,處理支付結(jié)果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            
            if ([[resultDic objectForKey:@"resultStatus"] integerValue] == 9000) {
               //代表你支付成功了 
            }
            else {
                //失敗了
            }
            
        }];
        
    }

調(diào)試

支付寶推出了一個沙盒測試,我們開發(fā)的時候基本沒有使用,因為測試的時候使用的小金額測試.

上線

商戶本身應(yīng)用上線時候弯院,也要把支付寶開放平臺的應(yīng)用上線.

擴展介紹

訂單信息簽名過程模擬(這個一定要放在服務(wù)端來做)

    //================== 生成支付訂單信息 =================//
    /*
     *生成訂單信息及簽名
     */
    //將商品信息賦予AlixPayOrder的成員變量
    Order *order = [[Order alloc] init];
    order.partner = alipayParterID;  //合作商ID (支付寶開發(fā)平臺里面)
    order.sellerID = alipaySellerID; //商家ID
    order.outTradeNO = @"78797348634858734673899"; //訂單ID(由商家自行制定)
    order.subject = @"籃球"; //商品標題
    order.body = @"室內(nèi)室外兩用"; //商品描述
    order.totalFee = [NSString stringWithFormat:@"%.2f",100.5]; //商品價格
    order.notifyURL =  @"http://www.baidu.com"; //回調(diào)URL

    //這些值是固定值不用修改
    order.service = @"mobile.securitypay.pay";
    order.paymentType = @"1";
    order.inputCharset = @"utf-8";
    order.itBPay = @"30m";
    order.showURL = @"m.alipay.com";


    //將商品信息拼接成字符串
    NSString *orderSpec = [order description];
    NSLog(@"orderSpec = %@",orderSpec);

    //================== 簽名 =================//
    //獲取私鑰并將商戶信息簽名,外部商戶可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode
    id<DataSigner> signer = CreateRSADataSigner(@"私鑰");
    NSString *signedString = [signer signString:orderSpec];

    //將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式
    NSString *orderString = nil;
    if (signedString != nil) {
        orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                       orderSpec, signedString, @"RSA"];

        [[AlipaySDK defaultService] payOrder:orderString fromScheme:self.scheme callback:^(NSDictionary *resultDic) {
            
        }];
    }

注意事項

  • 支付寶的簽名過程一定要在服務(wù)端完成
  • 支付寶的回調(diào)以服務(wù)端的為準,客戶端的只是做參考
  • 支付寶的發(fā)起支付方法附帶的回調(diào)是當你沒有安裝支付寶app的時候,使用網(wǎng)頁支付時候用到泪掀,安裝支付寶APP后需要使用url的回調(diào)
  • 如果是Xcode 7.0之后的版本听绳,需要添加libc++.tbd、libz.tbd异赫;如果是Xcode7.0之前的版本椅挣,需要添加libc++.dylib、libz.dylib

參考文獻

支付寶文檔中心

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末塔拳,一起剝皮案震驚了整個濱河市鼠证,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌靠抑,老刑警劉巖量九,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颂碧,居然都是意外死亡荠列,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門载城,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肌似,“玉大人,你說我怎么就攤上這事诉瓦〈ǘ樱” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵睬澡,是天一觀的道長固额。 經(jīng)常有香客問我,道長猴贰,這世上最難降的妖魔是什么对雪? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮米绕,結(jié)果婚禮上瑟捣,老公的妹妹穿的比我還像新娘馋艺。我一直安慰自己,他們只是感情好迈套,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布捐祠。 她就那樣靜靜地躺著,像睡著了一般桑李。 火紅的嫁衣襯著肌膚如雪踱蛀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天贵白,我揣著相機與錄音率拒,去河邊找鬼。 笑死禁荒,一個胖子當著我的面吹牛猬膨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呛伴,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼勃痴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了热康?” 一聲冷哼從身側(cè)響起沛申,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姐军,沒想到半個月后铁材,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡庶弃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年衫贬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歇攻。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡固惯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缴守,到底是詐尸還是另有隱情葬毫,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布屡穗,位于F島的核電站贴捡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏村砂。R本人自食惡果不足惜烂斋,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汛骂,春花似錦罕模、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蝶念,卻和暖如春抛腕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背媒殉。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工担敌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人廷蓉。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓柄错,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苦酱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容