自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS不用官方SDK實現(xiàn)微信和支付寶支付XHPayKit

移動開發(fā)
前段時間由于項目需求,移除了項目中的微信支付SDK和支付寶支付SDK,這種情況下需要自己搞定支付,第一時間考慮到的是使用openshare,但是當下載openshare下來后發(fā)現(xiàn),openshare的支付接口,并不能直接替換官方SDK支付接口。

前言

前段時間由于項目需求,移除了項目中的微信支付SDK和支付寶支付SDK,這種情況下需要自己搞定支付,***時間考慮到的是使用openshare,但是當下載openshare下來后發(fā)現(xiàn),openshare的支付接口,并不能直接替換官方SDK支付接口。

官方SDK的實現(xiàn)邏輯是后臺訂單簽名完成后,客服端傳簽名信息及參數(shù)給支付SDK,支付SDK生成協(xié)議url,然后拉起第三方支付APP,而openshare的支付接口是直接傳拉起支付的協(xié)議url地址,將生成協(xié)議url地址的操作也交給后臺來生成。

這樣的話后臺需要修改代碼,能否不修改后臺代碼,弄一個支付接口直接替換官方SDK支付接口,實現(xiàn)無縫對接呢,于是就研究了下微信和支付寶支付時APP間通訊關(guān)系,***封裝成XHPayKit。

blob.png
微信、支付寶支付

特性:

  1. XHPayKit擁有和官方SDK類似接口,可以直接替換官方SDK支付接口,如果你使用過官方SDK,那么轉(zhuǎn)換為本庫你只需花費極短時間.
  2. XHPayKit只有10kb大小,不用導(dǎo)入任何依賴庫,便可實現(xiàn)微信支付、支付寶支付,如果你想為項目瘦身或由于某種原因,不想使用官方SDK實現(xiàn)支付功能,此庫將是一個不錯的選擇.
  3. XHPayKit使用時,不需要配置微信等平臺appid等信息,服務(wù)端配置就可以了,因為后臺簽名訂單時會返回appid等信息給客戶端.

注意:

  1. 先在微信、支付寶開放平臺注冊你的應(yīng)用,并獲得支付能力
  2. 導(dǎo)入此庫,并請將 weixin 、 alipay 字段添加到info.plist白名單
  3. 添加自己APP URL Schemes,和微信回調(diào)URL Schemes,詳見README文檔

使用方法:

1.微信支付

 

  1. //微信支付參數(shù),下面7個參數(shù),由后臺簽名訂單后生成,并返回給客服端(與官方SDK一致) 
  2.  //注意:請將下面參數(shù)設(shè)置為你自己真實訂單簽名后服務(wù)器返回參數(shù),便可進行實際支付 
  3. XHPayWxReq *req = [[XHPayWxReq alloc] init]; 
  4. req.openID = @""
  5. req.partnerId = @""
  6. req.prepayId = @""
  7. req.nonceStr = @""
  8. req.timeStamp = 1518156229; 
  9. req.package = @""
  10. req.sign = @""
  11.           
  12. //傳入訂單模型,拉起微信支付 
  13. [[XHPayKit defaultManager] wxpayOrder:req completed:^(NSDictionary *resultDict) { 
  14.           NSLog(@"支付結(jié)果:\n%@",resultDict); 
  15.           NSInteger code = [resultDict[@"errCode"] integerValue]; 
  16.           if(code == 0){//支付成功 
  17.                   
  18.           } 
  19. }]; 

2.支付寶支付

 

  1. //支付寶訂單簽名,此簽名由后臺簽名訂單后生成,并返回給客戶端(與官方SDK一致) 
  2. //注意:請將下面值設(shè)置為你自己真實訂單簽名,便可進行實際支付 
  3. NSString *orderSign = @"很長的一串支付寶訂單簽名"
  4.           
  5. //傳入支付寶訂單簽名 和 自己App URL Scheme,拉起支付寶支付 
  6. [[XHPayKit defaultManager] alipayOrder:orderSign fromScheme:@"XHPayKitExample" completed:^(NSDictionary *resultDict) { 
  7.     NSLog(@"支付結(jié)果:\n%@",resultDict); 
  8.     NSInteger status = [resultDict[@"ResultStatus"] integerValue]; 
  9.     if(status == 9000){//支付成功 
  10.                   
  11.     } 
  12. }]; 

3.在Appdelegate中添加以下代碼 - 處理第三方支付跳回商戶app攜帶的支付結(jié)果Url

 

  1. #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0 
  2. /** iOS9及以后 */ 
  3. - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<uiapplicationopenurloptionskey, id> *)options 
  4.     BOOL result = [[XHPayKit defaultManager] handleOpenURL:url]; 
  5.     if (!result) {//這里處理其他SDK(例如QQ登錄,微博登錄等) 
  6.           
  7.     } 
  8.     return result; 
  9. #endif 
  10. /** iOS9以下 */ 
  11. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
  12.     BOOL result = [[XHPayKit defaultManager] handleOpenURL:url]; 
  13.     if (!result) {//這里處理其他SDK(例如QQ登錄,微博登錄等) 
  14.           
  15.     } 
  16.     return result; 
  17. }</uiapplicationopenurloptionskey, id> 

其它接口:

 

  1. /** 
  2.  是否安裝微信 
  3.  @return 已安裝YES,未安裝NO 
  4.  */ 
  5. +(BOOL)isWxAppInstalled; 
  6. /** 
  7.  是否安裝支付寶 
  8.  @return 已安裝YES,未安裝NO 
  9.  */ 
  10. +(BOOL)isAliAppInstalled; 

支付結(jié)果resultDict釋義:

微信

 

  1.     "errCode":0, 
  2.     "errStr":"成功" 
  3. //以下狀態(tài)碼含義與官方SDK一致 
  4. errCode = 0,成功 
  5. errCode = -1,普通錯誤類型 
  6. errCode = -2,用戶點擊取消并返回 
  7. errCode = -3,發(fā)送失敗 
  8. errCode = -4,授權(quán)失敗  
  9. errCode = -5,微信不支持 

支付寶

 

  1.     "result":""
  2.     "resultStatus":"9000"
  3.     "memo":"支付成功" 
  4. //以下狀態(tài)碼含義與官方SDK一致 
  5. resultStatus = 9000,支付成功 
  6. resultStatus = 8000,正在處理中,支付結(jié)果未知(有可能已經(jīng)支付成功),請查詢商戶訂單列表中訂單的支付狀態(tài) 
  7. resultStatus = 4000,支付失敗 
  8. resultStatus = 5000,重復(fù)請求 
  9. resultStatus = 6001,用戶中途取消 
  10. resultStatus = 6002,網(wǎng)絡(luò)連接出錯 
  11. resultStatus = 6004,支付結(jié)果未知(有可能已經(jīng)支付成功),請查詢商戶訂單列表中訂單的支付狀態(tài) 

小結(jié):

XHPayKit的實現(xiàn)非常簡單,感興趣的同學(xué)可以下載下來研究下支付時APP間通訊.

代碼地址:https://github.com/CoderZhuXH/XHPayKit

責(zé)任編輯:未麗燕 來源: 簡書
相關(guān)推薦

2021-09-09 15:30:28

鴻蒙HarmonyOS應(yīng)用

2021-01-25 14:13:26

iOS支付寶支付

2013-11-28 11:15:43

微信支付寶支付戰(zhàn)爭

2021-12-29 21:36:12

微信支付寶移動支付

2018-07-01 15:40:51

微信支付寶央行

2019-11-01 09:36:58

微信支付支付寶

2021-01-19 16:24:08

抖音支付寶微信

2018-03-21 06:27:16

支付寶微信銀聯(lián)

2016-12-29 13:28:13

2015-08-04 17:03:52

支付寶微信

2017-08-04 15:16:55

大數(shù)據(jù)動向用戶支付

2018-01-08 14:10:48

微信支付寶移動支付

2021-03-26 14:56:30

數(shù)字人民幣支付寶微信

2019-03-27 15:03:42

微信支付寶刷臉支付

2021-03-18 19:08:49

Java支付數(shù)據(jù)庫

2020-08-05 15:04:13

微信支付寶移動應(yīng)用

2021-10-12 15:35:36

微信支付寶銀聯(lián)云閃付

2018-03-22 04:20:40

支付寶微信移動支付

2019-08-12 11:28:25

2018-07-10 15:41:37

點贊
收藏

51CTO技術(shù)棧公眾號