iOS 整合Ping++支付,繞過一些坑
前言
這一段時間比較忙,主要公司的產品需要重構與加多一個貨幣支付系統。說到移動端的支付,自然會牽扯到支付這一塊。支付這一塊主流的目前就微信、支付寶、銀聯。做過這些SDK整合的開發者都知道,整合相對複雜,而且要花大量的時間去閱讀他們提供的開發文件,不過還好現在有很多開發者都分享了他們的整合心得,使這件事越發簡單,比如:iOS支付[支付寶、銀聯、微信]、10分鐘搞定支付寶和微信支付 的 各種填坑等等,但是呢,其實還有更加簡單的,Ping++。
Ping++能幹嘛?
Ping++ 是為移動端應用以及 PC 網頁量身打造的下一代支付系統,通過一個 SDK 便可以同時支援移動端以及 PC 端網頁的多種主流支付渠道,你只需要一次接入即可完成多個渠道的接入。 Ping++ SDK 包括 Client SDK 和 Server SDK 兩部分,支援主流的七種後端開發語言,適配了 Android,iOS 和 HTML5 三種移動端平臺以及 PC 端網頁。ps:官方原話。
說說我的理解:
我覺得最方便的是,不需要移動端填寫各種appkey,各種祕鑰,像支付寶支付有祕鑰特別麻煩,這一些繁瑣的事情Ping++都幫你做了,你只要把這些申請下來的key儲存在Ping++的配置資訊系統就可以了。還要申請開通一些許可權,不過這些操作都是我老大弄的,不過很方便就是了。
還有就是一行程式碼就可以調起各種支付這個對做過各種原生支付SDK的我,感覺很清爽,貼下程式碼,感受下:
[Pingpp createPayment:charge
viewController:weakSelf
appURLScheme:kUrlScheme
withCompletion:^(NSString *result, PingppError *error) {
NSLog(@"completion block: %@", result);
if (error == nil) {
NSLog(@"PingppError is nil");
} else {
NSLog(@"PingppError: code=%lu msg=%@",
(unsigned long)error.code, [error getMsg]);
}
[weakSelf showAlertMessage:result];
}];
使用方法:
1、使用 CocoaPods
在 Podfile 新增:
pod 'Pingpp', '~> 2.2.6'
2、手動引入
下載 iOS SDK 到本地,裡面包含 lib 和 example 兩個目錄。example 目錄下的是示例專案,你需要將 lib 目錄下的檔案新增到你的專案。
具體可以看Ping++的iOS SDK 接入指南。
說說我遇到的坑:
首先說下微信支付的SDK再Ping++的Channels是顯示Mmdpay的,剛開始害我找半天...有點誇張哈
我這裡由於暫時只用到這兩種支付,所以我把其它的都刪除掉了,現在app都提倡瘦身嘛。
還有一點:
為了能正確獲得結果回撥請在工程 AppDelegate 檔案中呼叫[Pingpp handleOpenURL:url withCompletion:nil]
。
如果該方法的第二個引數傳 nil,請在在 createPayment
方法的 Completion
中處理回撥結果。否則,在這裡處理結果。
如果你使用了微信分享、登入等一些看起來在這裡“衝突”的模組,你可以先判斷 url 的 host 來決定呼叫哪一方的方法。
也可以先呼叫 Ping++ 的方法,如果 return 的值為 false,表示這個 url 不是支付相關的,你再呼叫模組的方法。
貼上我解決這個問題的程式碼:
// iOS 8 及以下請用這個
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
BOOL isPay = [Pingpp handleOpenURL:url withCompletion:nil];
if(isPay){
return isPay;
}else{
return [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil];
}
}
這裡值得注意一下,每次呼叫[Pingpp handleOpenURL:url withCompletion:nil]
就會執行一次[Pingpp createPayment:(NSObject *) appURLScheme:<#(NSString *)#> withCompletion:<#^(NSString *result, PingppError *error)completion#>]
方法裡的回撥。
大概就是這一些了,後續可能還會繼續新增更多的支付功能,如果遇到坑,我還會繼續更新此文章。
參考文章
相關文章
- Flutter 接入iOS蘋果內購支付踩坑過程FlutteriOS蘋果
- thinkphp 5.0整合phpsocketio完整攻略,繞坑PHP
- iOS使用Stripe整合支付寶Alipay支付iOS
- iOS開發:整合支付寶(遇見的坑和便捷擼程式碼)iOS
- iOS--支付寶環境整合iOS
- android微信分享、微信支付的一些坑Android
- 對iOS端支付寶和微信支付程式碼進行整合iOS
- 乾貨系列:ios支付寶的整合iOS
- iOS微信支付整合 SDK1 7 5iOS
- js繞過-前端加密繞過JS前端加密
- PHP中GPC繞過的一些總結PHP
- 整合支付寶錢包支付 iOS SDK 的方法與經驗iOS
- Go 切片繞坑指南Go
- 玩轉 iOS 開發:整合 AliPay – 支付寶iOS
- 玩轉 iOS 開發:整合 AliPay - 支付寶iOS
- 玩轉iOS開發:整合 WeChat SDK - 支付篇iOS
- 微信支付iOS整合與二次封裝iOS封裝
- 談談iOS接入微信支付遇到的小坑iOS
- iOS支付寶授權登入整合注意事項iOS
- iOS 支付前登入要有跳過選項iOS
- 使用vue2+Axios遇到的一些坑VueiOS
- 使用 Jenkins 配置 iOS 持續整合踩坑實錄JenkinsiOS
- Android整合支付寶支付功能Android
- 關於內購支付的流程和一些需要注意的坑
- IOS整合第三方支付、分享、登入功能小結iOS
- 使用HTTP頭進行403繞過 速率繞過 Rate Limit BypassHTTPMIT
- 網站如何整合支付寶支付介面網站
- 支付開發填坑記之支付寶
- 【iOS】小知識點_AND_踩過的坑iOS
- md5繞過
- Android整合微信支付Android
- 嘗試 WebGPU 過程中掉的一些坑WebGPU
- 內購支付踩過的坑以及自己的解決途徑
- 沒太多坑的微信支付
- iOS Jailbreak Principles - Undecimus 分析(四)繞過 A12 的 PAC 實現 kexeciOSAI
- iOS支付寶支付主要程式碼iOS
- Vue與Element走過的坑。。。。帶上AxiosVueiOS
- powershell程式碼混淆繞過