你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> iOS支付項目實操分享

iOS支付項目實操分享

編輯:IOS開發基礎

序言

對於iOS開發來說,移動支付一直是開發者的痛點所在,各種支付方式的配置各不相同,非常繁瑣,且大多不支持CocoaPods方便的集成方式,市面上倒是有類似Ping++這種服務可以一站式集成開發者想要的支付方式,但是都是收費的。所以本人旨在提供一種iOS端一站式集成主流支付方式的工具,關鍵開源免費。

此工具提供的支付方式目前包括Apple Pay、微信支付、支付寶支付、銀聯支付。所以需要開發者去相應平台注冊商戶號(這些只能你自己做了,因為需要綁定銀行卡,這張銀行卡就是用戶支付的錢會轉到這裡來),這裡需要特別說明的是Apple Pay,蘋果官方強烈建議使用第三方SDK接入Apple Pay,因為直接接入Apple Pay需要很多數據加密的相關知識(蘋果原話),目前Apple Pay在我大天朝區合作的有5家,分別是CUP、LianlianPay、PayEase、YeePay、UMS(傳送門),這裡我選擇的是LianlianPay,不要被他的名字所迷惑,感覺好像很山寨的樣子,進入他的官網(傳送門),你會被他的氣質所折服,特別是下載了他的SDK看了源碼之後,我更加肯定了我的選擇,真心比CUP(中國銀聯)的好太多了。

1.技術架構

先上圖

4037175-9fd2b89ae7358eeb.png

如圖所示,此框架為LeoPayManager,已經封裝了Apple Pay、微信支付、支付寶支付和銀聯支付的SDK,方便開發者一站式集成,值得注意的是,第5步通知服務端支付結果和通知客戶端支付結果是異步進行的,你可以認為是第三方支付服務器(以下說道第三方支付服務器就是指Apple Pay、微信支付、支付寶支付、銀聯支付服務器)開了兩個線程,一個用來通知服務端支付結果,一個用來通知客戶端支付結果。

2.Xcode配置

申請微信支付、支付寶支付、銀聯支付、連連支付(用於Apple Pay)商戶號,把相應的配置做好,這些配置不在多說,網上教程很多,不用教程也可以根據提示一步一步做好。

在Info.plist文件加入白名單

4037175-225ec91f0544e649.png

選擇TARGETS->Info->URL Types添加URL Schemes

4037175-e693ee36749aef8c.png

其中wx*******為開發者注冊的微信AppId;

alisdk那一欄的******為開發調用- (void)aliPayOrder:(NSString *)order scheme:(NSString *)scheme respBlock:(LeoPayManagerRespBlock)block時寫入的scheme參數,建議使用alisdk+app名。

3.集成

源碼地址:https://github.com/LeoChensj/LeoPayManager    (如果覺得有用,給星哦,親)

可以使用Cocoapods方便集成,pod 'LeoPayManager',建議使用。

也可以去github下載拖入工程,此種方式需要開發者自己添加系統依賴庫,不建議使用。

4.使用

AppDelegate.m文件

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//這裡需要更換你申請的微信appId

[LeoPayManager wechatRegisterAppWithAppId:@"WeChat_appId" description:@"description"];

return YES;

}

//iOS9之前

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

{

if([url.scheme hasPrefix:@"wx"])//微信

{

return [LeoPayManager wechatHandleOpenURL:url];

}

else if([url.scheme hasPrefix:@"UnionPay"])//銀聯

{

return [LeoPayManager unionHandleOpenURL:url];

}

else if([url.scheme hasPrefix:@"safepay"])//支付寶

{

return [LeoPayManager alipayHandleOpenURL:url];

}

return YES;

}

//iOS9之後

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options

{

if([url.scheme hasPrefix:@"wx"])//微信

{

return [LeoPayManager wechatHandleOpenURL:url];

}

else if([url.scheme hasPrefix:@"UnionPay"])//銀聯

{

return [LeoPayManager unionHandleOpenURL:url];

}

else if([url.scheme hasPrefix:@"safepay"])//支付寶

{

return [LeoPayManager alipayHandleOpenURL:url];

}

return YES;

}

ViewController.m文件(發起支付的文件)

首先需要App服務器提供接口獲取相應的支付參數,然後調用SDK發起支付

//先獲取Apple Pay支付參數

//...

LeoPayManager *manager = [LeoPayManager getInstance];

[manager applePayWithTraderInfo:nil viewController:self respBlock:^(NSInteger respCode, NSString *respMsg) {

//處理支付結果

}];



//先獲取微信支付參數

//...

LeoPayManager *manager = [LeoPayManager getInstance];

[manager wechatPayWithAppId:@"" partnerId:@"" prepayId:@"" package:@"" nonceStr:@"" timeStamp:@"" sign:@"" respBlock:^(NSInteger respCode, NSString *respMsg) {

//處理支付結果

}];



LeoPayManager *manager = [LeoPayManager getInstance];

[manager aliPayOrder:@"" scheme:@"" respBlock:^(NSInteger respCode, NSString *respMsg) {

//處理支付結果

}];



//先獲取銀聯支付參數

//...

LeoPayManager *manager = [LeoPayManager getInstance];

[manager unionPayWithSerialNo:@"" viewController:self respBlock:^(NSInteger respCode, NSString *respMsg) {

//處理支付結果

}];

總結

至此,大家可以方便的在iOS端集成這些主流的支付方式了,希望對大家有所幫助,如果有任何有關此文的問題,都可以留言和我探討。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved