PayPal iOS 集成攻略

2019.5.7 更

評(píng)論說(shuō)官方在github的demo和sdk已經(jīng)無(wú)法下載。去看了下,被archive了黍特。
官網(wǎng)逛了一圈,developer.paypal.com锯蛀。
原來(lái)的什么名字忘記了灭衷,現(xiàn)在叫payments pro。然而只支持api調(diào)用貌似旁涤。并且僅限英美加拿大今布。
有需要的小伙伴考慮用braintree吧经备。

這兩天在研究如何在項(xiàng)目中集成PayPal的iOS SDK 但是百度到的資料很少,研究了兩天拿出來(lái)和大家分享下部默,共同討論共同成長(zhǎng)侵蒙。

這里以PayPal的官方demo為例,sdk和demo地址在這里:paypal

  • 安裝流程建議使用CocoaPods,喜歡配置依賴庫(kù)的小伙伴自行百度

準(zhǔn)備事項(xiàng)

  • 預(yù)先善其事傅蹂,必先利其器

首先你得注冊(cè)個(gè)paypal賬號(hào)纷闺,連賬號(hào)都沒(méi)有誰(shuí)給你錢(qián)啊

  1. 登錄paypal開(kāi)發(fā)者網(wǎng)站。 點(diǎn)這里
  2. 右上角看到了沒(méi)有份蝴,不上圖了犁功。有賬號(hào)的登錄,沒(méi)賬號(hào)的注冊(cè)婚夫。
  3. 在上面的 DASHBOARD 頁(yè)面下浸卦,找到 Creat APP ,點(diǎn)它案糙!創(chuàng)建一個(gè)阿啪啪出來(lái)限嫌。
    創(chuàng)建一個(gè)阿啪啪
  4. 我們來(lái)到創(chuàng)建阿啪啪的頁(yè)面,這里需要輸入一個(gè)阿啪啪名字以及選擇一個(gè)賬戶时捌,名字沒(méi)問(wèn)題怒医,可是這個(gè)賬戶怎么來(lái)的?這個(gè)稍后說(shuō)奢讨,選上就行了稚叹。名字填好后,點(diǎn)擊Creat App拿诸。
  5. 來(lái)到我們的阿啪啪頁(yè)面扒袖,這里是查看你的應(yīng)用信息的地方。右上角分別對(duì)應(yīng)著你的應(yīng)用的測(cè)試模式真實(shí)交易模式亩码,點(diǎn)擊切換會(huì)看到不同的API CREDENTIALS 內(nèi)容季率,分別是在測(cè)試模式真實(shí)交易模式下不同的AccountClient IDSecret蟀伸。這里掏出小本本,記下測(cè)試模式下的Client ID缅刽,之后會(huì)用到啊掏。
  6. 接下來(lái),選擇右邊的SandboxAccounts選項(xiàng)衰猛。Sandbox就是測(cè)試環(huán)境迟蜜,其中包含了你的賬戶信息、通知消息啡省、交易記錄等等娜睛。髓霞。(其實(shí)我不知道后面那三個(gè)干嘛的,因?yàn)闆](méi)用到)畦戒。
    而在現(xiàn)在所看到的Accounts中方库,你會(huì)看到兩個(gè)賬號(hào),第一個(gè)就是測(cè)試模式下障斋,你的商家賬號(hào)纵潦。在你的阿啪啪中產(chǎn)生的所有虛擬交易,其金額都會(huì)流入到這個(gè)賬號(hào)下垃环。而第二個(gè)邀层,不用說(shuō)你也猜到,就是在虛擬交易中扮演顧客的賬號(hào)遂庄。右上角可以添加賬號(hào)寥院,具體玩法自行摸索,這里不多說(shuō)了涛目。
  7. 輕輕的點(diǎn)下你的商家賬號(hào)秸谢。彈出的框選擇Profile。展示的是這個(gè)賬號(hào)的Account Details泌绣,第一個(gè)就是你的賬號(hào)基本信息钮追,包括你的郵箱、密碼阿迈、電話號(hào)元媚、賬號(hào)類型、狀態(tài)和城市苗沧。
  • 上面的標(biāo)簽隨便看看就好刊棕。其中的 Funding 包含了你的虛擬商家賬號(hào)的信用卡信息和 Balance 我的理解就是paypal余額。此時(shí)Balance 后面應(yīng)該是沒(méi)有余額的待逞。
  • 同樣的甥角,點(diǎn)開(kāi)顧客賬號(hào)的Profile。展示的是你的顧客的賬戶信息识樱。此時(shí)我建議點(diǎn)擊Change password修改一個(gè)好記的交易密碼嗤无。不改的話就是你創(chuàng)建賬號(hào)時(shí)候的密碼,我猜的怜庸。同樣的当犯, Funding 包含了你的虛擬商家賬號(hào)的信用卡信息和 Balance,此時(shí)Balance 后面的數(shù)字應(yīng)該是$9999.9割疾。

準(zhǔn)備工作基本上是完成了嚎卫,下面看看如何進(jìn)行虛擬支付

  • 現(xiàn)在我當(dāng)做你已經(jīng)把paypal的sdk pod到你的項(xiàng)目中去了。
  • 正如所有sdk一樣宏榕,一定要做的是事情是什么拓诸?侵佃?沒(méi)錯(cuò),就是導(dǎo)入頭文件5熘А2霰病!
  • 然后胚宦,來(lái)到AppDelegate.m文件的didFinishLaunchingWithOptions
 [PayPalMobile initializeWithClientIdsForEnvironments:@{PayPalEnvironmentProduction : @"你的真實(shí)交易模式ClientID",PayPalEnvironmentSandbox : @"你的測(cè)試模式ClientID"}]; 
  • 填好你的測(cè)試模式ClientID后我們繼續(xù)

簡(jiǎn)單交代下集成paypal的支付流程:

  1. 配置paypal SDK連接環(huán)境如:測(cè)試環(huán)境首有、真實(shí)環(huán)境
  2. 配置paypal一些參數(shù)如:商家名字、地址選項(xiàng)枢劝、商家隱私政策和用戶協(xié)議網(wǎng)址等
  3. 配置支付相關(guān)如:訂單總額井联、貨幣類型和訂單描述等
  4. 提交訂單,通過(guò)代理回調(diào)支付狀態(tài)

老司機(jī)要開(kāi)車(chē)了您旁,請(qǐng)坐穩(wěn)

簡(jiǎn)單說(shuō)下原理烙常,paypal的支付并不喚起客戶端,也就是說(shuō)并不要求用戶安裝 paypal APP鹤盒,支付的流程產(chǎn)生在paypal的sdk中已經(jīng)封裝好的VC中蚕脏。你要做的就是設(shè)置參數(shù)和彈出paypal的VC以及處理后續(xù)的回調(diào)。

天才紙尿褲侦锯,我是第一步:

  • 首先驼鞭,我建議你要有一個(gè)訂單處理類。你的生成訂單VC傳進(jìn)訂單總額(有需要的話傳進(jìn)商品數(shù)組)給訂單處理類尺碰,這個(gè)類會(huì)提供block完成后續(xù)的操作如:訂單VC彈出PayPal的VC挣棕,支付完成后訂單VCdismiss掉paypal的VC以及用戶取消付款訂單VC處理事情等等。

  • 現(xiàn)在就簡(jiǎn)單點(diǎn)亲桥,先讓訂單VC把所有的事都干了洛心。

- 配置支付環(huán)境
[PayPalMobile preconnectWithEnvironment:PayPalEnvironmentSandbox];

  • 以下是環(huán)境說(shuō)明
/// 真實(shí)交易環(huán)境-也就是上架之后的環(huán)境
extern NSString * _Nonnull const PayPalEnvironmentProduction;
/// 模擬環(huán)境-也就是沙盒環(huán)境
extern NSString * _Nonnull const PayPalEnvironmentSandbox;
/// 無(wú)網(wǎng)絡(luò)連接環(huán)境-具體用處,咳咳题篷,自行摸索
extern NSString * _Nonnull const PayPalEnvironmentNoNetwork;

第二步:paypal配置

首先讓你的訂單VC有一個(gè)屬性

@property(nonatomic, strong) PayPalConfiguration *payPalConfig;

然后配置它

//是否接受信用卡
 _payPalConfig.acceptCreditCards = NO;
 
 //商家名稱
 _payPalConfig.merchantName = @"商家名";
 
 //商家隱私協(xié)議網(wǎng)址和用戶授權(quán)網(wǎng)址-說(shuō)實(shí)話這個(gè)沒(méi)用到
 _payPalConfig.merchantPrivacyPolicyURL = [NSURL URLWithString:@"https://www.paypal.com/webapps/mpp/ua/privacy-full"];
  _payPalConfig.merchantUserAgreementURL = [NSURL URLWithString:@"https://www.paypal.com/webapps/mpp/ua/useragreement-full"];
  
  //設(shè)置地址選項(xiàng)-在支付頁(yè)面可選擇賬戶地址信息
  typedef NS_ENUM(NSInteger, PayPalShippingAddressOption) {
  //不展示地址信息
  PayPalShippingAddressOptionNone = 0,
  //這個(gè)沒(méi)試過(guò)词身,自行查閱
  PayPalShippingAddressOptionProvided = 1,
  //paypal賬號(hào)下的地址信息
  PayPalShippingAddressOptionPayPal = 2,
  //全選
  PayPalShippingAddressOptionBoth = 3,
};

  //paypal賬號(hào)下的地址信息
  _payPalConfig.payPalShippingAddressOption = PayPalShippingAddressOptionPayPal;
  
  //配置語(yǔ)言環(huán)境
  _payPalConfig.languageOrLocale = [NSLocale preferredLanguages][0];

第三步:配置支付相關(guān)信息

  • 這里只寫(xiě)下簡(jiǎn)單版,如果想要把訂單中所有商品信息添加進(jìn)去自行查看官方demo吧番枚,很簡(jiǎn)單的
PayPalPayment *payment = [[PayPalPayment alloc] init];

//訂單總額
payment.amount = [NSDecimalNumber decimalNumberWithString:@"100"];

//貨幣類型-RMB是沒(méi)用的
payment.currencyCode = @"USD";

//訂單描述
payment.shortDescription = @"Hipster clothing";    

第四步:提交訂單-最重要也是最簡(jiǎn)單的一步

//生成paypal控制器法严,并模態(tài)出來(lái)(push也行)
//將之前生成的訂單信息和paypal配置傳進(jìn)來(lái),并設(shè)置訂單VC為代理 
PayPalPaymentViewController *paymentViewController = [[PayPalPaymentViewController alloc] initWithPayment:payment                                                                                            configuration:self.payPalConfig                                                                                                  delegate:self];
 
//模態(tài)展示
[self presentViewController:paymentViewController animated:YES completion:nil];
之后就是顧客賬戶上場(chǎng)了
  • 找到你的顧客賬號(hào)葫笼,記著不是商家賬號(hào)深啤。拿到郵箱和密碼。郵箱是上面顯示的buyer的郵箱渔欢。密碼如果修改過(guò)就是修改后的密碼墓塌,沒(méi)改過(guò)應(yīng)該就是注冊(cè)時(shí)填的登陸密碼瘟忱。?

  • 在付款頁(yè)面登陸你的賬號(hào)奥额。登陸成功之后苫幢,你會(huì)看到你即將支付的訂單總額,你的賬號(hào)名字以及你的paypal支付方式選項(xiàng)垫挨,默認(rèn)是余額Balance支付韩肝。如果你開(kāi)通了信用卡支付,可選擇信用卡九榔。

  • 最后哀峻,毫不猶豫的點(diǎn)下那個(gè)藍(lán)色的Pay

  • 不出意外都會(huì)支付成功的

最后:監(jiān)測(cè)訂單狀態(tài)

  • 你的訂單VC要遵從 PayPalPaymentDelegate 協(xié)議
  • 實(shí)現(xiàn)協(xié)議的方法如下:
//訂單支付完成后回調(diào)此方法
- (void)payPalPaymentViewController:(PayPalPaymentViewController *)paymentViewController didCompletePayment:(PayPalPayment *)completedPayment {
  NSLog(@"PayPal Payment Success!");
}

//用戶取消支付回調(diào)此方法
- (void)payPalPaymentDidCancel:(PayPalPaymentViewController *)paymentViewController {
  NSLog(@"PayPal Payment Canceled");
}
到這里支付流程就完成了,但是你可能還需要向服務(wù)器發(fā)送一些東西哲泊,讓服務(wù)器驗(yàn)證本次訂單有效性
//回調(diào)的 PayPalPayment 的 confirmation 屬性包含此次訂單的狀態(tài)信息包括校驗(yàn)碼剩蟀,服務(wù)器可已通過(guò)該校驗(yàn)碼驗(yàn)證交易真實(shí)性。
//返回?cái)?shù)據(jù) - id所對(duì)應(yīng)的就是校驗(yàn)碼切威。
{
    client =     {
        environment = sandbox;
        "paypal_sdk_version" = "2.14.2";
        platform = iOS;
        "product_name" = "PayPal iOS SDK";
    };
    response =     {
        "create_time" = "2016-05-12T03:25:49Z";
        id = "PAY-6BG56850AF923584SK4Z7PNQ";
        intent = sale;
        state = approved;
    };
    "response_type" = payment;
}

最后的最后:

有小伙伴在關(guān)心之前在阿啪啪中產(chǎn)生的交易怎么知道呢育特?

來(lái)到paypal開(kāi)發(fā)者網(wǎng)站,登陸后向左看先朦。選擇Sandbox中的Notification選擇缰冤。這里就是所有的交易通知,包括商家賬戶和顧客賬戶喳魏。

以上棉浸,就是模擬環(huán)境下進(jìn)行paypal支付的全過(guò)程。如果要進(jìn)行真實(shí)交易刺彩,就要先注冊(cè)business賬戶迷郑。總的來(lái)說(shuō)迂苛,只要得到真實(shí)交易模式下的clientID就能夠發(fā)起真實(shí)交易了三热。

全文完。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末三幻,一起剝皮案震驚了整個(gè)濱河市就漾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌念搬,老刑警劉巖抑堡,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異朗徊,居然都是意外死亡首妖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)爷恳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)有缆,“玉大人,你說(shuō)我怎么就攤上這事∨锉冢” “怎么了杯矩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)袖外。 經(jīng)常有香客問(wèn)我史隆,道長(zhǎng),這世上最難降的妖魔是什么曼验? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任泌射,我火速辦了婚禮,結(jié)果婚禮上鬓照,老公的妹妹穿的比我還像新娘熔酷。我一直安慰自己,他們只是感情好豺裆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布纯陨。 她就那樣靜靜地躺著,像睡著了一般留储。 火紅的嫁衣襯著肌膚如雪翼抠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天获讳,我揣著相機(jī)與錄音阴颖,去河邊找鬼。 笑死丐膝,一個(gè)胖子當(dāng)著我的面吹牛量愧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播帅矗,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼偎肃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了浑此?” 一聲冷哼從身側(cè)響起累颂,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凛俱,沒(méi)想到半個(gè)月后紊馏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒲犬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年朱监,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片原叮。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赫编,死狀恐怖巡蘸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情擂送,我是刑警寧澤赡若,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站团甲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏黍聂。R本人自食惡果不足惜躺苦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望产还。 院中可真熱鬧匹厘,春花似錦、人聲如沸脐区。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)牛隅。三九已至炕柔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間媒佣,已是汗流浹背匕累。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留默伍,地道東北人欢嘿。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像也糊,于是被迫代替她去往敵國(guó)和親炼蹦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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