iOS-支付寶支付的實現(xiàn)+可能遇到的問題及解決辦法

關(guān)于支付寶支付, 首先了解一下, 支付流程:

1.用戶點擊支付
2.客戶端請求服務(wù)器用戶支付
3.服務(wù)器接收請求生成金額訂單等要給第三方支付的一切信息,并生成回調(diào)參數(shù)傳給客戶端
4.客戶端接收信息(一般會再讓用戶確認支付或者干脆購買后是生成訂單,然后才是付款)并將服務(wù)器給的信息分別傳入SDK需要的參數(shù)中,調(diào)用SDK的支付方法
5.由支付寶SDK向支付寶自己的服務(wù)器發(fā)出支付請求,支付寶的服務(wù)器接收支付請求處理成功后,給客戶端本身與公司的后臺都發(fā)送一條支付成功的消息,客戶端與后臺根據(jù)這條消息再做處理.

開發(fā)步驟
第一步: 仔細看開發(fā)文檔, 并 下載 SDK
開發(fā)文檔 很重要, 建議先把開發(fā)文檔仔仔細細看一遍, 可以避免很多坑, 特別是交互流程:

支付功能的交互流程

第二步: 集成 SDK
1 . 將 SDK 拖進 工程

06181012_0A7u.png

2 . 在Build Phases 選項卡的 Link Binary With Libraries 中,增加以下依賴:

添加SDK依賴的類庫

3 . 設(shè)置為URL Schemes

設(shè)置為URL Schemes

4 . 添加支付邏輯代碼选酗,完成支付過程

在支付頁面:

#import <AlipaySDK/AlipaySDK.h>
#import "Order.h"
#import "DataSigner.h"
//宏定義 PID, 收款賬戶 和 私鑰
//這里的三個參數(shù)是公司和支付寶簽約之后得到的,沒有這三個參數(shù)無法完成支付
//合作者身份(PID)
#define Partner @"合作者身份(PID)"
//商家支付寶賬號
#define Seller @"商家支付寶賬號"

#define KPrivate_key @"私鑰"
#pragma mark 支付寶支付
- (void)aLiPay {
    Order *order = [[Order alloc] init];
    //合作者身份(PID)
    order.partner = Partner;
    //商家支付寶賬號
    order.seller = Seller;
    //訂單ID
    order.tradeNO = @"訂單ID";
    //產(chǎn)品名稱
    order.productName = @"產(chǎn)品名稱";
    //商品描述
    order.productDescription = @"商品描述";
    //商品價格
    order.amount = self.orderValue;
    //回調(diào)URL
    order.notifyURL = @"回調(diào)URL";
    order.service = @"mobile.securitypay.pay";
    //支付類型:1(商品購買)
    order.paymentType = @"1";
    //編碼格式
    order.inputCharset = @"utf-8";
    //訂單超時時間
    order.itBPay = @"30m";
    
    NSString * appSchem = @"TaoYuanLe";
    //將商品信息拼接成字符串   該方法支付寶已經(jīng)封好
    NSString *orderSpec = [order description];
    
    //獲取私鑰并將商戶信息簽名,外部商戶可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode
    //使用私鑰進行簽名
    id<DataSigner>signer = CreateRSADataSigner(KPrivate_key);
    //調(diào)用簽名 簽名我的訂單描述
    NSString *sinedString = [signer signString:orderSpec];
    
    //將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式
    NSString *orderString = nil;
    
    if (sinedString != nil) {
        
        orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderSpec,sinedString,@"RSA"];
        // 發(fā)起支付
        [[AlipaySDK defaultService] payOrder:orderString fromScheme:appSchem callback:^(NSDictionary *resultDic) {
            
            //NSLog(@"支付結(jié)果result= %@",resultDic);
            
            if ([[resultDic objectForKey:@"resultStatus"] isEqualToString:@"9000"]) {
                //9000為支付成功
                
                //在這里可以對支付結(jié)果進行判斷, 也可以在```AppDelegate.m```回調(diào)方法中處理支付結(jié)果
            }
        }];
    }
}

同時在 AppDelegate.m 中,

#import <AlipaySDK/AlipaySDK.h>//支付寶支付
#pragma mark 跳轉(zhuǎn)支付寶, 微信 進行支付,處理支付結(jié)果
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    
    NSString *urlStr = [NSString stringWithFormat:@"%@",url];
    
    if ([url.host isEqualToString:@"safepay"]) {  //判斷支付寶回調(diào)
        //跳轉(zhuǎn)支付寶錢包進行支付畜普,處理支付結(jié)果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            //TY_Log(@"result = %@",resultDic);
            //處理支付結(jié)果
        }];
        
    }else if ([sourceApplication isEqualToString:@"com.tencent.xin"] && [urlStr containsString:@"pay"]){ //判斷微信回調(diào)
        TYLLog(@"跳轉(zhuǎn)微信支付處理支付方式結(jié)果");
        return [WXApi handleOpenURL:url delegate:self];
        
    }
    
    return YES;
}

出現(xiàn)的問題及解決辦法:

1)"Unknown type name ‘NSString‘ "或者"Unknown type name ‘NSData‘ "等不識別常見類的問題啥辨。
  


  這是因為缺少Foundation類庫和UIKit類庫是偷,支付寶Demo中之所以沒有出現(xiàn)此錯誤,是因為在.pch文件中導入過這些類庫
  解決辦法:只需要在出現(xiàn)錯誤的文件中導入這些類庫即可
  
技術(shù)分享

  2)‘openssl/asn1.h‘ file not found
  

  這是 openssl 文件夾頭文件鏈接問題缩搅,只是把 openssl 文件夾拉進項目中,也可能出現(xiàn)這個問題触幼。
  
  解決辦法:Targets->Build Settings->Header Search Path中添加1中建立的aliPaySDK文件夾的路徑(拖拽此文件夾至輸入框即可)
  

  3)根據(jù)項目需求添加demo中ViewController中的代碼 編譯后可能會出下面錯誤:
  "OBJC_CLASS$_Product", referenced from: objc-class-ref in ViewController.o
  

  AlipaySDK的demo中將Product的定義寫在了ViewControler.h中所致
  

  解決辦法:新建Product類硼瓣,將ViewController中的代碼拷貝過去即可。
  

結(jié)束
有微信支付需求的可以 點這里

如果這篇文章對您有些許幫助 請給我點個心吧置谦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末堂鲤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子媒峡,更是在濱河造成了極大的恐慌瘟栖,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谅阿,死亡現(xiàn)場離奇詭異半哟,居然都是意外死亡,警方通過查閱死者的電腦和手機签餐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門寓涨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氯檐,你說我怎么就攤上這事戒良。” “怎么了冠摄?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵糯崎,是天一觀的道長。 經(jīng)常有香客問我耗拓,道長拇颅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任乔询,我火速辦了婚禮樟插,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己黄锤,他們只是感情好搪缨,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般陈肛。 火紅的嫁衣襯著肌膚如雪懂傀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天痹届,我揣著相機與錄音,去河邊找鬼打月。 笑死队腐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的奏篙。 我是一名探鬼主播柴淘,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秘通!你這毒婦竟也來了为严?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤肺稀,失蹤者是張志新(化名)和其女友劉穎第股,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盹靴,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡炸茧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了稿静。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梭冠。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖改备,靈堂內(nèi)的尸體忽然破棺而出控漠,到底是詐尸還是另有隱情,我是刑警寧澤悬钳,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布盐捷,位于F島的核電站,受9級特大地震影響默勾,放射性物質(zhì)發(fā)生泄漏碉渡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一母剥、第九天 我趴在偏房一處隱蔽的房頂上張望滞诺。 院中可真熱鬧形导,春花似錦、人聲如沸习霹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淋叶。三九已至阎曹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煞檩,已是汗流浹背处嫌。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留斟湃,地道東北人锰霜。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像桐早,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厨剪,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

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

  • 因為近期項目中需要接入支付寶支付功能哄酝,自己也爬了很多的坑,所以做了一下這邊文章供大家學習參考祷膳,遠離爬坑陶衅,文章主要講...
    啓蘊閱讀 2,300評論 0 4
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件直晨、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,098評論 4 62
  • iOS支付 iOS支付分為兩類搀军,第三方支付和應(yīng)用內(nèi)支付(內(nèi)購)。 第三方支付包括:支付寶支付勇皇、微信支付罩句、銀聯(lián)支付、...
    帥不過oneS閱讀 2,885評論 2 8
  • 感冒大半個月了還沒好,躺在床上胡思亂想兄淫,手里一直在刷新手機頁面屯远。感覺自己好孤獨,手機里存有幾百個聯(lián)系方式卻沒有...
    大糊涂閱讀 606評論 2 3
  • 王小波在《愛你如同愛生命》說:“我把我整個靈魂都給你捕虽,連同它的怪癖慨丐,耍小脾氣,忽明忽暗泄私,一千八百種壞毛病房揭。它真討厭...
    哎呀哎呀咿閱讀 160評論 1 0