【iOS】程序內跳轉到支付寶轉賬(非SDK實現支付)及相關監聽


轉載請注明出處

今天遇到了一個有意思的問題,就是支付調用支付寶,但是后台返的鏈接類似這種(https://qr.alipay.com/bax05299bjty5xvbkjii8018)。這種鏈接直接打開在APP中是不行的,轉成二維碼可以用支付寶掃碼支付。

那么如何不生成二維碼,然后掃描在進行支付呢?這類似於支付寶轉賬。相當於程序跳轉到支付寶轉賬。

附:通過半天的摸索,終於明白轉賬的套路:

1,生成收款用的二維碼。(支付寶上有)
2,用二維碼掃描工具掃描出對應URL。這個鏈接在 PC 端訪問,會跳到支付寶首頁,但是在 iPhone 上面訪問,這個網頁會做一次支付寶 app 的 scheme 跳轉。這個過程已經可以接受了,在 app 內 openURL,會先跳到 Safari,然后 Safari 提示你去支付寶付款。eg:HTTPS://QR.ALIPAY.COM/*********
2,在 app 的代碼里面,只要做一次 openURL,就會跳轉到支付寶里面,直接打開第一步里面那個付款對象,並且 title 是掃碼付款,這個現象和直接掃了第一步的二維碼是一模一樣的。 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=上邊對應的URL"]]; 3,搞定。

 so,我們就可以這樣做。

    // 首先拼接urlStr  前面相當於固定的  只要再后面拼上返回的鏈接
    NSString *url = @"alipayqr://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/bax05299bjty5xvbkjii8018";
    
    // 打開鏈接
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

但是有個問題就是,我們不清楚是否支付成功,且沒有支付回調之類的來返回APP,並在APP中處理。

第二個重點就來了,如何監聽回調呢?我的思路是這樣,在我們的APP重新回到前台時判斷,這也需要后台的配合,我們獲取不到支付寶的回調,但是后台根據調取的相關SDK能獲取到。在回到前台時我們就可以通過調用后台接口來獲取狀態。然后進行相關處理。

方法一:在APPdelegate中處理

- (void)applicationWillEnterForeground:(UIApplication *)application {
    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
    
    NSLog(@"APP 回到前台");
    
    // 判斷是不是需要處理的界面 如果是進行操作 不是不處理
    // 因為是支付,所以我寫了個方法 獲取最上層的ViewController,只要是點擊支付的界面,我們就進行操作。根據不同的界面進行不同操作,但是比較繁瑣。
} 

方法二:在那個界面處理,比較簡單

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 監聽應用重新獲得活躍 並處理
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(handleApplicationActive:)
                                                 name:UIApplicationDidBecomeActiveNotification object:nil];
}

//處理app后台回來事件
-(void)handleApplicationActive:(NSNotification *)notification{
    NSLog(@"回到app2222");
}

 這兩個方法都可以實現這個監聽功能,可以根據喜好自己選擇。附上demo

最后附上支付寶和其他開放平台對應的schemes:

微信掃一掃
weixin://scanqrcode
(跳轉微信掃一掃)

支付寶掃一掃
alipayqr://platformapi/startapp?saId=10000007
(跳轉支付寶掃一掃)

支付寶付款
alipay://platformapi/startapp?appId=20000056
(跳轉支付寶轉賬向商家付款界面)

支付寶記賬
alipay://platformapi/startapp?appId=20000168
(跳轉支付寶記賬界面)

支付寶滴滴
alipay://platformapi/startapp?appId=20000778

支付寶螞蟻森林
alipay://platformapi/startapp?appId=60000002

支付寶轉賬
alipayqr://platformapi/startapp?saId=20000116
(跳轉支付寶轉賬界面)

支付寶手機充值
alipayqr://platformapi/startapp?saId=10000003
(跳轉支付寶手機充值頁面)

播放網易雲已下載的音樂
orpheuswidget://download
(跳轉進網易雲並自動播放已經下載的歌曲,需提前設置為隨機播放,否則每次都是播放你下載的歌曲中的第一首)

網易雲音樂聽歌識曲
orpheuswidget://recognize
(點擊一下自動進入網易雲聽歌識曲界面)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM