iOS开发程序员

iOS UIWebView web调支付宝客户端进行支付

2018-10-12  本文已影响14人  风规自远

#import<AlipaySDK/AlipaySDK.h>// 前面要集成支付宝SDK,

AlipaySDK:

/**

 *  从h5链接中获取订单串并支付接口(自版本15.4.0起,推荐使用该接口)

 *

 *  @param urlStr    拦截的 url string

 *

 *  @return YES为成功获取订单信息并发起支付流程;NO为无法获取订单信息,输入url是普通url

 */

- (BOOL)payInterceptorWithUrl:(NSString*)urlStr

                   fromScheme:(NSString*)schemeStr

                     callback:(CompletionBlock)completionBlock;

代码:

/**

 * web 请求

 */

- (void)requestUrl:(NSString*)url {

    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];

}

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {

    OMGLog(@"拦截url==%@", [request.URL absoluteString]);

    __weak PayViewController * wself = self;

    BOOL isIntercepted = [[AlipaySDK defaultService] payInterceptorWithUrl:[request.URL absoluteString] fromScheme:@"XX" callback:^(NSDictionary *result) {//XX表示你自己的APP的标志在scheme设置下

        // 处理支付结果

        OMGLog(@"处理支付结果==%@", result);

        // isProcessUrlPay 代表 支付宝已经处理该URL

        if([result[@"isProcessUrlPay"]boolValue]) {

            // returnUrl 代表 第三方App需要跳转的成功页URL

            NSString* urlStr = result[@"returnUrl"];

            OMGLog(@"%@",urlStr);

            [wselfrequestUrl:urlStr];

        }

    }];

    if(isIntercepted) {

        returnNO;

    }

    return YES;

}

上一篇下一篇

猜你喜欢

热点阅读