iOS開發(fā):Swift3一步一步教你集成PayPal并實(shí)現(xiàn)支付

水了這么多篇文章鸥滨,這篇保證不水肴盏。
  最近項(xiàng)目需要實(shí)現(xiàn)PayPal功能棚点,這里做個(gè)記錄昵时,為后來者提供肩膀繞坑

PayPal,:全球眾多用戶使用的國(guó)際貿(mào)易支付工具, 能夠輕松完成境外收付款捷雕! 一個(gè)賬戶全球通用, 成為PayPal商家, 就能在任何地方接受更多付款方式.

一.準(zhǔn)備工作

1.1 PayPal賬號(hào)申請(qǐng)

進(jìn)入官網(wǎng)點(diǎn)右上角login into dashboard就會(huì)出現(xiàn)登錄界面,有賬號(hào)直接登錄壹甥,沒有就注冊(cè)(注冊(cè)business賬號(hào)救巷,或者在官網(wǎng)首頁(yè)一直下滑會(huì)有一個(gè)Sign in 點(diǎn)擊去注冊(cè)會(huì)直接注冊(cè)business賬號(hào))。申請(qǐng)賬號(hào)就不贅述了句柠,注冊(cè)成功再次進(jìn)入官網(wǎng)login into dashboard登錄

注意申請(qǐng)后一定要驗(yàn)證郵箱浦译,不然后面不能創(chuàng)建app

1.2創(chuàng)建app

登錄成功點(diǎn)擊賬戶 ->dashboard ->My Apps & Credentials ->creat app


填寫app名稱,下面的一欄會(huì)自己生成

創(chuàng)建成功后會(huì)自動(dòng)跳轉(zhuǎn)到應(yīng)用信息界面溯职,sandboxlive分別對(duì)應(yīng)模擬交易環(huán)境和真實(shí)交易環(huán)境的信息(初始化SDK需要使用)

接下來點(diǎn)擊sandbox下的account就會(huì)看見多出了兩個(gè)賬戶精盅,第一個(gè)是測(cè)試環(huán)境下的收款賬戶,第二個(gè)是測(cè)試環(huán)境下的付款賬戶谜酒,點(diǎn)擊賬戶名會(huì)在下方出現(xiàn)Profile叹俏,點(diǎn)進(jìn)去會(huì)看到對(duì)應(yīng)賬戶的詳細(xì)信息,比如賬戶金額等


好了僻族,拿到這兩個(gè)賬戶我們的準(zhǔn)備工作就算完成了

二.集成SDk及實(shí)現(xiàn)支付

2.1 導(dǎo)入SDK

關(guān)于PayPal的導(dǎo)入我使用了cocoapods粘驰,pod 'PayPal-iOS-SDK', '~> 2.16.1',需要手動(dòng)集成的可以看 GitHub文檔

其實(shí)一直想寫一篇如何安裝cocoapods的文章述么,上次公司新買的Mac mini我重操了一遍cocoapods安裝蝌数,但是忘了截圖了,下次有機(jī)會(huì)一定補(bǔ)上

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

因?yàn)镾DK是用Objective-C開發(fā)的度秘,所以Swift項(xiàng)目使用時(shí)需要?jiǎng)?chuàng)建橋接文件并#import "PayPalMobile.h",如果不會(huì)創(chuàng)建橋接文件請(qǐng)看我的另一篇文章iOS第三方庫(kù)的使用方法以及常用的第三方庫(kù)

2.3 初始化SDK

AppDelegate.swiftdidFinishLaunchingWithOptions方法中初始化SDK顶伞,Client ID在myApp里面能看到

PayPalMobile.initializeWithClientIds(forEnvironments: [PayPalEnvironmentProduction : "這里填真實(shí)交易ClientID",PayPalEnvironmentSandbox : "這里填模擬交易ClientID"])

2.4 遵循協(xié)議

讓需要調(diào)用PayPal的Controller遵循PayPalPaymentDelegate協(xié)議,遵循協(xié)議需要實(shí)現(xiàn)兩個(gè)方法:
第一個(gè)(void)payPalPaymentDidCancel:(nonnull PayPalPaymentViewController *)paymentViewController
第二個(gè)(void)payPalPaymentViewController:(nonnull PayPalPaymentViewController *)paymentViewController didCompletePayment:(nonnull PayPalPayment *)completedPayment,從字面意思我們就知道這兩個(gè)方法是取消支付和支付成功的回調(diào)剑梳,支付成功后如果有需求我們可以將completedPayment上傳到服務(wù)器進(jìn)行驗(yàn)證唆貌。

2.5 配置PayPal

我這里圖個(gè)方便,把后面所有的代碼都寫到支付控制器viewDidLoad里面了垢乙,至于具體需要怎么搞要看你自己的代碼風(fēng)格了挠锥。

//支付環(huán)境,是枚舉侨赡,點(diǎn)進(jìn)去看看就知道怎么選擇了蓖租,我這里選的是模擬支付
        PayPalMobile.preconnect(withEnvironment: PayPalEnvironmentSandbox)
        //創(chuàng)建一個(gè)配置文件
        let payPalConfiguration = PayPalConfiguration()
        //是否支持信用卡支付
        payPalConfiguration.acceptCreditCards = true
        //商家地址粱侣,枚舉,這里我選擇賬號(hào)下的地址蓖宦,其他的可以去研究研究
        payPalConfiguration.payPalShippingAddressOption = PayPalShippingAddressOption.payPal
        payPalConfiguration.merchantName = "商家名稱"
        //語言
        payPalConfiguration.languageOrLocale = NSLocale.preferredLanguages.first
        //還有其他雜七雜八的配置這里就不寫了

2.6 創(chuàng)建訂單

我這里配置了一些內(nèi)容齐婴,有其他需求的可以深入研究

//創(chuàng)建一個(gè)訂單
        let payment = PayPalPayment()
        //訂單金額
        payment.amount = NSDecimalNumber(string: "10")
        //貨幣類型:有些類型是不支持的,在你的賬號(hào)里面可以看到,我這里填美刀
        payment.currencyCode = "USD"
        //訂單描述
        payment.shortDescription = "虛擬交易測(cè)試"
        if !payment.processable{
            //訂單信息有錯(cuò)誤無法完成需要在這里進(jìn)行處理
        }

2.7 提交訂單稠茂,發(fā)起支付請(qǐng)求

這個(gè)SDK還是很良心柠偶,支付界面都已經(jīng)給我們寫好了,類名叫PayPalPaymentViewController睬关,我們只需要實(shí)例化它再讓他顯示出來就可以了诱担,實(shí)例化的時(shí)候需要將代理設(shè)置成支付的Controller,還需要傳入剛才創(chuàng)建的配置文件payPalConfiguration以及訂單payment电爹,顯示方法看個(gè)人喜好蔫仙,可以模態(tài)顯示也可以壓棧顯示,我這里用模態(tài)顯示丐箩。

       //實(shí)例化支付界面
        let paymentViewController = PayPalPaymentViewController(payment: payment, configuration: payPalConfiguration, delegate: self)
        //顯示支付界面
        if paymentViewController != nil{
            self.present(paymentViewController!, animated: true, completion: nil)
        }

好了摇邦,運(yùn)行我們的程序試試效果,順便教大家如何用Xcode截取真機(jī)屏幕

截取真機(jī)屏幕


看看是不是出現(xiàn)了這個(gè)界面屎勘,這個(gè)界面就是APP用戶需要操作的了施籍,點(diǎn)擊登錄,然后用我們剛剛拿到的賬戶登錄(不是收款賬戶喔概漱,是模擬付款的賬戶)丑慎,登陸成功后會(huì)是下面這樣子:

點(diǎn)擊付款,然后進(jìn)入paypal開發(fā)者網(wǎng)站瓤摧,點(diǎn)擊左邊Sandbox中的Notification


看看是不是有收到相應(yīng)的通知立哑,到這里我們就成功集成并實(shí)現(xiàn)了PayPal支付功能,怎么樣姻灶,有沒有被自己的才華與美貌所迷倒,別忘了點(diǎn)個(gè)贊啊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诈茧,一起剝皮案震驚了整個(gè)濱河市产喉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敢会,老刑警劉巖曾沈,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸥昏,居然都是意外死亡塞俱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門吏垮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來障涯,“玉大人罐旗,你說我怎么就攤上這事∥ǖ” “怎么了九秀?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)粘我。 經(jīng)常有香客問我鼓蜒,道長(zhǎng),這世上最難降的妖魔是什么征字? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任都弹,我火速辦了婚禮,結(jié)果婚禮上匙姜,老公的妹妹穿的比我還像新娘畅厢。我一直安慰自己,他們只是感情好搁料,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布或详。 她就那樣靜靜地躺著,像睡著了一般郭计。 火紅的嫁衣襯著肌膚如雪霸琴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天昭伸,我揣著相機(jī)與錄音梧乘,去河邊找鬼。 笑死庐杨,一個(gè)胖子當(dāng)著我的面吹牛选调,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灵份,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼仁堪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了填渠?” 一聲冷哼從身側(cè)響起弦聂,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氛什,沒想到半個(gè)月后莺葫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枪眉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年捺檬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贸铜。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡堡纬,死狀恐怖聂受,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情隐轩,我是刑警寧澤饺饭,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站职车,受9級(jí)特大地震影響瘫俊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悴灵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一扛芽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧积瞒,春花似錦川尖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缰贝,卻和暖如春馍悟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背剩晴。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工锣咒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赞弥。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓毅整,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绽左。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悼嫉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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