水了這么多篇文章鸥滨,這篇保證不水肴盏。
最近項(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)用信息界面溯职,
sandbox
和live
分別對(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.swift
的didFinishLaunchingWithOptions
方法中初始化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ī)屏幕
看看是不是出現(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è)贊啊