iOS 接入建行龍支付說(shuō)明

需求

近期因?yàn)楣緲I(yè)務(wù)需求,需要接入建行支付,包含建行龍支付和建行分期,因?yàn)榉制谥恍枰尤際5即可,龍支付需要H5和APP之間切換,故此將接入步驟詳細(xì)記錄下來(lái),方便他人再次接入的時(shí)候,少入坑。(真的要吐槽下建行的文檔,不夠詳細(xì))。

配置信息

1.首先需要在plist中進(jìn)行scheme白名單配置,如下圖:


image

2.plist 的 NSAppTransportSecurity 字段添加相應(yīng)的 NSExceptionDomains:

    <key>NSExceptionDomains</key>
    <dict>
    <key>ibsbjstar.ccb.com.cn</key>
    <dict>
         <key>NSExceptionAllowsInsecureHTTPLoads</key>
         <true/>
         <key>NSExceptionRequiresForwardSecrecy</key>
         <false/>
        <key>NSIncludesSubdomains</key>
        <true/>
    </dict>
 </dict>
  1. 在URL Types 里面配置回調(diào)scheme,如下圖中的此處的值很重要,我在集成的時(shí)候,就是因?yàn)檫@個(gè)值,導(dǎo)致整個(gè)支付流程走不下去,在支付中,安裝了建行的app,建行支付頁(yè)面的時(shí)候,也跳轉(zhuǎn)到了建行APP中的支付頁(yè)面,當(dāng)我點(diǎn)擊右上角返回按鈕或者支付完成后,點(diǎn)擊完成時(shí),因?yàn)橄聢D中的url schemes沒(méi)有配置好,導(dǎo)致點(diǎn)擊建行相關(guān)app回調(diào)按鈕時(shí),建行的app直接掛了。
image
image

image

上面兩張圖是建行給的文檔信息,后來(lái)進(jìn)過(guò)反復(fù)試驗(yàn),發(fā)現(xiàn)第三張圖中的schemes,是第一張或者第二張圖中 該字段 THIRDAPPINFO 所對(duì)應(yīng)的值,后來(lái)將改值填入,需要說(shuō)明的是,這個(gè)值生成有有規(guī)則的,具體需要和后端人員商討。這個(gè)值真的很重要。

發(fā)起支付

1.在發(fā)起支付時(shí),應(yīng)該需要和后端調(diào)用接口,然后獲取去相關(guān)的url或者參數(shù).

- (void)loadBBCWithUrlStr:(NSString*)urlStr {

if (urlStr.length > 0) {
    dispatch_async(dispatch_get_main_queue(), ^{
        NSURLRequest *webRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]
                                                    cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                                timeoutInterval:30];
        [self.webView loadRequest:webRequest];
    });
}

}

2.處理WebView回調(diào)

#pragma mark - UIWebViewDelegate
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

self.currentLoadUrl = request.URL.absoluteString;

NSString *currentLoadUrl = [self.currentLoadUrl uppercaseString];

NSURLComponents *components = [[NSURLComponents alloc] initWithString:self.currentLoadUrl];
NSArray<NSURLQueryItem *> *items = components.queryItems;

__block BOOL paySuccess = NO;
[items enumerateObjectsUsingBlock:^(NSURLQueryItem * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    if ([obj.name isEqualToString:@"SUCCESS"]) {
        if ([obj.value isEqualToString:@"Y"]) {
            paySuccess = YES;
            *stop = YES;
        }
    }
}];

if (paySuccess) { //建行分期成功攔截
    if (self.successBlock) {
        self.successBlock(nil);
    }
    [self.navigationController popViewControllerAnimated:YES];
    return YES;
}

NSString *urlScheme = [[request URL] scheme];
if ([urlScheme isEqualToString:@"mbspay"]) {
    if ([[UIApplication sharedApplication] canOpenURL:[request URL]]) {
        if (@available(iOS 10.0, *)) {
            [[UIApplication sharedApplication] openURL:request.URL options:@{} completionHandler:nil];
        } else {
            [[UIApplication sharedApplication] openURL:request.URL];
        }
        return NO;
    }
}
return YES;

}

后記

理論上建行app取消支付和支付完成后,還是需要在AppDelegate中做相應(yīng)的處理,才能知道支付結(jié)果

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 標(biāo)題如此拗口, 我也是無(wú)可奈何?? 本文會(huì)涉及到兩個(gè)方面: H5 支付時(shí)調(diào)起微信或支付寶 App;調(diào)起微信或支付寶 ...
    biubiu15閱讀 31,541評(píng)論 8 42
  • 近期公司項(xiàng)目中的App使用WKWebView封裝作為一個(gè)殼,加載web的網(wǎng)頁(yè),其中的支付使用的是H5支付,在APP...
    Liebling_zn閱讀 8,329評(píng)論 5 4
  • iOS支付 iOS支付分為兩類(lèi),第三方支付和應(yīng)用內(nèi)支付(內(nèi)購(gòu))。 第三方支付包括:支付寶支付、微信支付、銀聯(lián)支付、...
    請(qǐng)輸入賬號(hào)名閱讀 6,487評(píng)論 3 22
  • 1、App支付簡(jiǎn)介 買(mǎi)家在手機(jī)、掌上電腦等無(wú)線設(shè)備的應(yīng)用程序內(nèi),可通過(guò)支付寶進(jìn)行付款購(gòu)買(mǎi)特定服務(wù)或商品,資金即時(shí)到...
    PZcoder閱讀 44,344評(píng)論 5 22
  • iOS支付 iOS支付分為兩類(lèi),第三方支付和應(yīng)用內(nèi)支付(內(nèi)購(gòu))。 第三方支付包括:支付寶支付、微信支付、銀聯(lián)支付、...
    sillen閱讀 1,464評(píng)論 0 1

友情鏈接更多精彩內(nèi)容