支付寶支付集成步驟和流程(Swift2.2)

支付寶支付集成步驟和流程

1 簡述

  • 簡單說就三個步驟:

      1.生成訂單(可以在客戶端生成啦膜,也可以在服務(wù)器端生成)
      2.調(diào)用支付寶支付接口,發(fā)送訂單
      3.處理支付寶返回的支付結(jié)果
    

2.關(guān)于簽名校驗

  • 按理說,這些步驟完全夠了释移,但是有一個安全性問題旭愧,你肯定不希望你接收的支付結(jié)果被截獲修改,所以置逻,這就需要在生成訂單和處理支付結(jié)果的時候做一個安全性校驗
  • 生成訂單時對數(shù)據(jù)簽名推沸,收到支付結(jié)果時對數(shù)據(jù)進(jìn)行簽名校驗,以校驗數(shù)據(jù)是否被篡改過
  • 支付寶目前只支持RSA加密方式做簽名校驗券坞,RSA加密算法鬓催,除了可加解密之外,還可以做簽名校驗恨锚,簡單地說宇驾,RSA會生成一個私鑰和一個公鑰,私鑰你應(yīng)該獨(dú)自保管猴伶,公鑰你可以分發(fā)出去课舍。做簽名驗證時,你可以用私鑰對需要傳輸?shù)臄?shù)據(jù)做簽名加密他挎,生成一個簽名值筝尾,之后分發(fā)數(shù)據(jù),接收方通過公鑰對簽名值做校驗雇盖,如果一致則認(rèn)為數(shù)據(jù)無篡改
  • 具體到支付寶使用RSA做簽名驗證忿等,就是在生產(chǎn)訂單時,需要使用私鑰生成簽名值崔挖;在處理返回的支付結(jié)果時贸街,需要使用公鑰驗證返回結(jié)果是否被篡改了

3.配置工程

3.1 導(dǎo)入SDK到工程中

3.2 添加系統(tǒng)靜態(tài)依賴庫

    SystemConfiguration.framework
    CoreTelephony.framework
    QuartzCore.framework
    CoreText.framework
    CoreGraphics.framework
    UIKit.framework
    Foundation.framework
    CFNetwork.framework
    CoreMotion.framework
    libc++.tbd
    libz.tbd

3.3 修改SDK的路徑

target-build setting-Header Search Paths 

3.4 創(chuàng)建橋接文件

  • 預(yù)編譯頭文件

      #import <Foundation/Foundatio nh    
      #import <UIKit/UIK.it.h>
    
  • 支付寶頭文件

      支付寶頭文件
      #import "RSADataSigner.h"
      #import <AliPaySDK/AliPaySDK.h>
      #import "Order.h"
    

3.5 iOS9網(wǎng)絡(luò)適配

<key>NSAppTransportSecurity</key>
    <dict>    
        <key>NSAllowsArbitraryLoads</key><true/>
    </dict>

3.6 設(shè)置應(yīng)用Scheme

  • 設(shè)置Scheme,方便支付寶客戶端能夠?qū)⒅Ц督Y(jié)果返回狸相,盡量保證Scheme唯一

3.7 支付的實(shí)現(xiàn)

ViewController.swift

  • 實(shí)現(xiàn)支付需要用到的參數(shù)
支付參數(shù) 既定變量
商戶ID partner
賬戶ID sellerID
資金總額 totalFee
交易說明 subject
商品的具體描述 body
  • 創(chuàng)建訂單
// 創(chuàng)建訂單
let order = Order()
// 商戶id: 商戶在支付寶簽約時薛匪,支付寶為商戶分配的唯一標(biāo)識號(以2088開頭的16位純數(shù)字),訂單支付金額將打入該賬戶脓鹃,一個partner可以對應(yīng)多個seller_id逸尖。
order.sellerID = seller
//訂單號:商戶網(wǎng)站商品對應(yīng)的唯一訂單號,是隨機(jī)的(公司后臺生成的)
order.outTradeNO = "20160923XXXX"
//資金總額:該筆訂單的資金總額,單位為RMB(Yuan)。取值范圍為[0.01娇跟,100000000.00]岩齿,精確到小數(shù)點(diǎn)后兩位
order.totalFee = "0.01"
//交易說明:
order.subject = "交易說明"
//商品的具體描述
order.body = "買的一部諾基亞手機(jī)"
  • 驗證
// 獲取商品的所有屬性
let orderDes = order.description
 //使用私鑰進(jìn)行簽名驗證
let signer = CreateRSADataSigner(privateKey)       
//打包簽名信息,參數(shù)是商品描述
let singerStr = signer.signString(orderDes)


//拼接商品信息
/*
1.商品描述
2.簽名信息
3.簽名方式:RSA
*/
let orderStr = String(format: "%@&sign=\"%@\"&sign_type=\"%@\"", orderDes,singerStr,"RSA")
  • 發(fā)起支付
參數(shù) 含義
參數(shù)1 商品拼接信息
參數(shù)2 url scheme(回調(diào)的唯一標(biāo)示)
參數(shù)3 支付完成之后的回調(diào)
if singerStr != nil {
    AlipaySDK.defaultService().payOrder(orderStr, fromScheme: "AliPayDemo", callback: { (result) in
        print("支付結(jié)果:\(result)")
    })
}

  • 支付完成后的結(jié)果

      1.支付成功
      2.支付失敗 
          余額不足
          網(wǎng)絡(luò)問題
          用戶取消支付
    

在實(shí)際項目中,支付寶支付會跟公司自己的服務(wù)器交互
支付寶支付有客戶端支付和h5支付兩種方式苞俘。會自動判斷當(dāng)前設(shè)備上是否安裝有支付寶客戶端


AppDelegate.swift

  • 處理客戶端的回調(diào)
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    AlipaySDK.defaultService().processOrderWithPaymentResult(url) { (result) in
        print("回調(diào)結(jié)果:\(result)")
    }
    return true
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盹沈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吃谣,更是在濱河造成了極大的恐慌乞封,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岗憋,死亡現(xiàn)場離奇詭異肃晚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)仔戈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門关串,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杂穷,你說我怎么就攤上這事悍缠。” “怎么了耐量?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵飞蚓,是天一觀的道長。 經(jīng)常有香客問我廊蜒,道長趴拧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任山叮,我火速辦了婚禮著榴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屁倔。我一直安慰自己脑又,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布锐借。 她就那樣靜靜地躺著问麸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钞翔。 梳的紋絲不亂的頭發(fā)上严卖,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機(jī)與錄音布轿,去河邊找鬼哮笆。 笑死来颤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稠肘。 我是一名探鬼主播福铅,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼启具!你這毒婦竟也來了本讥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鲁冯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后色查,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薯演,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年秧了,在試婚紗的時候發(fā)現(xiàn)自己被綠了跨扮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡验毡,死狀恐怖衡创,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晶通,我是刑警寧澤璃氢,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站狮辽,受9級特大地震影響一也,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喉脖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一椰苟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧树叽,春花似錦舆蝴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至仇轻,卻和暖如春京痢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背篷店。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工祭椰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留臭家,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓方淤,卻偏偏與公主長得像钉赁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子携茂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

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